软件包管理器(RPM)及yum
RPM的全名是“RedHat Package Manager”,简称RPM,由此可以看出RPM是由RedHat公司开发的软件包管理工具。
RPM是以一种数据库记录的方式将所有需要的套件安装到linux主机的一套管理程序,它摆脱了用户在安装套件是的麻烦步骤,使程序的安装、卸载升级变得简单。它最大的优点就是将要安装的套件先编译并打包,通过包装好的套件中默认的数据库记录,记录这个套件在安装的时候需要的依赖关系,并在linux主机中查询依赖关系是否满足,若依赖关系满足则能安装,否则不给予安装。它本身为已经编译过的二进制文件,可以让用户免除重新编译的麻烦。
在学习RPM命令之前,先了解一下RPM包得格式:
软件包名称 - 软件的版本信息 - 发布次数 .适合的硬件平台 .扩展名
bind - 9.7.1 - 1 .el5.i586 .rpm
RPM包安装:
格式:rpm -i 软件包全名
rpm -i:安装
-h:以#显示进度,每个#表示2%的进度
-v:显示详细过程
-vv:显示更详细的过程
--nodeps:忽略依赖关系
--replacepkegs:重新安装,替换原有安装
--force:强行安装,可以实现重装或降级
--test:测试安装,不安装,测试软件是否可以再安装
rpm -i --test zsh-4.2.6-6.el5.i386.rpm
例:rpm -ivh zsh-4.2.6-6.el5.i386.rpm
RPM包查询:
格式:rpm -q 软件包名称
rpm -q:查询已安装的包
-a:查询已经安装的所有包
rpm -qa
-i:查询指定包得说明信息
rpm -qi zsh
-l:查询指定包安装后生成的文件路径
rpm -ql zsh
-c:查询指定软件包安装的配置文件
rpm -qc zsh
-d:查询指定包安装的帮助文件
rpm -qd zsh
-f /path/to/somefile:查询指定文件是由哪个rpm包安装生成的
rpm -qf /path/to/somefile
--scripts:查询指定包中包含的脚本
例:查询我们刚才安装的包zsh-4.2.6-6.el5.i386.rpm,命令:rpm -q zsh
如果某个rpm包尚未安装,我们需要查询其说明信息,以及安装以后会生成的文件。
格式:rpm -qp 软件包全名
rpm -qpi:软件包的信息
rpm -qpi zsh-4.2.6-6.el5.i386.rpm
rpm -qpf:软件包安装后生成的文件
rpm -qpf zsh-4.2.6-6.el5.i386.rpm
RPM包升级:
rpm -Uvh 软件包全名:如果装有老版本的,则升级;否则,则安装
rpm -Fvh 软件包全名:如果装有老版本的,则升级;否则,退出
--oldpackage:降级
例:rpm -Uvh --force zsh-4.2.6-6.el5.i386.rpm 强行升级并安装
RPM包卸载:
格式:rpm -e 软件包名称
例:卸载zsh-4.2.6-6.el5.i386.rpm,命令rpm -e zsh
我们卸载zsh包后在查询安装的包,可见no installed,卸载成功!
RPM包检验:
格式:rpm -V 软件包名称:检查安装包文件是否被改动过
如: rpm -V zsh
rpm -K 软件包全名:检验来源合法性,及软件包完整性
在用 rpm -K命令前我们必须先密钥文件,命令为:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release:导入密钥
例:我们检查zsh-4.2.6-6.el5.i386.rpm的合法性
dsa,gpg:验证来源合法性的,也即签名,可以使用--nodignature,略过次此项
sha1,md5:验证软件包完整性;可以使用--nodigest,略过此项
RPM重建数据库:
rpm --rebuilddb:重建数据库,重新创建数据库
rpm --initdb:初始化数据库,如果没有就创建,有就不用创建
由于RPM的历史原因,软件之间的依赖关系RPM并没有得出很好的定义,使其在安装软件时还会出现一些令人恼火的软件依赖关系,为了更好的解决软件之间的依赖关系,开源社区就推出了yum工具,使用户更好的解决依赖关系。Yum也是运行在redhat系统上的。
Yum可以实现自动化升级,安装、移除rpm包,收集rpm包的信息,yum的关键之处是它有个yum库,在库内有软件包得各种信息,功能,软件以及依赖关系,正是收集了这些数据并加以进行分析,才使yum能自动化的解决rpm不能解决的功能。
Yum库中的元文件:
primary.xml.gz
所有RPM包的列表
依赖关系
每个RPM安装生成的文件列表
filelists.xml.gz
当前仓库中所有RPM包的所有文件
other.xml.gz
额外信息,RPM包的修改日志
repomd.xml
记录的是上面三个文件的时间戳和校验和
Yum命令:
yum [options] [command]
yum clean:清除yum缓存
all:清除缓存的所有文件
headers:清除缓存中的rpm头文件
packages:清除缓存中rpm包文件
yum list:显示软件包列表
all:显示所有软件包列表
available:可用的,仓库中有,且尚未安装的
installed:已经安装的
updates:可用的升级
yum repolist:显示yum库
all:显示所有的库
disabled:显示禁用的库
enabled:默认显示
yum install 软件包名称:安装软件包
yum update 软件包名称:升级
Update_to:升级为指定版本
yum remove|erase 软件包名称:卸载软件包
例:用yum安装zsh-4.2.6-6.el5.i386.rpm,命令yum install zsh 或yum install zsh -y
例:查看zsh是否安装,查找命令 yum list zsh
例:卸载安装好的zsh包,命令:yum remove zsh
其他命令用法相同,不在演示!