2015-01-06 5 views
1

rpm 사양을 만들고 사용자가 64 비트 OS에 설치하려고 할 때 오류를 추가하고 싶습니다. compat_libs를 설치할 필요없이 기본 플랫폼에서 응용 프로그램을 실행하려면이 작업을 명시 적으로 거부하고 싶습니다.64 비트 OS에서 32 비트 rpm을 설치할 수 없도록하는 Rpm spec 옵션

% pre 섹션에서 버전 검사를 추가하려고했지만 Requires가 실행되기 전에 종속성 오류가 발생합니다. 내 코드가 실행되지 않는 것 같습니다.

Provides: MyRpm 
Requires: pciutils, binutils, coreutils, perl 

%pre 

uname -p | grep -q "x86_64" 
if [ "$?" -eq "0" ] ; then 
    echo "You are trying to install a 32 bit rpm on a 64 bit distro" 
    exit 
fi 
나는 뭔가를 놓치고 있는지 알고 싶습니다

, 또는 단계가 필요하기 전에 bash는 코드를 실행하고 저를 사용자에게 출력 메시지를 사용자 정의 할 수 있습니다 특별한 RPM의 지시가있는 경우.

+0

'Requires : pciutils.x86_64'를 사용해 보셨습니까? Etan Reisner의 답변처럼, 나는 당신이 이걸 어디로 가는지 확신 할 수 없습니다. –

답변

2

"64 비트 OS에서 [your] 32 비트 rpm 설치를 허용하지 않는"오류가 있습니까? 또는 더 친숙한 오류 메시지가 필요한 문제입니까?

RPM은 자동으로 라이브러리 요구 사항 등을 선택합니다. 자동으로 귀하의 %pre이 호출되기 전에 확인됩니다. (트랜잭션이 요구 사항에 대해 실패 할 경우 %pre을 실행할 이유가 없습니다.) 귀하가이를 피할 수 있다고 생각하지 않습니다.

주의를 기울이지 않는 사용자에게 제공 할 수있는 보호 기능은 매우 다양합니다. 아마도 RPM 자체는 파일 이름에 아키텍처 태그를 가지고 있습니다 (표준과 같습니다). 다운로드 사이트에서 다른 RPM이 무엇인지 명확히 할 수 있습니다.

올바른 32 비트 라이브러리가있는 64 비트 OS에서 응용 프로그램이 실행되는 경우 응용 프로그램이 정상적으로 작동하지 않거나 실행 속도가 느린 것처럼 어떤 이유로 든), 사용자가 사용 가능한 OS에서 실행할 수있는 기능을 제한하는 것은 권장하지 않습니다.

+0

맞아요, 내 사용자에게 친숙한 메시지를 표시하고 싶습니다. 성능상의 이유로 비 고유 플랫폼에서의 설치를 항상 금지하고 싶습니다. "Autoreqprov no"옵션에 대해 알고 있지만 자동 의존성 검사 만 비활성화합니다. Requires 목록에있는 항목은 계속 선택됩니다. – user852689

+0

Requires 라인에 대한 의존성은 아키텍처에 연결되어 있지 않아야한다고 생각합니다. (하지만 확신하려면/test를해야합니다). –