RPM(Red Hat 软件包管理器)全称为 Red Hat Package Manager,最初这个软件管理机制是由Red Hat发展出来的。现在很多的linux发行版都用的是RPM,RPM用rpm这个命令来管理RPM软件包。rpm可实现多种管理功能,对软件包的安装、卸载、查询、升级、校验、数据库的重建、验证数据包等工作都能进行,我们先来了解一下软件包的组成:
软件包的分为主包和子包,主包的命名方式是在包名后面直接跟版本号,而子包是在主包的名字后面加一个子名字,但是子包的文件名要包括主包名和子包名,我们来看一个例子:
zsh-html-4.2.6-6.el5.i386.rpm
这里的zsh就是主包名,heml为子包名,zsh-html合起来才是包名,后面的4.2.6是版本号,6.el5是发行号,i386代表的是适合的平台,最后的是后缀名;有些人后说一个版本号而已弄那么长干什么!其实版本号也是有命名标准的。
版本号里又分为主版本号,次版本号和发型号。主版本号只有在对软件包做了重大改进时才会修改,次版本号则是某个子功能发生了重大变化时修改,发行号则是修正了部分bug,调整了一点功能时修改。了解之后我们来看一下怎么管理这些软件包。
rpm:这个是命令功能很多,这里我只说我了解一点的;
1、安装
rpm -i:后面跟软件包,表示安装此软件包;后面也可以跟软件包的路径
-h:以#显示安装进度,每个#表示2%
-v:在安装时显示详细过程
-vv(最多三个):显示更详细的过程
rpm -ivh --nodeps:在安装时忽略依赖关系
--replacepkgs:重新安装,替换原有安装
--force:强行安装,可以实现重装或升级
--test:测试此软件包有没有依赖关系之类的,只测试不安装
2、卸载:
在卸载软件包时要确保卸载的软件包没有被其他软件包依赖,不然卸载以后另外一个软件也不可以用了。
rpm -e:后面指定包名即可卸载,不需跟软件包的完整版本号等信息;
--nodeps:强行卸载
卸载完成之后没有反馈任何信息,我们怎么知道软件是否被卸载掉了呢?我们来看下一个话题
3、查询
rpm -qa:不需加任何参数,查询已经安装的所有软件包
-q PACKAGE_NAME(包名):指查询指定的包是否已经安装
-qi PACKAGE_NAME:查询指定软件包的说明信息
-ql PACKAGE_NAME:查询指定包安装后生成的文件列表
-qc PACEAGE_NAME:查询指定安装包的配置文件
-qd PACKAGE_NAME:查询指定安装包的帮助文件
-q --scripts PACKAGE_NAME:查询指定包中包含的脚本
-qf /path/to/somefile(文件路径):查询某个文件是由哪个rpm包安装生成的
*注:这里只针对已安装的包有效,信息太多不再举例…
如果某rpm包尚未安装,我们需查询其说明信息、安装以后会生成的文件该怎么办/
rpm -qpi PACKAGE_FILE:查询指定包的说明信息
rpm -qpl PACKAGE_FILE:查询指定包安装后会生成的文件
4、升级
rpm -Uvh PACKAGE_FILE:如果装有老版本的,则升级;否则,则安装
rpm -Fvh PACKAGE_FILE:如果装有老版本的,则升级;否则退出
5、校验
用来查询我们的数据是否被修改过
rpm -V PACKAGE_NAME:查看软件包的完整性
-Va:列出当前系统上所有可能被更改的文件
6、重建数据库
rpm --rebuilddb:重新建立数据库文件,此命令表示一定会重建;
--initdb:初始化数据库,没有才建立,有就不用建立
yum是rpm包的前端工具,依赖于rpm,但是yum可以实现对rpm包的安装、升级、卸载。另外yum仓库还保存了rpm包的相关信息我们来看一下yum仓库中的元数据文件:
primary.xml.gz:这个文件包含了仓库中所有的rpm包的列表以及各个rpm包之间的依赖关系,还有每个rpm包安装生成的文件列表;
filelists.xml.gz:包含了当前仓库内所有rpm包的所有文件列表
other.xml.gz:额外信息,如:rpm包的修改日志
repomd.xml:记录的是上面三个文件的时间戳和校验和
comps*.xml:rpm包的分组信息
yum的配置文件在/etc/yum.conf:包含了yum的缓存路径、日志等信息...
如何为yum定义repo文件,repo文件包含了哪些内容
[Repo_ID] yum仓库的名称
name=Desicription 描述性信息
baseurl= 指定能被访问到的路径,有如下三种:
ftp://
http://
file:///
enabled={1|0}启用或禁用:当前这个仓库是否可用
gpgcheck={1|0}默认为1:是否使用gpg来验证软件包来源的合法信息
gpgkey=gpg文件的具体存放路径
下面是yum的相关命令:
yum [option] [command] [package ...]
list:列表,能够列出当前yum仓库中所有软件包。支持globe(通配符)
clean:清理缓存
repolist:显示repo列表及其简要信息
install:安装
update:升级
update-to:升级为指定版本
remove|erase:卸载 *注意:如果此包被其他包依赖那么会同时被卸载掉
……
这些命令还有许多相关的子命令:
list:列表
all:列出所有软件包(默认的)
available:显示所有可用的软件包,指仓库中有,尚未安装的软件包
installed:只显示已经安装的
updates:显示可用的升级
clean:清理缓存
packages:只清理rpm包
headers:rpm包信息
metadata:元数据文件
dbcache:rpm包的库缓存
all:所有的
repolist:显示repo列表及其简要信息
all:显示所有repo
enabled:默认,只显示允许使用的
disabled:显示禁用的
install:安装
yum install PACKAGE_NAME(包名)
-y:自动回答为yes
--nogpgcheck:不做gpg检查