RPM 사양 이전 RPM이 제거되도록 패키지에 지정하는 방법


9

질문:

설치하기 전에 RPM이 이전 RPM을 제거 할 수 있도록 foo.spec 파일 에 무엇을 넣 습니까?

기술:

동일한 소스를 사용하고 각각 약간 씩 다른 구성으로 동일한 서비스를 제공하는 몇 가지 패키지에 대해 rpm을 작성하는 스펙 파일을 작성했습니다. 예를 들어 이들은 각각 동일한 "기능"을 제공합니다

.spec 파일이 다음과 같은 필수 요소의 예입니다 .

%define version     1234
%define name        foo
%define release     1
%define pkgname     %{name}-%{version}-%{release}

Name:               %{name}
Version:            %{version}
Release:            %{release}
Provides:           %{name}

%package one
Summary:            Summary for foo-one
Group:              %{group}
Obsoletes:          %{name} <= %{version}
Provides:           %{name} = %{version}

%description one
Blah blah blah

%package two
Summary:            Summary for foo-two
Group:              %{group}
Obsoletes:          %{name} <= %{version}
Provides:           %{name} = %{version}

%description two
Blah blah blah

# %prep, %install, %build and %clean are pretty simple 
# and omitted here for brevity sake

%files one
%defattr(-,root,root,-)
%{_prefix}/%{pkgname}

%files two
%defattr(-,root,root,-)
%{_prefix}/%{pkgname}

첫 번째를 설치하면 정상적으로 설치됩니다. 그런 다음 첫 번째 것을 제거한 다음 두 번째 것을 설치하면 잘 작동합니다.

그런 다음 첫 번째 것을 설치 한 다음 두 번째 것을 즉시 설치하고 두 개를 하나씩 설치하지만 두 번째 것을 설치하기 전에 두 번째 것이 제거 될 것으로 기대했습니다.

세션 예 :

# rpmbuild foo and copy rpms to yum repo

$ yum install foo-one
...
$ yum list installed|grep foo
foo-one.noarch           1234-1                @myrepo

$ yum install foo-two
...[Should say that it is removing foo-one, but does not]...

$ yum list installed|grep foo
foo-one.noarch           1234-1                @myrepo
foo-two.noarch           1234-1                @myrepo

$ rpm -q --provides foo-one
foo = 1234
foo-one = 1234-1

$ rpm -q --provides foo-two
foo = 1234
foo-two = 1234-1

설치하기 전에 RPM이 이전 RPM을 제거 할 수 있도록 foo.spec 파일 에 무엇을 넣 습니까?

감사합니다,

.dave.


1
어둠 속에서 촬영 : 쓸데없는 것이 아닌가?
Charles

패키지와 그 결과 배포 (바이너리, 구성 또는 둘 다)의 차이점은 무엇입니까?
nearora 2016

무엇이 다른가요? PHP 앱, 구성 및 PHP 코드를 패키징하고 있기 때문에.
fatehks 2016 년

답변:


10

yum이 패키지를 동시에 설치할 수 없음을 알 수 있도록 해당 패키지를 서로 충돌 시키려고합니다.

%package one
Summary:            Summary for foo-one
Group:              %{group}
Obsoletes:          %{name} <= %{version}
Provides:           %{name} = %{version}
Conflicts:          %{name}-two

"Conflicts :"를 추가했는데 버전이 같으면 설치가 적어도 허용되지 않으므로 사용하고 있습니다. 감사.
fatehks 2016 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.