Linux源程序包管理器之RPM

一、 RPM功能描述

打包

安装

卸载

升级

校验

数据库管理

二、 RPM包命名格式

1.       命名格式举例

name-version-relase.arch.rpm

例如:bash-4.2.3-3.centos5.x86_64.rpm

2.       分段描述

包名

版本号

RPM发行号

系统信息

平台信息

后缀

bash

4.2.3(同打包的源代码一致)

3(rpm自身的发行号,与程序源码的发行号无关,仅用于标识对rpm包不同制作的修订)

    Centos5(此包适用的OS)         

X86_64( 适用于的硬件平台)

举例:                                 x86:   i386, i486, i586, i686等;

                                     x86_64:   x86_64

                                     powerpc:   ppc

                                     noarch:   依赖于虚拟机

.rpm

三、 RPM分包机制

RPM包管理器在对源码包编译时根据功能性差异,对要编译的程序包进行了分包处理。

常见分包形式

主包

bash-4.2.3-3.centos7.x86_64.rpm

命名与源程序一致

子包

bash-a-4.2.3-3.centos7.x86_64.rpm               

bash-b-4.2.3-3.centos7.x86_64.rpm

bash-devel-4.2.3-3.centos7.x86_64.rpm

例如:开发包

三、 RPM包获取途径

1、发行的光盘或站点服务器

            镜像:

                       http://mirrors.163.com

                            http://mirrors.sohu.com

2、项目的官网

            源代码

            rpm

3、很多第三方机构或个人制作并公开发布许多rpm

http://rpmfind.net

           http://rpm.pbone.net

4、可靠的途径:EPEL

            Fedora-EPEL

四、 rpm包的合法性验证

linux源程序包制作者制作完成之后会附加数字签名于包上,保证了包的来源合法性和完整性。

加密过程

          包的制作者使用单向加密提取原始数据的特征码,而后使用自己的私钥加密这段特性码,附加原始数据后面。

验证过程

前提:必须有可靠机制获取到包制作者的公钥;

         1、使用制作者的公钥解密加密的特征码,能解密则意味着来源合法;

         2、使用与制作者同样的意向加密算法提取原始数据的特征码,并与解密出来的特征作比对,相同,则意味着完整性没问题;

五、 RPM包管理器使用

1.       安装程序包

命令

选项参数

文件名

Rpm

-ivh:常用组合

/path/to/package_file

Rpm

-vvv:安装时显示更详细信息

/path/to/package_file

Rpm

–test:测试是否可正常安装

/path/to/package_file

Rpm

–nodeps:忽略依赖关系安装,安装后可能无法正常运行

/path/to/package_file

Rpm

–replacepkgs:重新安装(如果原有配置文件作了修改,很有可能不执行替换,而是将应该安装生成的配置文件重命名为 .rpmnew

/path/to/package_file

 

2.       卸载程序包

命令

选项参数

文件名

Rpm

-e:卸载程序包

package­_name

Rpm

–nodeps:忽略依赖关系将依赖于此包的所有包一并卸载,但依赖于此包的程序包可能会运行不正常。

package­_name

Rpm

–replacepkgs:重新安装(如果原有配置文件作了修改,很有可能不执行替换,而是将应该安装生成的配置文件重命名为 .rpmnew

package­_name

注意:如果包的配置文件安装后曾被改动过,卸载时,此文件将不会卸载,而是被重命名并保留,例如:warning: /etc/zprofile saved as /etc/zprofile.rpmsave

3.       升级程序包

命令

选项参数

文件名

Rpm

-Uvh:升级或安装

/path/to/package_file

Rpm

-Fvh:纯升级(若升级的程序包与其他程序包存在依赖关系,升级后其他程序包会运行异常,存在版本冲突问题;)  

/path/to/package_file

Rpm

–force:强制升级

/path/to/package_file

注意:不应该对内核执行升级操作,而是安装。系统允许多内核并存。

4.       查询操作

1、查询某包是否安装

rpm -q package_name…

2、查询所有已经安装的包

         rpm -qa

                   按条件过滤:rpm -qa | grep 'PATTERN'

3、查询包的描述信息

         rpm -qi package_name

4、查询某包安装生成了哪些文件

rpm -ql package_name

         (1) 查询某包安装生成了哪些配置文件

                   rpm -qc package_name

         (2) 查询某包安装生成了哪些帮助文件

                   rpm -qd package_name

         (3) 查询程序包的相关脚本

                   rpm -q –scripts package_name

                            脚本有四类:

                                     preinstall:安装前脚本

                                     postinstall: 安装后脚本

                                     preuninstall: 卸载前脚本

                                     postuninstall: 年前后脚本

5、查询某文件是由哪个包安装生成的

         rpm -qf /path/to/some_file

6、对尚未安装的包执行查询

         rpm [option] /path/to/package_file

                   -qpi:查询包的描述信息

                   -qpl:查询某包安装会生成哪些文件

                   -qpc:查询某包安装会生成哪些配置文件

                   -qpd:查询某包安装会生成哪些帮助文件

六、 几种常见使用场景

 1.       Rpm包安装后生成的文件属性是否发生改变,是否被恶意更改?

标准语句:rpm -V package_name

举例:以zsh程序包为例

1)修改其配置文件,新增“#NEWLINE”行;

Linux源程序包管理器之RPM

2rpm –V zsh 检测;

Linux源程序包管理器之RPM

3S代表文件大小,新增5字节且修改时间有改变;

注意:某属性无变化,显示为 .

各字符代表的意义:

                          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

 

 2.       包来源合法性及完整性检验

此处以检测光盘程序包检测为例;

1)导入前,安装程序包时提示无密钥

Linux源程序包管理器之RPM

2)导入包的制作者的公钥

         rpm –import /media/CentOS/RPM-GPG-KEY-CentOS-6

3) 显示所有已经导入的gpg格式的公钥

Linux源程序包管理器之RPM                              

4)显示密钥的详细信息

Linux源程序包管理器之RPM

Linux源程序包管理器之RPM

5)再次安装zsh程序包,无提示信息(检查包:安装过程中会自动执行)

Linux源程序包管理器之RPM

6)手动检查操作,两种办法如图(来源合法性和完整性)

Linux源程序包管理器之RPM

Linux源程序包管理器之RPM

7)手动检查操作(来源合法性)

Linux源程序包管理器之RPM

8)手动检查操作(包完整性)

Linux源程序包管理器之RPM

9)其他命令

清除已导入的密钥:rpm -e gpg-pubkey-NAME

 3.       Rpm程序管理器数据库重建

rpm数据库目录:/var/lib/rpm

rpm数据库重建操作:

         rpm –initdb 初始化(如果事先没有库,会新建一个;如果有,则不新建;)

         rpm –rebuilddb: 重建(直接重建,覆盖原有的数据库)

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

(0)
晚明伤哥晚明伤哥
上一篇 2015-09-24
下一篇 2015-09-26

相关推荐

  • 手动编译内核+busybox+dropbear+nginx

    我们需要先在宿主机上添加一个磁盘,然后,把这个磁盘做好分区和文件系统: fdisk /dev/sdb 创建第一个分区: n p 1 +512M 创建第二个分区: n p 2 +10G 保存退出: w 为分区提供文件系统: kpartx /dev/sdb 为分区提供文件系统: mke2fs -t ext4 /dev/sd…

    Linux干货 2015-09-24
  • Linux网站架构系列之Mysql—-部署篇

    原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://nolinux.blog.51cto.com/4824967/1321079   MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL所使用的SQL语言是用于…

    Linux干货 2015-04-01
  • 网络N23期第二周:linux上的目录与文件管理命令,bash的工作特性等

    1、Linux上的目录与文件管理类命令都有哪些,其常用的使用方法及其相关示例演示。 1.1 mkdir  创建目录 使用方法:mkdir [OPTION]… DIRECTORY… 常用选项: -p:按需创建父目录 -m:创建目录权限 -v:输出详细创建目录过程 实例: 创建/tmp/test2/test3目录,定义权限为rwxrw-rw-,并详细显…

    Linux干货 2016-10-09
  • Linux下使用screen协同作业

    1)screen应用场景(拷贝自网络): 来自产品工程的高级维护用户 David 打电话说:“为什么我不能在您部署的这些新机器上编译 supercode.c”。 您会问他:“您运行的是什么机器?” David 答道:“ Posh”。(这个虚够的公司将它的 5 台生产服务器以纪念 Spice Girls 的方式命名)。这下您可以大显身手了,另一台机器由 Dav…

    系统运维 2016-08-15
  • openvpn安装配置过程

    前言     之前为了方便远程办公时访问公司的内部系统,如:svn、OA、wiki、禅道等等;通通在防火墙上做了端口映射。然后有个内部系统被黑了,各种弱口令没办法。果断关闭端口映射,看来还是得搭建个VPN服务器,vpn设备感觉大材小用。马上就想到了开源的openvpn,下面就来介绍openvpn的安装配置过程。 ope…

    Linux干货 2015-05-11
  • linux bash环境变量简单总结

    一.环境变量简介Linux是一个多用户的操作系统。每个用户登录系统后,都会有一个专用的运行环境。通常每个用户默认的环境都 是相同的,这个默认环境实际上就是一组环境变量的定义。 环境变量是全局的,设置好的环境变量可以被所有当前用户所运行的程序所使用。 用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。 …

    Linux干货 2015-09-14