머리말
RPM을 구축한다는 것은 소스에서 컴파일한다는 의미가 아닙니다. 순전히 tar
소스 코드나 바이너리와 함께 "zip" 파일을 RPM으로 다시 패키징하는 것을 의미합니다.
noarch
나는 한동안 소스에서 RPM을 RPM으로 구축해 왔습니다 . 최근에 바이너리가 포함된 RPM을 구축해야 했는데, 이로 인해 몇 가지 우려가 생겼습니다.
arch
noarch
RPM과 RPM 사이의 요소를 결정하는 모범 사례 가 있습니까 ?특히 바이너리에서 RPM을 구축하는 경우. RPM을 설치할 때 컴파일 없이 파일만 추출하는 순수한 소스 코드에는noarch
허용된다는 것을 알고 있지만 위에서 언급한 것처럼 바이너리 패키징에 대해 몇 가지 질문이 있습니다.arch
RPM은 다른 운영 체제 버전과 호환 됩니까 ?(이것은 위 서문의 맥락에 있습니다.) 좀 더 자세히 설명하자면arch
RedHat 6에서 RPM을 구축한 다음 RedHat 5에 설치할 수 있습니까? 아니면 그 반대로도 가능합니까?
답변1
실제로 소스에서 빌드하거나 기존 아카이브를 패키지하는 것은 중요하지 않습니다.
noarch
RPM은 아키텍처 중립적으로 설계되었습니다. 즉, (네이티브) 바이너리를 포함해서는 안 됩니다.
패키지가 해석된 스크립트(Bash, Python 등), 문서, 헤더, 미디어 파일 등 또는 심지어 컴파일된 Java 클래스로 구성된 경우 다음을 수행할 수 있습니다.노치. 동일한 패키지는 특정 아키텍처용으로 특별히 제작된 코드를 포함하지 않으므로 모든 하드웨어 아키텍처에서 작동합니다.
반면에 패키지에 네이티브 기계 코드(예: C, C++, Pascal 등으로 작성된 프로그램)로 컴파일된 바이너리가 포함되어 있는 경우 포함된 내용에 관계없이 아키텍처에 바인딩되어야 합니다. 프로그램은 다음과 같이 컴파일됩니다.x86_64실행할 수 없습니다개인용 컴퓨터예를 들어 호스트 운영 체제입니다.
다양한 운영 체제 버전과의 호환성은 종속성에 따라 달라지며 쉽게 일반화할 수 없습니다. 예를 들어, 패키지가 특정 라이브러리의 최소 버전에 의존하는 경우 해당 라이브러리의 이전 버전이 있는 시스템(또는 그러한 라이브러리가 전혀 없는 시스템)에서 작동한다는 보장은 분명히 없습니다. 종속성이 없거나 매우 일반적인 종속성이 있으면 작동할 수 있습니다.
또한 엄밀히 말하면 이는 두 가지 모두에 적용됩니다.아치그리고노치가방.