RPM规范如何在软件包中指定,以便删除以前的RPM


9

题:

我应在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}

当我安装第一个时,它会安装确定。然后,我删除第一个,然后安装第二个,也可以。

然后,我安装第一个,然后立即安装第二个,然后两个都安装,但是我期望在安装第二个之前将其移除。

会话示例:

# 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。


1
在黑暗中拍摄:这不是过时的吗?
查尔斯

软件包及其部署之间有什么区别-二进制文件,配置或两者都有?
Nearora 2012年

有什么不同?由于我要打包一个PHP应用程序,配置和php代码。
fatehks 2012年

Answers:


10

您想使这些软件包相互冲突,以便yum知道它们不能同时安装。

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

我添加了“冲突:”,并且如果版本相同,则至少不允许安装,所以这就是我正在使用的内容。谢谢。
fatehks 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.