저는 소프트웨어를 RPM으로 패키징하고 아키텍처(32비트 또는 64비트)별로 다른 패키지로 배포합니다.
내 32비트 패키지의 일부 라이브러리에는 64비트 시스템에서 실행할 수 없는 바이너리가 있습니다(다른 라이브러리가 설치되지 않은 경우).
나는 file
명령을 사용하여 감지 했습니다.통역사이러한 바이너리를 실행한 다음 필수 라이브러리를 패키지의 종속성으로 추가하는 데 필요합니다. 다른 필수 라이브러리가 최종 사용자 호스트에 설치된 64비트 버전과 충돌할 수 있으므로 이는 문제의 일부만 해결합니다.
그래서 일을 단순하게 유지하기 위해 64비트 시스템에서 32비트 패키지 설치를 허용하지 않도록 구성하는 방법이 있는지 궁금합니다 rpmbuild
(32비트 시스템이 64비트 패키지 설치를 허용하지 않는 것처럼). .
옵션 이 있나요 rpmbuild
아니면.투기사용 가능한 값?
답변1
이에 대한 해결 방법이 필요하지 않습니다. 기본적으로 rpm은 구축 중인 아키텍처에 맞게 구축됩니다. 64비트 시스템에서 빌드하는 경우 빌드된 rpm의 이름은 package-version-release로 지정됩니다.x86_64따라서 .rpm은 64비트 시스템에만 설치할 수 있습니다.
또한 rpmbuild는 대부분의 종속성을 자동으로 결정합니다(사양 파일에서 Autoreqprov=no를 사용하지 않는 한). 따라서 32비트 애플리케이션을 패키징할 때 rpmbuild는 일반적으로 올바른 요구 사항(예: libc 32비트 등)을 생성해야 합니다.
32비트 애플리케이션을 구축하고 64비트 시스템에서 패키징할 때 수행할 수 있는 유일한 작업은 생성된 패키지를 강제로 실행하는 것입니다.i586사양 파일에서 사용할 수 있는 스키마
BuildArch: i586