首页 > 代码库 > linux学习之路之软件包的管理(RPM)
linux学习之路之软件包的管理(RPM)
目前linux界管理软件有2种方式,一是使用dpt来管理,二是使用RPM来管理
dpt使用Debian linxu社区开发的,目前使用dpt来管理的发行商包括:B2D,Ubuntu等。
而RPM是有Red Hat公司开发出来的,目前使用RPM来管理软件的发行商包括:Fedora、CentOS、SuSE等。
由于当前最主流的软件包管理大多使用RPM来管理的,因此在这里我们只介绍如何使用RPM来管理软件包
什么是RPM呢?
RPM:全名是RedHat Package Manager,简称RPM,他是以一种数据库记录的方式将你所需要的软件安装到你的linux系统上的一套管理机制。也就是安装某个软件时,该软件的信息全部写入到了RPM数据库中,以后关于该软件包的升级、卸载、以及校验等操作都是根据RPM数据库中的数据来进行的。
RPM软件包的命名规则:
name-version-release.arch.rpm
软件名称-版本号-发行次数.操作平台.rpm
其中版本号分为主版本号和次版本号
主版本号:当软件包的重大功能发生改进时,才用于修正主版本号
次版本号:某个子功能发生改变时,才会改变,才用于修正次版本号
发行次数就是编译的次数
操作平台主要由以下几种:
i386:适用于所有的x86平台
i586:针对586等级的计算机进行优化编译的
x86_64:针对64位的CPU进行优化编译的
noarch:表示没有任何硬件等级上的限制
软件包管理器的核心功能是:
1、制作软件包。
我们知道RPM包是经过原始码编译而来的,所以RPM包是可以直接用来安装的,但是不同的发行商的RPM包是不用相互通用的,有的连相同发行商不同版本的RPM包也不可以使用。原因是编译这些RPM包的编译环境不一样所导致的。这些编译环境包括硬件平台、库文件等等。
换句话说,只有编译环境和安装RPM的环境一致时,该软件包才可以使用。而软件包管理器就可以用来编译原始码,使其在特定的平台上使用。
2、软件包管理器可以来安装、查询、升级、卸载、校验软件包中文件的正确性、重建数据库等操作。
在这里我们先介绍如何使用RPM来安装软件的。
在linux系统中,许多软件在安装过程中,存在依赖关系,这里所谓的依赖关系就是说在安装A软件时,必须先安装B软件,才能在安装A软件。这就是软件的相依属性。
一、RPM包安装
语法格式:rpm [option] package_file(这个是软件的文件名,全称)
-i:install的意思
-v:显示安装过程中的详细信息
-vv:显示更加详细的信息
-h:以#号来显示安装进度,其中每个#表示2%的进度
其中ivh通常一起使用
--nodeps:在安装过程中,忽略依赖关系,这可能会导致安装的软件无法使用
--replacepkgs:重新安装,替换原有的安装
--replacefiles:在安装过程中,如果某个安装文件已经存在,可以使用此选项覆盖。
--force:强行安装,可以实现重新安装或者降级安装
二、RPM包查询
之前说过RPM包在安装的时候会生成一个数据库文件,这个文件是/var/lib/rpm/目录,RPM查询就是在这个目录下查找数据库文件的。
语法格式:rpm [option] [package_name]
-q:查询指定的包是否已经安装
-qa:查询已经安装的所有包,后面不接包名
-qi:查询指定包的说明信息
-qc:查询指定包的配置文件
-qd:查询指定包的帮助文件(与man相关)
-ql:查询指定包安装后生成的文件列表
-q --scripts:查询指定包中所包含的脚本
-qf /path/to/somefile:查询指定的文件是由那个rpm包安装生成的。
如果某个软件包未安装,想要查询其相关信息,可以使用-qp来查询
语法格式:rpm -qp[ilcfd] package_name(未安装的软件包名)
其中-iclfd意思和上面一样
三、RPM包升级
rpm -Uvh package_file :如果该软件包已安装,则升级;没有安装,则进行安装
rpm -Fvh package_file:如果该软件以安装,则升级;没有安装,则退出
其中选项--oldpackage用于降级安装
四、RPM包卸载
rpm -e package_name:卸载某个软件包
--nodeps:在卸载过程中忽略依赖关系。
在卸载过程中,最好从上层一次往下卸载,避免系统混乱。
五、校验RPM安装生成的文件
校验RPM中的文件可以用来检测某个文件是否被修改过,以及该文件是否被误删了等信息。它是通过对比/var/lib/rpm/下的数据库内容和当前系统上面的所有文件等机制来检测的。
语法格式:
rpm [option] [package_name]
-V :检测指定的软件包中的文件是否被修改过,只有被更动过的文件才会显示出来
-Va:列出系统上所有被更动的文件
-Vf:检测某个文件是否被更动过
其中这上面的每一个点代表的是SM5DLUGT,只有改变的才会显示出来
S:文件的大小发生改变
M:文件的类型或者权限发生改变
5:MD5随机码不同
D:装置的主/次代号发生改变
L:Link路径发生改变
U:文件的属主发生改变
G:文件的属组发生改变
T:文件的修改时间发生改变
其中后面的字符表示文件类型
c:表示配置文件
d:数据文件
g:该文件不被某个软件所包含
l:许可证文件(license file)
r:自述文件(read me)
六、创建数据库
如果某个用户别不小心损毁了/var/lib/rpm/目录下的文件,那么可以使用rpm来重建数据库
语法格式:
rpm --rebuilddb:不管RPM数据库是否存在,使用该选项一定会重新创建数据库
rpm --initdb:初始化数据库,也就是说如果数据库不存在则创建数据库;存在则不用创建。
本文出自 “linux学习之路” 博客,谢绝转载!
linux学习之路之软件包的管理(RPM)