题:
我把什么放在foo.spec文件,以便在安装之前,RPM将删除以前的RPM?
描述:
我创build了一个spec文件,为几个使用相同源并提供相同服务的软件包创buildrpm,每个软件包的configuration略有不同。 例如,他们每个人都提供相同的“能力”
下面是我的.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
我把什么放在foo.spec文件,以便在安装之前,RPM将删除以前的RPM?
谢谢,
.dave。
你想让这些软件包相互冲突 ,所以yum知道他们不能同时安装。
%package one Summary: Summary for foo-one Group: %{group} Obsoletes: %{name} <= %{version} Provides: %{name} = %{version} Conflicts: %{name}-two