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学习之路” 博客,谢绝转载!

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。