程序包管理器RPM

一、简介

1、什么是RPM

RPM的全名是RedHat Package Manager,当初为RedHat公司开发出来用于其自己研发的Linux系统中,遵循GPL准则,目前以被广大Linux发行版所应用。
RPM的最大特点是,其会将你需要的软件提前编译安装打包成一个RPM包,系统通过该RPM包里面的数据记录来获取需要安装的软件的依赖关系。这意味着,当使用RPM安装的时候,RPM会根据安装包里面的依赖关系查询系统中是否满足相应的条件,如果满足则安装,否则会报错。安装了之后,RPM会把该软件的信息写入到RPM的数据库中,以方便将来的查询、验证、升级和卸载等操作。

2、其他程序包管理器

由于Linux系统发行版数不胜数,想要让这些发行版统一使用同一个程序包管理器的话是不太现实的。目前主流的程序包管理器除了RPM以外,比较常见的还有Debian系的DPKG。
DPKG最早是由Debian Linux社区所研发出来的,通过DPKG,Debian所提供的软件便能简单的安装到系统中,同时还能提供安装后的软件信息。大多数从Debian衍生出来的Linux 发行版,如Ubuntu等都是使用了DPKG作为程序包管理。

发行版 程序包管理器 命令 前端工具
RedHat/Fedora、Centos、RHEL RPM rpm,rpmbuild yum
Debian/Ubuntu DPKG dpkg APT

3、RPM包命名方式

RPM包的命名方式一般分为两种:

name-VERSION.release.arch.rpm
name-VERSION.release.arch.src.rpm

1)name:表示软件包的名称,如httpd;
2)VERSION:表示软件包的版本号,通常格式为“major.minor.release”,release是发布的版本号,通常表示这个RPM包编译了几次;
3)release:表示该RPM使用的Linux发行版本,如el5,代表RHEL5。
4)arch:代表适用的硬件平台,目前RPM包支持的平台有:i386、i586、i686等,另外noarch表示无硬件平台限制。
5).rpm.src.rpm:为RPM包的后缀,.rpm包是编译好的二进制安装包,可直接使用rpm命令进行安装;而.src.rpm则表示代码包,需要对其进行编译生成.rpm包进行安装。

其他特殊名称包括:
devel:软件的开发包;

二、RPM的编译安装

Linux系统上的软件除了直接使用RPM命令安装之外,还可以使用编译安装的方式进行安装。
在进行软件的编译安装前,我们需做以下几点准备:
1)下载软件对应的源码包,通过源码包呈现为以.src.rpm为后缀或tar.xz等打包格式而存在。
2)提供相关的安装工具及开发环境。

源代码的编译步骤:
1)使用.configure检查编译环境;
2)使用make对源代码进行编译;
3)make instal 将生成的可执行文件安装到当前计算机中。

三、RPM命令

1、rpm命令基本功能

rpm [options] [PACKAGE_FILE]

RPM命令的使用按照功能俩说可以分为:安装、查询、校验、卸载、升级等,其对应的功能选项为:
安装:-i,--install
升级:-U,--update,-F,--freshen
卸载:-e,--erase
查询:-q,--query
校验:-V,--verify
数据库维护:--builddb,--initdb

2、rpm命令的功能选项

1)安装

命令:

rpm {-i|--install} [install-options] PACKAGE_FILE ...

[install-options]:
-v:显示安装的详细过程;
-h:打印50个hash masks作为程序包安装的进度条;
--test:不安装,只是检查与报告该软件潜在的依赖冲突;
--nodeps:忽略依赖关系安装;
--replacepkgs:重新安装,通常用于在程序出错后重新安装程序;
--nosignature:不检查包签名信息,即不检查来源的合法性;
--nodigest:不检查包的完整性;

2)升级

命令:

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

install-options:
--oldpackage:降级安装;

注意:

  • 安装和升级功能的选项可通用;
  • 尽可能不要对Linux内核进行升级操作,以免升级后系统无法正常运行。Linux系统支持多内核版本并存,因此可以直接安装新版本的内核;
  • 如果某个原程序包的配置文件在安装后被修改了,那么升级后,新版本程序提供同一个配置文件会被重新命名为FILENAME.rpmnew,而不会覆盖原有文件;
3)卸载

命令:

rpm {-e|--erase} [--allmatches] [--justdb] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME ...

erase options:
--nodeps:忽略依赖关系卸载;
--allmatches:卸载所有匹配指定名称的程序包;
--test:测试卸载,不是真实的卸载;

4)查询

命令:

rpm {-q|--query} [select-options] [query-options]

select-options:
PACKAGE_NAME:查询指定的程序包是否已经安装机对应的版本信息;
-a,--all:查询所有已经安装的RPM包;
-f FILE:查询指定的文件由哪个程序包安装生成;
-p,--package PACKAGE_FILE:用于实现对未安装的程序包执行查询操作;
--whatprovides CAPABILITY:查询指定的功能由哪些程序包提供;
--whatrequires CAPABILITY:查询需要安装指定功能才能正常运行的程序包;

query-options:
--changelog:查询rpm包的修改日志;
-l,--list:查询程序安装所产生的所有文件列表;
-i,--info:查询程序包相关的信息,如版本号,大小,所属包组等;
-c,--configfiles:查询知道你个的程序提供的配置文件;
-d,--docfiles:查询指定的程序包所提供的帮助文件;
--provides:列出指定的程序包所提供的所有功能;
-R,--requires:查询指定的程序包的依赖关系;
--scripts:查询程序包自带的脚本信息;

5)校验

命令:

rpm {-V|--verify} [select-options] [verify-options]

rpm包的检验后的输出类似如下:
SM5DLUGT c /etc/profile.d/vim.sh
前面的字符分别代表:
S:file Size differs,对应文件大小不一致;
M:Mode differs (includes permissions and file type),对应的文件类型及权限不一致;
5:digest (formerly MD5 sum) differs,文件对应的MD5值不一致;
D:Device major/minor number mismatch,文件的major/minor值不匹配;
L:readLink(2) path mismatch,文件的符号链接内容
U:User ownership differs,表示文件的属主不一致。
G:Group ownership differs,表示文件的属组不一致。
T:mTime differs,表示文件的修改时间不一致;
c:只有在文件是配置文件的时候才会出现该标识;

6)rpm数据库的重建

rpm程序包管理器的数据库路径为/var/lib/rpm,rpm命令的查询动作是通过查询此处的数据库来进行显示。当此数据库出现问题的时候,rpm的查询将无法正常进行。
通过命令 rpm 可以初始化或重建该数据库:

rpm {--initdb|--rebuilddb}

--initdb:初始化数据库,当rpm不存在任何数据库时,可初始化创建一个新的数据库;当存在一个数据库时,不执行任何操作;
--rebuilddb:重新构建,通过读取当前系统上的所有已安装过的程序包进行数据库的重建;

3、rpm包的验证

RPM程序包的验证有两种,一种是包来源的合法性验证,另一种是包的完整性验证。这两种验证分别依赖于制作者的数字签名和程序特征码完成。
数字签名是包的制作者使用单向加密提取原始数据的特征码,而后使用自己的私钥加密这段特性码,附加原始数据后面。
验证过程:
前提:必须有可靠机制获取到包制作者的公钥;
1、使用制作者的公钥解密加密的特征码,能解密则意味着来源合法。
2、对文件进行相应的完整性校验工具MD5|SHA-1 等得到特征码对比制作者提供的加密特征码,一致则认为包完整。

对于centos发行版来说,通过下面命令可以获取并导入信任的包制作者的密钥:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

四、RPM命令的使用方式

安装RPM包:

[root@localhost tmp]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm 
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-5.0.2-28.el7                 ################################# [100%]

升级RPM包:

[root@localhost tmp]# rpm -Uvh zsh-5.0.2-28.el7.x86_64.rpm 
准备中...                          ################################# [100%]
正在升级/安装...
   1:zsh-5.0.2-28.el7                 ################################# [100%]

卸载RPM包:

rpm -e vim-enhanced-7.4.160-2.el7.x86_64

查询RPM包:

[root@localhost tmp]# rpm -q zsh
zsh-5.0.2-28.el7.x86_64

查询程序包安装完后生成的所有配置文件:

[root@localhost tmp]# rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容