Linux 平台上的软件包管理(3)

软件包依赖性关系

由于开源的多态性,Linux 操作系统中的软件之间的依赖性关系处理一直令用户感到头疼。如果 package_a 依赖于 package_b,那么在一个没有安装 package_b 的系统中,package_a 是不被系统推荐安装的,强制安装很可能会导致软件无法正常工作。基于以上 package_a 和 package_b 的关系,在一个干净的系统中 ( 未安装 package_a 或 package_b),欲安装 package_a,错误通常会表现为:

RHEL 5.2
    
# rpm -ivh package_a.rpm

error: Failed dependencies:
pacakge_b = version info is needed by package_a


Ubuntu 9.04
    
$ sudo dpkg -i package_a.deb

dpkg: regarding package_a.deb containing package, pre-dependency problm:
  package_a pre-depends on package_b (version info)
 dpkg: error processing package_a.deb (--install):
  pre-dependency problem - not installing package_a
 Errors were encountered while processing:
  package_a.deb


查询软件包依赖关系

查询 RPM 包的依赖关系,使用 rpm -qRp:
    
# rpm -qRp package_a.rpm

package_b = version_info

 package_b >= version_info

 package_b <= version_info

表明 package_a.rpm 依赖于 version_info 版的 package_b,或者任何高于并包括 version_info 版的 package_b,亦或低于或包括 version_info 版的 package_b 。所以 package_b.rpm 必须在 package_a 之前安装于系统中。

查询 DEB 包的依赖关系,可解读 dpkg --info 结果中的 Pre-Depends 字段:
$ dpkg --info package_a.deb

Pre-depends: package_b (= version_info)
 Depends: package_b (= version_info)

 Pre-depends: package_b (>= version_info)
 Depends: package_b (>= version_info)

 Pre-depends: package_b (<= version_info)
 Depends: package_b (<= version_info)

表明 package_a.deb 依赖于 version_info 版的 package_b 或者任何高于并包括 version_info 版的 package_b 亦或低于或包括 version_info 版的 package_b. 所以 package_b.deb 必须在 package_a 之前安装于系统中。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/27962.html