Linux 系统中应用软件的管理和使用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Linux 平台上的软件包管理
安装,升级和卸载应用软件是影响用户对操作系统评价的决定性因素之一。对于日渐流行的GNU/Linux 操作系统,拥有简洁强大的软件包管理机制功不可没。本文从基本的rpm/dpkg 命令行出发,以RHEL 和UBUNTU 为例,介绍典型Linux 系统中应用软件的管理和使用。
RPM/DPKG 两大阵营简介
在GNU/Linux( 以下简称Linux) 操作系统中,RPM 和DPKG 为最常见的两类软件包管理工具,他们分别应用于基于RPM 软件包的Linux 发行版本和DEB 软件包的Linux 发行版本。软件包管理工具的作用是提供在操作系统中安装,升级,卸载需要的软件的方法,并提供对系统中所有软件状态信息的查询。
RPM 全称为Redhat Package Manager,最早由Red Hat 公司制定实施,随后被GNU 开源操作系统接受并成为很多Linux 系统(RHEL) 的既定软件标准。与RPM 进行竞争的是基于Debian 操作系统(UBUNTU) 的DEB 软件包管理工具-DPKG,全称为Debian Package,功能方面与RPM 相似。二者之具体比较不在本文范围之内。
RPM 包的安装/ 升级/ 查询/ 卸载
一个RPM 包包含了已压缩的软件文件集以及该软件的内容信息(在头文件中保存),通常表现为以 .rpm 扩展名结尾的文件,例如package.rpm 。对其操作,需要使用rpm 命令。下面介绍rpm 工具的参数和使用方法,并以IBM Lotus Notes 在RHEL 5.2 安装为例做具体说明。
RPM 命令常用参数
RPM 的常规使用方法为rpm -? package.rpm,其中-? 为操作参数( 更多信息,请查阅帮助$man rpm):
∙-q 在系统中查询软件或查询指定rpm 包的内容信息
∙-i 在系统中安装软件
∙-U 在系统中升级软件
∙-e 在系统中卸载软件
∙-h 用#(hash) 符显示rpm 安装过程
∙-v 详述安装过程
∙-p 表明对RPM 包进行查询,通常和其它参数同时使用,如:
∙-qlp 查询某个RPM 包中的所有文件列表
∙-qip 查询某个RPM 包的内容信息
RPM 命令参数使用方法
以上参数有些需要组合使用,比如说rpm -h package.rpm 是没有意义的,但rpm -ih package.rpm 即表示安装package 并用# 符显示安装进度。
安装RPM 包
升级RPM 包命令
卸载RPM 包命令
查询RPM 包中包含的文件列表命令
查询RPM 包中包含的文件列表命令
查询RPM 包中包含的内容信息命令
查询系统中所有已安装RPM 包
DEB 包的安装/ 升级/ 查询/ 卸载
一个DEB 包包含了已压缩的软件文件集以及该软件的内容信息(在头文件中保存),通常表现为以 .deb 扩展名结尾的文件,例如package.deb 。对其操作,需要使用dpkg 命令。下面介绍dpkg 工具的参数和使用方法,并以IBM Lotus Notes 在UBUNTU 904 安装为例做具体说明。
DPKG 命令常用参数
DPKG 的常规使用方法为dpkg -? Package(.rpm), 其中-? 为安装参数( 更多信息,请查阅帮助$man rpm):
∙-l 在系统中查询软件内容信息
∙--info 在系统中查询软件或查询指定rpm 包的内容信息
∙-i 在系统中安装/ 升级软件
∙-r 在系统中卸载软件, 不删除配置文件
∙-P 在系统中卸载软件以及其配置文件
DPKG 命令参数使用方法
安装DEB 包命令
升级DEB 包命令
卸载DEB 包命令
查询DEB 包中包含的文件列表命令
查询DEB 包中包含的内容信息命令
查询系统中所有已安装DEB 包
软件包依赖性关系
由于开源的多态性,Linux 操作系统中的软件之间的依赖性关系处理一直令用户感到头疼。如果package_a 依赖于package_b,那么在一个没有安装package_b 的系统中,package_a 是不被系统推荐安装的,强制安装很可能会导致软件无法正常工作。基于以上package_a 和package_b 的关系,在一个干净的系统中( 未安装package_a 或package_b),欲安装package_a,错误通常会表现为:
RHEL 5.2
Ubuntu 904
查询软件包依赖关系
查询RPM 包的依赖关系,使用rpm -qRp:
表明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 字段:
表明package_a.deb 依赖于version_info 版的package_b 或者任何高于并包括version_info 版的package_b 亦或低于或包括version_info 版的package_b. 所以package_b.deb 必须在package_a 之前安装于系统中。
所以正确的安装方法如下节所示。
安装方法
对于package_a,正确的安装方法应该是:
嵌套的依赖关系
如上示例为最理想的依赖关系,实际应用中往往最令用户头疼的是package_a 依赖于package_b/c/d/e/f 等多个包, 而package_b/c/d/e/f 等包又依赖于package_b1,b2,b3/c1,c2/d1,d2/e1,e2/f1,f2 等等 ... ... 为保证软件的正常使用,必须找到所有依赖包以及子依赖包并且安装。过多的依赖关系大大降低了Linux 软件安装的用户友好性。所以针对此类问题,使用了更高级的包管理策略去解决- Yum/APT 。