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}

最初のものをインストールすると、okがインストールされます。次に、1つ目を削除し、2つ目をインストールします。これも問題なく動作します。

次に、1つ目をインストールし、すぐに2つ目をインストールします。どちらも順番にインストールされますが、2つ目をインストールする前に2つ目が削除されることを期待していました。

セッションの例:

# 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

何が違うの?PHPアプリ、構成、およびphpコードをパッケージ化しているためです。
fatehks

回答:


10

それらのパッケージを互いに競合させて、yumがそれらのパッケージを同時にインストールできないことを認識できるようにします。

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

「Conflicts:」を追加しましたが、バージョンが同じであれば、少なくともインストールが許可されなかったので、これを使用しています。ありがとう。
fatehks
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.