题:
我在foo.spec文件中放了什么,以便 RPM 在安装之前删除以前的 RPM?
描述:
我创建了一个规范文件,该文件为几个使用相同源并提供相同服务的包创建 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}
Run Code Online (Sandbox Code Playgroud)
当我安装第一个时,它安装正常。然后我删除第一个,然后安装第二个,也可以正常工作。
然后我安装第一个,然后立即安装第二个,它们都安装,一个在另一个上,但是,我希望在安装第二个之前将第二个删除。
示例会话:
# 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
Run Code Online (Sandbox Code Playgroud)
我在foo.spec文件中放了什么,以便 RPM 在安装之前删除以前的 RPM?
谢谢,
.戴夫。
mgo*_*ven 13
你想让这些包相互冲突,让 yum 知道它们不能同时安装。
%package one
Summary: Summary for foo-one
Group: %{group}
Obsoletes: %{name} <= %{version}
Provides: %{name} = %{version}
Conflicts: %{name}-two
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
21289 次 |
最近记录: |