![64비트 시스템에서 32비트 패키지 설치를 비활성화하도록 rpmbuild를 구성하는 방법은 무엇입니까?](https://linux55.com/image/148437/64%EB%B9%84%ED%8A%B8%20%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%97%90%EC%84%9C%2032%EB%B9%84%ED%8A%B8%20%ED%8C%A8%ED%82%A4%EC%A7%80%20%EC%84%A4%EC%B9%98%EB%A5%BC%20%EB%B9%84%ED%99%9C%EC%84%B1%ED%99%94%ED%95%98%EB%8F%84%EB%A1%9D%20rpmbuild%EB%A5%BC%20%EA%B5%AC%EC%84%B1%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F.png)
저는 소프트웨어를 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