Linux程序包管理之RPM

前言


Linux平台上常见的软件包格式主要有三种,分别是源码格式包、通用二进制格式包和rpm格式包本文主要讲解rpm格式包安装及管理。RPM是Redhat Package Manager的缩写,是由Redhat公司开发的Linux软件包管理具,因其便捷的管理方式与开源思想,逐渐被其他Linux发行商所采用,现已成Linux平台下通用的软件包管理方式。

rpm包的命名格式


name-version-release.arch.rpm

name:软件包名字

version:由主版本号.次版本号.发行号组成(同源代码包)

主版本号改变:重大改进

次版本号改变:某个子功能发生重大变化

发行号改变:修正了部分bug,调整了一点功能

release:rpm自身的发行号,与程序源码的发行号无关,仅用于标识对rpm包不同制作的修订;同时,release还包含此包适用的OS

arch:适用硬件平台

例如:httpd-2.2.15-39.el6.x86_64.rpm

一个程序有20个功能:常用功能有8个,特殊A:3个,特殊B:6个,二次开发相关功能:3个,而rpm包可能只包含其中的几个,所以如果有需要还需手动编译,在此略提一下。

分包机制


核心包,主包命名方式与源程序一致:

例如:httpd-2.2.15-39.el6.x86_64.rpm

子包:httpd-tools-2.2.15-39.el6.x86_64.rpm

OS Vendor: 系统发行商提供的包

获取rpm包的途径

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

镜像:

http://mirrors.163.com

http://mirrors.sohu.com

2、项目的官网

源代码

rpm包

3、第三方机构或个人制作并公开发布的rpm包

http://rpmfind.net

http://rpm.pbone.net

可靠的途径:EPEL

Fedora-EPEL

rpm包的合法性验正


包的制作者使用单向加密提取原始数据的特征码,而后使用自己的私钥加密这段特性码,附加原始数据后面。通过验证可得知:rpm包来源合法性和完整性。

验正过程:

前提:必须通过可靠途径获取到包制作者的公钥。

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

2、使用与制作者同样的单向加密算法提取原始数据的特征码,并与解密出来的特征作比对,相同,则意味着软件包完整。

导入:
rpm --import /path/to/key_file  #导入公钥
rpm -qa gpg-pubkey*             #显示所有已经导入的gpg格式的公钥
rpm -qi gpg-pubkey-NAME         #显示密钥详细信息
检查包:安装过程中会自动执行
手动检查:
rpm -K /path/to/package_file
rpm --checksig /path/to/package_file
rpm -K --nodigest              #不检查包完整性
rpm -K --nosignature           #不检查来源合法性[object Object]

1.jpg

RPM管理之安装


命令格式:

rpm [option] /path/to/package_file 

-i:安装
-v:显示详细信息         #想更详细显示可用-vv -vvv
-h:显示安装进度        #一个“#”代表2%
-ivh:一般组合使用
--test:测试安装
--nodepes:忽略依赖关系  #能安装上,但可能无法运行
--replacepkgs:重新安装 #如果原有配置文件作了修改,很有可能不执行替换,而是将生成的配置文件重命名为 .rpmnew

2.jpg

RPM管理之卸载


命令格式:

rpm [option] package_name

-e:卸载
--nodeps:忽略依赖关系  #能卸载,但依赖于此包程序包可能会运行不正常(建议一并卸载)

3.jpg

RPM管理之升级


-Uvh:升级或安装       #如果软件包没有安装则安装;否则,升级

-Fvh:升级             #需要升级的软件包必须已经安装
--force: 强制升级      #升级后可能存在版本冲突
注意:内核不应该直接升级,而是安装,系统允许多内核并存

RPM管理之查询


命令格式:

rpm [option] package_name

rpm -q package_name:查询某包是否安装

4.jpg

rpm -qa:查询所有已经安装的包
按条件过滤:rpm -qa | grep 'PATTERN'

5.jpg

rpm -qi package_name:查询包的描述信息

6.jpg

rpm -ql package_name:查询某包安装生成了哪些文件
rpm -qc package_name:查询某包安装生成了哪些配置文件
rpm -qd package_name:查询某包安装生成了哪些帮助文件

7.jpg

rpm -q --scripts package_name:查询程序包的相关脚本
#脚本有四类:
preinstall:安装前脚本
postinstall: 安装后脚本
preuninstall: 卸载前脚本
postuninstall: 卸载后脚本
#

8.jpg

rpm -qf /path/to/some_file:查询某文件是由哪个包安装生成的

9.jpg

rpm {-qpi|-qpl|-qpc|-qpd} /path/to/package_file:对尚未安装的包执行查询

10.jpg

RPM管理之校验


命令格式:

rpm [option] package_name

rpm -V package_name:检查包安装生成的文件属性是否发生变化
#校验已安装的包的文件与保存在rpm数据库里的包的元数据,如果相同无任何显示,
#如果不同则显示改变的地方,下面是每个字符代表的意义:
#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
#手动改变httpd的文件

11.jpg

RPM管理之数据库重建


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

如果rpm的数据库损坏,会导致查询等相关操作无法正常进行,这时就需要重建数据库。

rpm --initdb:初始化   #如果事先没有数据库,会创建一个;如果有,则不创建
rpm --rebuilddb: 重建  #直接重建,覆盖原有的数据库

The end


好了,RMP管理就总结到这里,希望对新手有所帮助,以上仅个人学习整理,如有错漏,大神勿喷~~~

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

(0)
书生书生
上一篇 2015-03-27
下一篇 2015-03-28

相关推荐

  • 冒泡算法,源码安装http,yum浅谈

    生成10个随机数,采用冒泡算法进行升序或降序排序 #!/bin/bash #author:maoxiong QQ:111111111 #verson:1.0  date:2016-08  #illustrate: declare -a array #create 10 randomnum for num in {0..9} do &nbs…

    Linux干货 2016-08-26
  • Hadoop Hive与Hbase整合+thrift

    1.  简介 Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。 Hive与HBas…

    Linux干货 2015-04-13
  • Net22-第一周作业-linux基础知识

    1、描述计算机的组成及其功能。    计算机硬件由五大部件组成,分别是运算器、控制器、存储器、输入和输出设备组成。 其中,运算器和控制器合称为cpu,接受指令,加工数据。 存储器又分为内存和外存(硬盘、U盘等等),这里指的是内存,给cpu提供数据和指令。 输入设备对数据进行输入,如鼠标,键盘等。 输出设备对计算结果进行显示或者打印等,如显…

    Linux干货 2016-08-22
  • 常见RAID磁盘阵列组合简介

    常见RAID磁盘阵列组合简介    RAID,是Redundant Arrays of Inexpensive Disks的简写,磁盘阵列。现今的计算机世界,最值钱的是什么?软件、硬件?都不对,应该是承托在其之上的数据。对于我们来说,数据是无价的,硬件损坏了,可以重新购置。软件损坏了,也可以重新安装,但数据一旦丢失,就有可能再也找不回来了…

    Linux干货 2016-06-01
  • 运维必备的”武器库”

    作者总结的干货,拿来分享给大家,满满的全是干货 Blog:http://www.simlinux.comWeibo:http://weibo.com/geekwolf Bootstrapping: Kickstart、Cobbler、rpmbuild/xen、kvm、lxc、Openstack、 Cloudstack、Opennebula、Eucalyplu…

    Linux干货 2015-03-13
  • 对ssh的简单理解

    ssh:secure shell,protocol,22、tcp安全的远程登录 具体的软件实现:openssh:ssh协议的开源实现,centos默认安装dropbear:另一个开源实现ssh协议版本v1:基于crc-32做MAC,不安全;man-in-middle 已淘汰v2:双方主机协议选择安全的MAC方式基于DH算法做密钥交换,基于RSA或DSA实现身…

    2017-09-29

评论列表(2条)

  • stanley
    stanley 2015-03-28 22:48

    总结的有点有面,看起来也美观大气,不错

  • Asuka
    Asuka 2015-03-30 12:10

    很详细,而且排版看着也很舒服