在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 更新已安装包