RPM을 구축할 때 언제 Arch와 Noarch를 사용해야 합니까?

RPM을 구축할 때 언제 Arch와 Noarch를 사용해야 합니까?

머리말

RPM을 구축한다는 것은 소스에서 컴파일한다는 의미가 아닙니다. 순전히 tar소스 코드나 바이너리와 함께 "zip" 파일을 RPM으로 다시 패키징하는 것을 의미합니다.

noarch나는 한동안 소스에서 RPM을 RPM으로 구축해 왔습니다 . 최근에 바이너리가 포함된 RPM을 구축해야 했는데, 이로 인해 몇 가지 우려가 생겼습니다.

  1. archnoarchRPM과 RPM 사이의 요소를 결정하는 모범 사례 가 있습니까 ?특히 바이너리에서 RPM을 구축하는 경우. RPM을 설치할 때 컴파일 없이 파일만 추출하는 순수한 소스 코드에는 noarch허용된다는 것을 알고 있지만 위에서 언급한 것처럼 바이너리 패키징에 대해 몇 가지 질문이 있습니다.
  2. archRPM은 다른 운영 체제 버전과 호환 됩니까 ?(이것은 위 서문의 맥락에 있습니다.) 좀 더 자세히 설명하자면 archRedHat 6에서 RPM을 구축한 다음 RedHat 5에 설치할 수 있습니까? 아니면 그 반대로도 가능합니까?

답변1

실제로 소스에서 빌드하거나 기존 아카이브를 패키지하는 것은 중요하지 않습니다.

noarchRPM은 아키텍처 중립적으로 설계되었습니다. 즉, (네이티브) 바이너리를 포함해서는 안 됩니다.
패키지가 해석된 스크립트(Bash, Python 등), 문서, 헤더, 미디어 파일 등 또는 심지어 컴파일된 Java 클래스로 구성된 경우 다음을 수행할 수 있습니다.노치. 동일한 패키지는 특정 아키텍처용으로 특별히 제작된 코드를 포함하지 않으므로 모든 하드웨어 아키텍처에서 작동합니다.

반면에 패키지에 네이티브 기계 코드(예: C, C++, Pascal 등으로 작성된 프로그램)로 컴파일된 바이너리가 포함되어 있는 경우 포함된 내용에 관계없이 아키텍처에 바인딩되어야 합니다. 프로그램은 다음과 같이 컴파일됩니다.x86_64실행할 수 없습니다개인용 컴퓨터예를 들어 호스트 운영 체제입니다.

다양한 운영 체제 버전과의 호환성은 종속성에 따라 달라지며 쉽게 일반화할 수 없습니다. 예를 들어, 패키지가 특정 라이브러리의 최소 버전에 의존하는 경우 해당 라이브러리의 이전 버전이 있는 시스템(또는 그러한 라이브러리가 전혀 없는 시스템)에서 작동한다는 보장은 분명히 없습니다. 종속성이 없거나 매우 일반적인 종속성이 있으면 작동할 수 있습니다.
또한 엄밀히 말하면 이는 두 가지 모두에 적용됩니다.아치그리고노치가방.

관련 정보