RPM 包管理 - 2| 学习笔记

简介: 快速学习RPM 包管理 - 2。

开发者学堂课程【Linux 软件包安装和 yum 仓库实战RPM 包管理 - 2】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/590/detail/8336


RPM 包管理 - 2

 

内容介绍:

一、包升级

二、升级注意事项

三、包查询

四、包校验

 

一、包升级

升级:

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

2.rpm {-Fl--freshen} [install-options] PACKAGE_FILE...

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

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

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

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

5.rpm- Uvh PACKAGE FILE ...

rpm- Fvh PACKAGE FILE ...

6.--oldpackage: 降级

7.--force: 强制安装

 

二、升级注意事项

注意:

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

比如说安装了较老版本 centos 6.9 版本,内核包为 2.6.32,现在有一个 centos 6.10 版本,内核包同样为 2.6.32 ,两个版本编译次数不同,现在要把 centos 6.10版本也安装进来,先挂上光盘,将安装光盘由 6.9 改为 6.10。

image.png

查看当前安装的内核版本可以用 # rpm q kernel命令,一开始的版本为 696,挂上光盘后为 754,使用  # rpm –ivh 命令安装可以做到多版本共存,前提是可以并存。

安装内核包会显示要先安装固件包 firmware ,安装固件包之后,又会出现矛盾问题,是因为两个包的个别文件会出现一样的名字导致冲突,把冲突的文件删除之后就会解决。这时再使用  # rpm –q kernel 命令,会发现两个版本并存,boot 一下会发现所有文件都出现两个形式。

image.png

版本并存之后,当启动时就可以选择用那个版本的内核包即操作系统操作。

重新启动后,可以使用 # uname r 命令查看当前使用的操作系统。如果新内核不好用,则可以重启应用再回到旧内核。卸载内核的命令为 # rpm e kernel+版本号。

再使用 # rpm –q kernel 命令,会发现新版本已卸载。

运维追求稳定,开发人员追求新颖。

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

二进制文件覆盖,配置文件不覆盖,因为配置文件相当于数据类。

 

三、包查询

1.rpm {-ql--query} [select-options] [query-options]

可以用来查询,后面跟上某个你要检查的包,比如说 rpm q+包名可以查询系统中是否安装了某个包,包名必须完整,不可缺漏。如果包名忘记,可以加上 a 选项,即 rpm qa 命令可以列出所有的包,这样就可以查询包。

rpm qa “tre*” 为 tre 开头的包,rpm –qa “*tre*” 为包含 tre 的包。

Rpm ql tree 为列出某个包里包含的文件列表,为一堆文件的集合,是在数据库里查询。

当然许多包里不仅有文件,还有许多脚本,使用 rpm q scripts+包名 就可以列出包里包含的脚本。

2.[select-options]

-a: 所有包

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

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

--whatprovides CAPABILITY:查询指定的 CAPABILITY 由哪个包所提供

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

每装一个包都会在硬盘上产生磁盘文件,现在想要查询一个磁盘文件来自于哪个包,使用 # rpm qf /usr/bin/tree 就可以查询某个文件来自于哪个包,就算包没了仍然可以查询到文件来自哪个包,是由于有数据库作为基础。 

如果包里的文件丢失,可以使用解包来查找文件。先 copy 包,再解包。解包后还要再验证文件,因为有可能造成包的属性改变。 

如果一个包还未装,现在想安装,安装之前就想查询这个包里包含哪些文件,就可以使用 # rpm qpl+文件名 查询。

Whatprovides 翻译为提供,CAPABILITY 为能力,使用 whatprovides 就可以查询到是哪个包提供了这个功能。

Whatrequires 翻译为依赖,使用 whatrequires 就可以查询这个能力是被哪个包所依赖的。

3.rpm2cpio 包文件 |cpio-itv  预览包内文件 

4.rpm2cpio 包文件 |cpio-id "*.conf"  释放包内文件

5.[query-options]

--changelog: 查询 rpm 包的 changelog

-C: 查询程序的配置文件

-d: 查询程序的文档

-i:  information

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

--scripts: 程序包自带的脚本

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

-R: 查询指定的程序包所依赖的 CAPABILITY

Rpm qc bash 就可以查询 bash 这个包里所包含的配置文件。

rpm –qd bash 为挑选 bash 包里特定的文件列表来显示,

rpm –qi bash 为查询这个包里的描述信息,I 为 information 为信息,比如作者,书名,安装时间等等。

6.常用查询用法:

-qi PACKAGE,-qf FILE,-qc PACKAGE,-ql PACKAGE,-qd PACKAGE

-qpi PACKAGE_FILE,-qpl PACKAGE_FILE,...

-qa

使用 qi 查询的前提是包已经装上了,而且后面跟的是文件名,不是包名。

当包还没安装,想要查询文件信息就是用 -qpi 指令查询,去查询包的名称,属性,作者等。 

7.包卸载:

rpm{-el--erase}[--allmatches][--nodeps][--noscripts][--notriggers][--test] PACKAGE_NAME...

如果 p1 依赖于 p2,安装顺序为先 p2 后 p1,卸载顺序为先 p1 后 p2。

--nodeps 为忽略依赖,强行卸载,强制去除依赖性。卸载后使用 boot 查询内核中的文件,发现没有了,但是还可以正常使用,但是重启 reboot 后就不能用了,内核出现故障。

 

四、包校验

1、rpm {-Vl--verify} [select-options] [verify-options]

S file Size differs

M Mode differs (includes permissions and file type)

5 digest (formerly MD5 sum) differs

D Device major/minor number mismatch

L readLink(2) path mismatch

U User ownership differs

G Group ownership differs

T mTime differs

P capabilities differ

包安装之后的每个属性都会详细的存储在数据库里面,使用 # ll /var/lib/rpm/ 查询包里的属性,其中包括 S file Size differs 包里每个文件的大小,M Mode differs 权限,5 digest 摘要,D Device major 设备编号,L readLink 连接处,各方面的能力等等。使用 rpm –v 这个命令就可以查询。

2、包来源合法性验正及完整性验证

完整性验证:SHA256

来源合法性验证:RSA

验证拿到的 rpm 包是否适合厂商发布的内容一致,查询内容是否被人修改。

3、公钥加密

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

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

public key: 公钥,公开所有人

secret key: 私钥,不能公开 

4、导入所需要公钥

rpm-K丨checksig rpmfile 检查包的完整性和签名

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

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

rpm-qa "gpg-pubkey*"

如果在互联网拿到一个包,想知道这个包是否被黑客修改过,就可以使用 K 来检查包的完整性。

相关文章
|
2月前
|
Linux
软件包管理工具 - rpm
【1月更文挑战第16天】
78 0
|
2月前
|
C语言
软件管理rpm与yum
软件管理rpm与yum
|
11月前
|
Linux
RPM软件包管理
RPM软件包管理
192 0
|
11月前
|
存储 Linux
如何使用`yum`命令安装RPM软件包?
如何使用`yum`命令安装RPM软件包?
644 0
|
缓存 Oracle 关系型数据库
Linux包管理(wget、rpm和yum)
wget是Linux中的一个下载文件的工具,wget是在Linux下开发的开放源代码的软件,作者是Hrvoje Niksic,后来被移植到包括Windows在内的各个平台上。
419 0
|
Web App开发 Linux
Linux:rpm与yum(内含:1.rpm介绍+2.卸载rpm包+3.安装rpm(应用案例)+4.yum(应用案例))
Linux:rpm与yum(内含:1.rpm介绍+2.卸载rpm包+3.安装rpm(应用案例)+4.yum(应用案例))
227 0
Linux:rpm与yum(内含:1.rpm介绍+2.卸载rpm包+3.安装rpm(应用案例)+4.yum(应用案例))
|
关系型数据库 MySQL Java
RPM 安装|学习笔记
快速学习 RPM 安装
222 0
RPM 安装|学习笔记
|
缓存 前端开发 安全
RPM 包管理-1| 学习笔记
快速学习 RPM 包管理-1。
131 0