首页 > 代码库 > Linux学习笔记十:软件包管理

Linux学习笔记十:软件包管理

在Linux的众多版本中,可以大致分成两个系列,分别是:RedHat系Linux,Debian系Linux。在这两种不同系的Linux中,软件包的管理也是有着一定的区别,但他们的原理都大致相同。这篇笔记将以RedHat系Linux为重点讲解其软件包的管理,并简单介绍Debian系Linux软件包的管理。其大致的结构如下:

· RedHat系Linux软件包管理

  - 1. 二进制包管理(基于rpm)

  - 2. 二进制包管理(基于yum)

  - 3. 源代码包管理

  - 4. 脚本安装

· Debian系Linux软件包管理

  - 5. APT包管理 

 

1、二进制包管理(基于rpm、yum包管理工具)

rpm、yum是RedHat系列Linux下最常用的二进制包管理工具。yum与rpm的不同之处在于,yum可以解决安装二进制包时的依赖问题以及软件的升级问题。

- 卸载

格式:rpm -e [参数] [软件名]

范例:#rpm -e sudo  卸载名为sudo的软件

注:“--nodeps” 参数可以强行卸载该软件,而不检查其他软件与它的依赖关系。

- 安装

格式:rpm [参数] [软件文件名]

参数:-i 表示安装(必须)  -v 表示显示安装的详细信息(可选)  -h 显示安装进度(可选)

范例:#rpm -ivh sudo-1.7.2p1-5.e15.i386.rpm

此外,还有其他参数可选:

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

范例:#rpm -ivh --excludedocs sudo-1.7.2p1-5.e15.i386.rpm 

--prefix path 将软件包安装到path指定的路径下

范例:#rpm -ivh --prefix=/usr/local/sudo sudo-1.7.2p1-5.e15.i386.rpm 将sudo软件安装到/usr/local/sudo目录下

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

范例:#rpm -ivh --test sudo-1.7.2p1-5.e15.i386.rpm 测试安装sudo软件

--replacepkgs 当软件包已被安装时,覆盖安装该软件包。

范例:#rpm -ivh --replacepkgs sudo-1.7.2p1-5.e15.i386.rpm 覆盖安装sudo软件

--replacefiles

要安装的软件包中有一个文件已在安装其它软件包时安装,会出现文件冲突错误,使用这个参数可以让rpm忽略该错误

范例:#rpm -ivh --replacefiles sudo-1.7.2p1-5.e15.i386.rpm 忽略文件冲突错误

--nodeps 忽略未解决的依赖关系

范例:#rpm -ivh --nodeps sudo-1.7.2p1-5.e15.i386.rpm

- 查询是否安装了某个软件

格式:rpm -q [软件名称]

范例:rpm -q sudo 查询是否安装了sudo这个软件

- 查询素有已安装的软件包

格式:rpm -qa  (a 表示 all)

范例:rpm -qa 

可以与grep连用,查询所有已安装软件中有某个关键字的软件,如:

rpm -qa | grep samba 查询已安装的所有软件包中有关键字samba的。

- 升级软件包

范例:#rpm -Uvh sudo-1.7.2p1-5.e15.i386.rpm

其中-U表示升级软件包(必须的参数)  -v 表示显示安装的详细信息(可选)  -h 显示安装进度(可选)

- rpm包查询

选项:-a 查询所有已安装的软件包

     -f 查询文件所属软件包

   -p 查询软件包

     -i 显示软件包信息

     -l 显示软件包中的文件列表

     -d 显示被批注为文档的文件列表

     -c 显示被批注为配置文件的文件列表

常用组合:

rpm -qf  查询文件隶书的软件包(father)

rpm -qi 或 rpm -qip  查询软件包信息(该软件包未安装。查询未安装软件的信息要加上p参数,下同)(info)

rpm -ql 或 rpm -qlp  查询软件包安装文件(list)

rpm -qd 或 rpm -qdp 查询软件包帮助文档(document)

rpm -qc 或 rpm -qcp 查询软件包配置文件(config)

范例:

#rpm -qf /etc/services 查询services文件隶书的软件包

#rpm -qi samba 查询samba软件包的信息

#rpm -ql sudo 查询sudo软件包安装了多少文件

#rpm -qd vsftpd 查询vsftpd软件帮助文档的位置

#rpm -qc sudo 查询sudo软件配置文件的位置

- 软件包校验

格式:rpm -V [软件名称]

范例:#rpm -V sudo 查询sudo软件的安装文件是否被更改过

输出:S.5......T c /etc/sudoers

输出字符串的含义如下:

5  文件的md5校验值(内容改变)

S  文件大小     L  链接文件     T 文件的创建或修改时间

D 设备文件     U 文件的用户   G 文件的用户组     M 文件的权限

上面范例的输出字符串表示:文件大小被改变,文件内容也被改变,并且文件的创建或修改时间被改变。

- 软件包文件提取

范例:解压所有文件到当前目录

#rpm2cpio initscripts-8.45.30-2.e15.centos.i386.rpm | cpio -idv

解压指定文件到当前目录下的etc/inittab目录下

#rpm2cpio initscripts-8.45.30-2.e15.centos.i386.rpm | cpio -idv ./etc/inittab

其中 v 表示显示详细信息,d 表示解压缩时保留目录结构,i 表示解压缩

2、二进制包管理(基于yum)

- 安装 yum install 

范例:yum install sudo 安装sudo软件(自动从互联网下载,并解决依赖关系)

- 检测升级 yum check-update

范例:yum check-update sudo 

- 升级 yum update

范例:yum update sudo 升级sudo软件

- 查询软件包信息 yum list

范例:yum list 查询yum源上所有软件包 

- 软件包信息 yum info

范例:yum info sudo 查询sudo的软件包信息

- 卸载 yum remove 

范例:yum remove sudo 删除sudo软件包

3、源代码包管理

下面以proftd源代码包的安装为例,说明源代码包的安装步骤:

#tar -xzvf proftpd-1.3.3d.tar.gz  //解压缩包#cd proftpd-1.3.3d#.configure --prefix=/usr/local/proftd //配置信息,prefix参数指定源代码包安装位置#make        //编译#make install  //安装

其中配置环节是让软件去收集系统的信息,以便后面进行编译操作。

4、脚本安装

脚本安装就是软件编写者写好一个shell脚本或者java脚本,你只需要输入一些简单的信息便可直接安装。这种安装方式方便简单,类似于Wins下的安装方式。

下面以webmin的安装为例讲解脚本安装的步骤:

#tar -xzvf webmin-1.530.tar.gz  //解压缩#cd webmin-1.530#vi README //通过查看说明文件,可以查看安装的脚本是哪个(或者是INSTALL帮助文件)#./setup.sh  //执行安装脚本(通过README帮助文件查找得知)

5、APT包管理方式

APT包管理方式是Debian系Linux系列的二进制包管理方式。

其命令与arp包管理方式差不多,只不过是rpm前缀换成了apt-cache而已。

APT包管理方式的命令如下:

apt-cache search   搜索软件包

apt-cache show     软件包信息

apt-get install   安装(-f 参数可以强制安装)

apt-get reinstall 覆盖安装(-f 参数可以强制重新安装)

apt-get remove 删除

apt-get autoremove 自动删除(MARK  --purge)

apt-get update 更新软件源

apt-get upgrade 更新已安装包

 

Linux学习笔记十:软件包管理