关于Linux / Redhat源rpm的困惑

时间:2015-04-14 19:20:55

标签: linux redhat yum

我在Redhat Enterprise 7.0实例上安装了以下2个软件包

bind-license-9.9.4-14.el7_0.1.noarch
bind-libs-lite-9.9.4-14.el7_0.1.x86_64

" repoquery -i"命令告诉我这些包的源rpm是bind。

repoquery -i bind-license-9.9.4-14.el7_0.1.noarch

Name        : bind-license
Version     : 9.9.4
Release     : 14.el7_0.1
Architecture: noarch
Size        : 26019
Packager    : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla>
Group       : Applications/System
URL         : http://www.isc.org/products/BIND/
Repository  : rhel-7-server-rpms
Summary     : License of the BIND DNS suite
Source      : **bind-9.9.4-14.el7_0.1.src.rpm**
Description :
Contains license of the BIND DNS suite.

同样,如果我使用yum下载器下载上述2个包的源rpms,则会下载绑定源rpm( bind-9.9.4-14.el7_0.1.src.rpm )。

但是,如果我们尝试更新绑定,这就是我得到的

yum update bind
Loaded plugins: product-id, subscription-manager
Package(s) bind available, but not installed.
**No packages marked for update**

我的问题是为什么 repoquery yumdownloader 报告 bind-9.9.4-14.el7_0.1.src.rpm 作为源转速。如果bind是正确的源rpm,那么为什么&#34; yum update bind&#34;说系统上没有安装绑定?

2 个答案:

答案 0 :(得分:0)

source-RPM从相同的源构建多个包。 spec-file有这些指令(带有插入内容),声明要构建的包(除了默认的bind包):

%package pkcs11
%package sdb
%package libs-lite
%package libs
%package license
%package utils
%package devel
%package lite-devel
%package chroot
%package sdb-chroot

也就是说,“bind-”为生成的包中的%package指令中使用的每个相应名称添加前缀。

规范文件也有条件逻辑,可以通过脚本打开;例如,bind-sdb-chroot包使用SDB符号位于条件块内。在spec文件中,驱动该逻辑的符号位于标题中:

%{?!SDB:       %global SDB       1}
%{?!test:      %global test      0}
%{?!bind_uid:  %global bind_uid  25}
%{?!bind_gid:  %global bind_gid  25}
%{?!GSSTSIG:   %global GSSTSIG   1}
%if 0%{?rhel}
%{?!PKCS11:    %global PKCS11    0}
%else
%{?!PKCS11:    %global PKCS11    1}
%endif
%{?!DEVEL:     %global DEVEL     1}
%global        bind_dir          /var/named
%global        chroot_prefix     %{bind_dir}/chroot
%if %{SDB}
%global        chroot_sdb_prefix %{bind_dir}/chroot_sdb
%endif

因此,如果您要下载source-RPM并构建它,您可以获得部分或全部软件包,具体取决于您提供的命令行选项。

答案 1 :(得分:0)

  

我的问题是为什么repoquery和yumdownloader报告bind-9.9.4-14.el7_0.1.src.rpm作为源rpm。如果bind是正确的源rpm,那么为什么“yum update bind”说系统上没有安装bind?

混淆是因为.src.rom软件包永远不会安装在系统上。只有二​​进制.i686.rom或.x86_64.rpm包。正如其他人所说,一个源RPM可以构建多个不同名称的二进制包。