Linux系统程序包管理之RPM

rpm包概述

RPM 是 Red at Package Manager 的缩写,本意是Red Hat 软件包管理,顾名思义是Red Hat 贡献出来的软件包管理工具;在Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流发行版本,以及在这些版本基础上二次开发出来的发行版采用。

RPM包里面都包含什么?里面包含可执行的二进制程序,也就是编译好的执行程序,这个程序和Windows的软件包中的.exe文件类似是可执行的;RPM包中还包括程序运行时所需要的文件,这也和Windows的软件包类似,Windows的程序的运行,除了.exe文件以外,也有其它的文件。

一个RPM 包中的应用程序,有时除了自身所带的附加文件保证其正常以外,还需要其它特定版本文件,这就是软件包的依赖关系;依赖关系并不是Linux特有的,Windows操作系统中也是同样存在的;比如我们在Windows系统中运行3D游戏,在安装的时候,他可能会提示,要安装Direct 9 ;Linux和Windows原理是差不多的。

rpm包管理

rpm包的安装

rpm {-i|–install} [install-options] PACKAGE_FILE…

-v: verbose:显示详细信息
-vv: 显示更详细信息
-h: 以#显示程序包管理执行进度

例如:

1.png

[install-options]

–test: 测试安装,检查并报告依赖关系及冲突消息等,但不真正执行安装dry run(干跑)模式

2.png

–nodeps:忽略依赖关系(不建议使用,有可能包安装之后不能使用)

3.png

–replacepkgs| replacefiles:替代原来的包,重新安装,但是replacepkgs不能够替换配置文件,但是其他文件问题不大,可以把被改掉的配置文件删除,然后再重新安装

4.png

–nosignature: 不检查来源合法性

–nodigest:不检查包完整性

–noscipts:不执行程序包脚本片断(每一个程序包安装时有可能需要运行一些脚本来做些准备操作,rpm包有可能会自带脚本,安装脚本有四类)   

四类:(了解)

%pre: 安装前脚本;–nopre

%post: 安装后脚本;–nopost

%preun: 卸载前脚本;–nopreun

%postun: 卸载后脚本;–nopostun

rpm包升级

rpm {-U|–upgrade} [install-options] PACKAGE_FILE…

rpm {-F|–freshen} [install-options] PACKAGE_FILE…

upgrade:安装有旧版程序包,则“升级”

        如果不存在旧版程序包,则“安装”

freshen:安装有旧版程序包,则“升级”

            如果不存在旧版程序包,则不执行升级操作

rpm -Uvh PACKAGE_FILE …

rpm -Fvh PACKAGE_FILE …

–oldpackage:降级

–force: 强行升级

升级注意项

(1) 不要对内核做升级操作;Linux支持多内核版本并存,因此,对直接安装新版本内核

(2) 如果原程序包的配置文件安装后曾被修改,升级时,新版本的提供的同一个配置文件并不会直接覆盖老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留

rpm包卸载

rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …

--allmatches:卸载所有匹配指定名称的程序包的各版本
--nodeps:忽略依赖关系
--test:测试卸载,dry run模式

rpm包查询

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

[select-options]

-a: 查询已安装的所有包(可以配合正则表达式使用)

5.png

-f: 查看指定的文件由哪个程序包安装生成

6.png

-p rpmfile:针对尚未安装的程序包文件做查询操作;

rpm –qpi :查询未安装包的info

rpm –qpc:查询未安装包安装之后生成的哪些配置文件

rpm –qp –scripts: 查询未安装包安装时会运行哪些脚本

7.png

–whatprovides CAPABILITY:查询指定的CAPABILITY(某种能力)由哪个包所提供

8.png

–whatrequires CAPABILITY:查询指定的CAPABILITY被哪个包所依赖

9.png

rpm2cpio 包文件|cpio–itv预览包内文件

10.png

rpm2cpio 包文件|cpio–id “*.conf”释放包内文

[query-options]

–changelog:查询rpm包的changelog

11.png

-c: 查询指定程序提供的配置文件

12.png

-d: 查询指定的程序包提供的文档

13.png

-i: information 程序包相关的信息,版本号、大小、所属的包组等

14.png

-l: 查看指定的程序包安装后生成的所有文件;

15.png

–scripts:程序包自带的脚本

16.png

-R: 查询指定的程序包所依赖的CAPABILITY;(bash所依赖的)

17.png

–provides: 列出指定程序包所提供的CAPABILITY;

18.png

包校验

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

S file Size differs:文件的容量大小是否被改变

M Mode differs (includes permissions and file type):文件的类型或文件的属性(rwx)是否被改变?如是否可运行等参数已被改变

5 digest (formerly MD5 sum) differs:MD5这一种指纹码的内容已经不同和

D Device major/minor number mismatch:装置的主/次代码已经改变

L readLink(2) path mismatch:link路径已被改变

U User ownership differs:文件的所属人已被改变

G Group ownership differs:文件的所属群组已经被改变

T mTimediffers:文件的创建时间已被改变

P capabilities differ:

19.png

包来源合法性验正及完整性验正:

完整性验正:SHA256

来源合法性验正:RSA

公钥加密:

对称加密:加密、解密使用同一密钥;

非对称加密:密钥是成对儿的

public key: 公钥,公开所有人

secret key: 私钥, 不能公开

导入所需要公钥:

CentOS 7发行版光盘提供:RPM-GPG-KEY-CentOS-7

rpm -K|checksigrpmfile检查包的完整性和签名

20.png

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

21.png

rpm数据库

rpm管理器数据库路径:/var/lib/rpm

数据库重建:

rpm {–initdb|–rebuilddb}  数据库维护

initdb: 初始化

如果事先不存在数据库,则新建之

否则,不执行任何操作

示例:

先删除/var/lib/rpm的所有数据块文件模拟环境,在进行重建

22.png

如果不想破坏原有的数据库,可以在其他路径下重建

23.png

rebuilddb:重建

无论当前存在与否,直接重新创建数据库

24.png

原创文章,作者:xiaoqing,如若转载,请注明出处:http://www.178linux.com/39507

(0)
xiaoqingxiaoqing
上一篇 2016-08-24 21:22
下一篇 2016-08-24 21:22

相关推荐

  • 马哥教育网络第20期第八周课程练习

    1、 请描述网桥、集线器、二层交换机、三层交换机、路由器的功能、使用场景与区别。在局域网内,大量主机之间的通信通过arp广播来连接目的主机地址的,为减少在共享环境里的介质,网桥的作用是将广播域划分为多个小的冲突域,但广播域没有变。工作在OSI数据链路层,端口很少。基于软件。可以处理上层事务。 集线器:对接收到的信号进行再生整形放大,扩大网络传输距离,工作在O…

    Linux干货 2016-08-15
  • Linux文档的压缩与打包

    Linux文档的压缩与打包 概述 compress和uncompress gzip压缩工具 bzip2压缩工具 zip压缩工具 tar压缩工具 cpio压缩工具(主要用来备份还原) Linux文档的压缩与打包 概述 本章将介绍Linux系统中的压缩和解压缩的工具,以及归档工具(tar,cpio) compress/uncompress:   &nb…

    Linux干货 2016-09-06
  • Linux的哲学思想

    Linux的哲学思想 一切皆文件 在linux中所有的一切,都是可以通过ls进行查询的到的,甚至可以说ll查看详细信息时表现形式为文件,所有的设备,所有的文件不论后缀,只是一个单纯文件通过vim可以编辑一切 单一目的的小程序,组合小程序完成复杂任务 在linux中,每一个命令都是对应一个功能,通过不同的参数来完成不同的要求,通过繁多的小的命令来完成大型的要求…

    Linux干货 2016-10-30
  • 简单的文本处理工具和正则表达式

    一、文本工具     在linux中,有很多优秀且功能强大的文本处理工具,对文件内容进行查找、替换、删除、排序等操作,是linux进行文本处理变得特别方便。日常工作中,经常会用文本处理进行日志分析,文本抽取等,所以掌握文本处理,将会对我们的工作起到极大的作用。 cat:查看文件    &n…

    Linux干货 2016-08-10
  • Ansible+Corosync+Pacemaker+nfs实现http高可用

    目录: (一)实验环境 (二)准备工作 (三)为node1和node2配置基础配置 (四)使用ansible部署nfs (五)使用ansible部署corosync和pacemaker (六)使用ansible安装crmsh工具 (七)使用crmsh配置http高可用 (八)验证 (九)需要注意的地方 (一)实验环境 1.1、环境拓扑 1.2、所需系统 4台…

    Linux干货 2016-04-29
  • bash脚本编程实例

    bash脚本编程实例 1.写一个脚本,使用ping命令探测172.16.250.1-172.16.250.254之间的所有主机的在线状态 在线的主机使用绿色显示 不在线的主机使用红色显示 #!/bin/bash for i in {1..254};do if /bin/ping -W 1 -c 1 172.16.250.${i} >> /dev/…

    Linux干货 2017-08-20