rpm 스크립틀릿에서 제거할 버전을 얻는 방법은 무엇입니까?

rpm 스크립틀릿에서 제거할 버전을 얻는 방법은 무엇입니까?

다음과 같은 시나리오가 있습니다.

  1. 설치 후 사용자 지정 작업을 수행하는 패키지 버전 1을 설치했습니다(일부 파일을 특정 위치에 복사).
  2. 동일한 패키지의 버전 2를 설치했습니다.
  3. 버전 1을 제거하고 싶습니다. 정리를 하려면 복사된 파일을 정리하기 위해 제거 후 정확한 버전을 알아야 합니다.

rpm 스크립틀릿에서 버전 번호를 얻는 방법이 있습니까?

답변1

%파일의 관련 버전에서 스크립트를 호출합니다 rpm. 따라서 버전 1.0에서 1.1로 업그레이드하는 경우 사전/사후 설치 스크립트는 버전 1.1 rpms에서 실행되고 사전/사후 제거 스크립트는 버전 1.0에서 실행됩니다.

이렇게 하면 스크립트가 자체 버전을 올바르게 처리하기가 쉬워집니다.

예를 들어 다음은 SPEC 파일에서 발췌한 내용입니다.

%pre
echo Pre called with version %{version}-%{release}

%post
echo Post called with version %{version}-%{release}

%preun
echo Pre-un called with version %{version}-%{release}

%postun
echo Post-un called with version %{version}-%{release}

그것들은 매우 간단하며 이것을 보여주기 위한 것입니다. 이 값은 rpm을 빌드할 때 rpm에 포함됩니다.

예를 들어

% rpm -q --scripts -p sweh-test-1.0-0.x86_64.rpm 
preinstall scriptlet (using /bin/sh):
echo Pre called with version 1.0-0
postinstall scriptlet (using /bin/sh):
echo Post called with version 1.0-0
preuninstall scriptlet (using /bin/sh):
echo Pre-un called with version 1.0-0
postuninstall scriptlet (using /bin/sh):
echo Post-un called with version 1.0-0

이제 이 패키지의 버전 1.0.0을 설치해 보겠습니다.

% sudo rpm -i sweh-test-1.0-0.x86_64.rpm 
Pre called with version 1.0-0
Post called with version 1.0-0

지금까지는 매우 흥미로웠습니다. 설치 전/설치 후 스크립트를 실행합니다.

이제 버전 1.1로 업그레이드해 보겠습니다.

% sudo rpm -U sweh-test-1.1-0.x86_64.rpm
Pre called with version 1.1-0
Post called with version 1.1-0
Pre-un called with version 1.0-0
Post-un called with version 1.0-0

호출 순서와 버전 번호에 주의하세요. 설치 전/설치 후를 호출하면 버전 릴리스가 새 버전과 일치합니다. 그런 다음 이전 버전 번호를 사용하여 설치 전/제거 후를 호출합니다.

그래서 아이디어는 당신이 필요하지 않다는 것입니다파생된%매크로를 사용하여 이 정보를 rpm 사양 파일에 직접 포함할 수 있습니다 .

답변2

간접적. 설치하면 rpm 데이터베이스가 잠깁니다. 가장 쉬운 방법은 이 정보를 유지 관리하는 rpm에 텍스트 파일로 제공하는 것입니다.

관련 정보