第4章 Linux软件包管理

4.1 RPM和yum简介

4.1.1 RPM简介

RPM是一个开放的软件包管理系统,最初的全称是Red Hat Package Manager。Red Hat系统于1995年引入了RPM,如今RPM是Linux Standard Base(LSB)中采用的软件包管理系统。RPM工作于Red Hat Linux及其他Linux操作系统上,是Linux中公认的软件包管理标准。Red Hat软件公司不仅鼓励其他厂商了解RPM,还在自己的产品中使用它。RPM的发布基于GPL协议。RPM由RPM社区负责维护,可以登录RPM的官方站点查询最新的信息。使用RPM的最大好处在于它提供了快速安装,减少了编译安装侦错的困扰。对于用户来说,RPM提供的众多功能使维护系统操作起来比以往容易得多。安装、卸载和升级RPM软件包均只需一条命令即可完成,所有烦琐的细节问题无须用户费心。通过RPM维护一个所有已安装的软件包和文件的数据库,可以让用户进行功能强大的软件包查询和验证工作。在软件包升级过程中,RPM会对配置文件进行特别处理,因此绝对不会丢失以往的定制信息——这对于直接使用.tar.gz文件来说是不可能的。对于程序员来说,RPM可以将软件连同其源代码打包成源代码和二进制软件包供最终用户使用。RPM软件包安装过程十分简单,整个安装过程由一个主文件和可能的补丁程序组成。RPM在发布软件的新版本时,这种“原始”源代码、补丁程序和软件生成指令的清晰描述简化了软件包的维护工作。

4.1.2 yum简介

在 Linux 系统维护中令管理员感到很头疼的就是软件包之间的依赖性,往往是你要安装A软件,但是编译时告诉你在安装A软件之前需要B软件,而当你安装B软件时,又告诉你需要安装C库,好不容易安装好C库,发现安装版本不合适等。由于历史原因,RPM对软件之间的依赖关系没有内部定义,这造成在安装RPM时经常出现令人无法理解的软件依赖问题。其实开源社区早就尝试解决这个问题了,其针对不同的发行版推出了各自的工具,比如Yellow Dog的yum、Debian的APT(Advanced Packaging Tool)等。开发这些工具的目的都是解决安装RPM时的依赖性问题,而不是额外建立一套安装模式。这些工具也被开源软件爱好者逐渐移植到别的发行版上。目前yum是Red Hat和Fedora系统上默认安装的。yum是Yellow Dog Updater Modified的简称,起初是由Yellow Dog发行版的开发者TerraSoft用Python语言写成的,那时叫作yup,后经杜克大学的Linux@Duke开发团队进行改进,遂有此名。yum的宗旨是自动化升级、安装/移除RPM软件包、收集RPM软件包的相关信息、检查依赖性并自动提示用户解决。yum 的关键之处是要有可靠的资源库,它可以是HTTP或FTP站点,也可以是本地软件池,但必须是包含RPM的标题。标题包含了RPM软件包的各种信息,如功能、提供的文件、依赖性等。yum正是由于收集了这些标题并对其进行了分析,才能自动完成余下的任务。

yum具有如下特点:能自动解决包的依赖性问题;能更方便地添加、删除、更新RPM软件包;便于管理大量系统的更新问题;可以同时配置多个资源库,可以简洁地配置文件(/etc/yum.conf);可以保持与 RPM 数据库的一致性;有一个比较详细的 log,可以查看何时升级、安装了什么软件包等;使用方便;是Red Hat Enterprise Linux、CentOS、Fedora操作系统自带的工具,因此能使用官方的软件源,完成官方发布的各种升级;对于第三方软件源有很好的支持,支持大多数APT的资源库和第三方软件源,如freshrpms、fedora.us、livna、dag等。