우리는 32 비트 및 64 비트 플랫폼 용으로 우리 제품의 RPM을 빌드합니다. RPM 사양의 제품의 이름은 우리는 64 비트 rpm을 구축하기 위해 32 비트 RPM 및 --target x86_64
을 구축하는 명령 줄을 rpmbuild하는 --target i586
을 통과특정 아키텍처 용 rpm 업그레이드
Name: foo
과 같이 정의된다. 32bit 및 64bit 버전의 제품을 동시에 설치할 수 있도록 rpm arch를 제품의 설치 디렉토리에 인코딩합니다.
우리는 rpms를 잘 설치할 수 있습니다. 예 : foo
제품의 32 비트 및 64 비트 변종을 설치, 버전 4.1 :
rpm -i foo-4.1-i586.rpm
rpm -i foo-4.1-x86_64.rpm
그러나 우리는 버전에 설치된 제품의 4.2 32 비트 변형을 업그레이드하려고하면
rpm -U foo-4.2-i586.rpm
RMP는 32 비트 모두를 제거 설치된 제품의 64 비트 변형. 이것은 바람직하지 않습니다. 그래서 질문은 : 우리가 spec 파일이나 rpm 커맨드 라인을 조정해서 선택된 아키텍처에 대해서만 업그레이드 할 수있는 방법은 무엇입니까? 확실한 해결책은 다음과 같이 스펙 파일에 패키지 이름에서 아치를 인코딩하는 것입니다 :
Name: foo-%{_arch}
을하지만이 패키지 이름에 대한 일반적인 접근 방식처럼 보이지 않는다. 제발 조언.
rpmbuild는 내 바이너리 rpms에서 올바른 아키텍처를 설정합니다. 따라서 다른 도구로 전환해도 문제가 해결되지 않습니다. –