日期:2014-05-16  浏览次数:20780 次

Linux学习笔记——软件包管理

1.RPM包的管理

RPM软件包的一个例子:

sudo-1.7.2p1-5.el5.i386.rpm

这个rpm包名包括软件名sudo,版本号1.7.2p1,发行号5.el5,和硬件平台i386

(1)安装

挂载光盘:

mkdir  /mnt/cdrom

mount  /dev/cdrom  /mnt/cdrom

# rpm -ivh sudo-1.7.2p1-5.el5.i386.rpm
-ivh是可选的,一般来说i是必选的,v表示显示安装信息,h表示用#表示安装进度

在CentOs光盘中,包含了所有核心rpm的二进制包,可以使用 ls | grep sudo命令来查找sudo安装包

几个相关的命令:

rpm -q sudo          查询sudo工具是否已经安装
rpm -qa | grep sudo  查询与sudo相关的所有软件包
其它安装选项:

--excludedocs       不安装软件包中的文档文件

--prefix PATH         将软件包安转到有PATH指定的路径下

--test      只对安装进行测试,并不实际安装

rpm -ivh --excludedocs sudo       这里的--excludedocs有两个--
对于 --prefix PATH没有多少意义,因为大多数rpm安装包不允许指定安装路径

A.覆盖安装

当使用rpm -ivh安装软件提示如下信息时:

package sudo-1.7.2p1-5.el5.i386 is already installed

如果想覆盖安装该软件包,可以在命令行中使用 --replacekgs 选项

B.文件冲突

如果要安装的软件包有一个文件已经在安装其他软件包时安装,会出现以下错误信息:

#rpm -ivh sudo-1.7.2p1-5.el5.i386.rpm

conflicts with file from bark-3.2-11

sudo-1.7.2p1-5.el5.i386.rpm cannot be installed

如果想要RPM忽略该错误信息,可以使用 --replacefiles 命令行选项

C.未解决依赖关系

RPM软件包可能依赖于其它软件包,在安装了特定软件包之后才能安装该软件包。

#rpm -ivh sudo-1.7.2p1-5.el5.i386.rpm

failed dependencies:

sudo is needed by bark-3.2-11

你必须安装完所依赖的软件包,才能解决这个问题,强制安装可以使用 --nodeps 选项


(2)卸载

# rpm -e sudo

注:a.如果其它软件包有依赖关系,卸载时会产生提示信息,可使用-nodeps强行卸载

b.rpm -e sudo    这里写的是软件名sudo,而不是软件包名称


(3)升级

#rpm -Uvh sudo-1.7.2p1-5.el5.i386.rpm
注:U是大写的

下面给出几个RPM包管理的常用命令:

命令 功能
rpm -qf 查询文件隶属的软件包
rpm -qi、rpm -qip 查询软件包信息
rpm -ql、rpm -qlp 查询软件包安装文件
rpm -qd 查询软件包帮助文档
rpm -qc 查询软件包配置文件
a. rpm -qi是查看已经安装的软件的信息,而-qip是查询没有安装的软件包的信息;

b. rpm -qi 软件名      rpm -qip 软件包名

c. rpm -ql sudo       查看一个软件在系统安装了哪些文件

d. rpm -qlp 包名      查看一个将要安装的软件需要在哪些目录安装文件

e. rpm -qa | grep vim    查询已安装的软件包


2.YUM包管理

使用yum的好处在于,它不仅能自动解决软件包之间的依赖关系,还能很方便的进行软件升级。

下面是常见的yum管理命令:

命令 功能
yum install 安装
yum check-update 检测升级
yum update 升级
yum list 软件包查询
yum info 软件包信息
yum remove 卸载
yum -help、man yum 帮助