rpm 程序包管理器的基本使用

目录


  1. 安装程序包

  2. 卸载

  3. 升级

  4. 查询

  5. 校验

  6. 来源合法性和完整性验证

  7. 数据库重建

rpm 程序包管理器的基本使用

1     安装程序包

rpm -ivh /path/to/package_file

-v     显示执行过程的参数。
-h     使用 # 来表示安装进度。

>>  –test选项

可以用来仅测试是否可以安装,而不是真的安装这个 rpm 包。

>> 依赖关系

如果安装的程序,有许多有依赖关系的包需要安装。我们则需要先解决依赖关系,才能安装这个程序包。

当然我们也可以忽略依赖关系(参数:–nodeps)。但该方法可能会导致安装程序无法运行。

>> 重新安装(–replacepkgs)

如果配置文件被修改过,则不会被替换。新生成的配置文件被另存为.new 

2     卸载程序包

rpm -ev  package_name

## 这里就不需要路径了,直接指定程序包名,即可卸载

>> 依赖关系

如果想要卸载的 rpm 包,被其他包依赖。则,我们可以将依赖与此包的所有包一并卸载。

同样,我们可以使用 –nodeps 参数忽略依赖关系,强行卸载此包。

注意,如果包的配置文件被修改过,那么卸载时,这个修改过的配置文件不会被卸载,而是重命名后保留。

3     升级程序包

也就是新版本,替代老版本。(不应该对内核执行升级操作。)

rpm -U | -F   /path/to/package_file

-U     升级或安装
-F     纯升级(需要有老版本程序)

>> 依赖关系

对于被依赖的包,升级之后可能导致版本冲突。我们可以使用 –force 强行升级。当然同样会产生问题。

4     查询

>> 查询某包是否安装

rpm -q package_name
[root@localhost Packages]# rpm -q php
package php is not installed

## 可以一次查询多个,用空格隔开。

>> 查询所有已安装的包

rpm -qa

## 查询结果,可以通过 grep 进一步筛选

>> 查询程序包描述信息(已安装)

[root@localhost Packages]# rpm -qi bash
Name        : bash                         Relocations: (not relocatable)
Version     : 4.1.2                             Vendor: CentOS
Release     : 15.el6_4                      Build Date: Thu 18 Jul 2013 06:21:24 AM PDT
Install Date: Sat 17 Oct 2015 03:10:09 PM PDT      Build Host: c6b10.bsys.dev.centos.org
Group       : System Environment/Shells     Source RPM: bash-4.1.2-15.el6_4.src.rpm
Size        : 3139291                          License: GPLv3+
Signature   : RSA/SHA1, Thu 18 Jul 2013 06:46:10 AM PDT, Key ID 0946fca2c105b9de
Packager    : CentOS BuildSystem <http://bugs.centos.org>
URL         : http://www.gnu.org/software/bash
Summary     : The GNU Bourne Again shell
Description :
The GNU Bourne Again shell (Bash) is a shell or command language
interpreter that is compatible with the Bourne shell (sh). Bash
incorporates useful features from the Korn shell (ksh) and the C shell
(csh). Most sh scripts can be run by bash without modification.


## relocations          安装过程是否允许自行指定安装位置

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

rpm -ql package_name


[root@localhost Packages]# rpm -ql bash
/bin/bash
/bin/sh
/etc/skel/.bash_logout
/etc/skel/.bash_profile
/etc/skel/.bashrc
/usr/bin/bashbug-64
...

    (1)我们也可以单独查看生成的配置文件

[root@localhost Packages]# rpm -qc bash
/etc/skel/.bash_logout
/etc/skel/.bash_profile
/etc/skel/.bashrc

    (2)查询安装生成的帮助文件

[root@localhost Packages]# rpm -qd bash
/usr/share/doc/bash-4.1.2/COPYING
/usr/share/info/bash.info.gz
/usr/share/man/man1/..1.gz
/usr/share/man/man1/:.1.gz

    (3) 查询程序包的脚本文件

[root@localhost Packages]# rpm -q --scripts bash


其中包括:
preinstall
postinstall
preuninstall
postunintall

    (4) 查询某文件是由哪个包生成的

[root@localhost Packages]# rpm -qf /etc/fstab
setup-2.8.14-20.el6_4.1.noarch

    (5) 对尚未安装的包执行查询

[root@localhost Packages]# rpm -qpc zsh-4.3.10-7.el6.i686.rpm
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc

## 在之前所有查询基础上,使用 p 参数。实现查询未安装程序包的各种信息。

5     校验

主要是检查程序包安装后,文件属性是否发生变化。

rpm -V package_name

如果校验结果正常,则不会输出任何结果。如果有不一致的,就会显示。 显示的输出格式是 8 位长得字符串,没有变化的,以"." 点号来表示。

  • S     File Size

  • M    Mode

  • 5     MD5 校验码改变

  • D     主设备或次设备号发生改变

  • L     ReadLink 路径

  • U     属主

  • G     属组

  • T     时间

  • P     capabilityes 改变。

6     来源合法性和完整性检验

要完成检验,我们首先要导入程序包制作者的公钥。如果是光盘,则在光盘上会提供。

-r--r--r--. 2 root root   1706 Nov 27  2013 RPM-GPG-KEY-CentOS-6   

## 光盘上提供的制作者公钥信息

>> 导入公钥

[root@localhost CDROM]# rpm --import /media/CDROM/RPM-GPG-KEY-CentOS-6

>> 显示已导入的所有公钥

[root@localhost CDROM]# rpm -qa gpg-pubkey*
gpg-pubkey-c105b9de-4e0fd3a3
gpg-pubkey-0608b895-4bd22942

>> 显示某公钥详细信息

[root@localhost CDROM]# rpm -qi gpg-pubkey-0608b895-4bd22942
Name        : gpg-pubkey                   Relocations: (not relocatable)
Version     : 0608b895                          Vendor: (none)
Release     : 4bd22942                      Build Date: Tue 29 Mar 2016 02:16:32 AM PDT
Install Date: Tue 29 Mar 2016 02:16:32 AM PDT      Build Host: localhost
Group       : Public Keys                   Source RPM: (none)
Size        : 0                                License: pubkey
Signature   : (none)
Summary     : gpg(EPEL (6) <epel@fedoraproject.org>)
Description :
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: rpm-4.8.0 (NSS-3)
mQINBEvSKUIBEADLGnUj24ZVKW7liFN/JA5CgtzlNnKs7sBg7fVbNWryiE3URbn1
JXvrdwHtkKyY96/ifZ1Ld3lE2gOF61bGZ2CWwJNee76Sp9Z+isP8RQXbG5jwj/4B
M9HK7phktqFVJ8VbY2jfTjcfxRvGM8YBwXF8hx0CDZURAjvf1xRSQJ7iAo58qcHn
XtxOAvQmAbR9z6Q/h/D+Y/PhoIJp1OV4VNHCbCs9M7HUVBpgC53PDcTUQuwcgeY6
pQgo9eT1eLNSZVrJ5Bctivl1UcD6P6CIGkkeT2gNhqindRPngUXGXW7Qzoefe+fV
QqJSm7Tq2q9oqVZ46J964waCRItRySpuW5dxZO34WM6wsw2BP2MlACbH4l3luqtp
Xo3Bvfnk+HAFH3HcMuwdaulxv7zYKXCfNoSfgrpEfo2Ex4Im/I3WdtwME/Gbnwdq
3VJzgAxLVFhczDHwNkjmIdPAlNJ9/ixRjip4dgZtW8VcBCrNoL+LhDrIfjvnLdRu
vBHy9P3sCF7FZycaHlMWP6RiLtHnEMGcbZ8QpQHi2dReU1wyr9QgguGU+jqSXYar
1yEcsdRGasppNIZ8+Qawbm/a4doT10TEtPArhSoHlwbvqTDYjtfV92lC/2iwgO6g
YgG9XrO4V8dV39Ffm7oLFfvTbg5mv4Q/E6AWo/gkjmtxkculbyAvjFtYAQARAQAB
tCFFUEVMICg2KSA8ZXBlbEBmZWRvcmFwcm9qZWN0Lm9yZz6JAjYEEwECACAFAkvS
KUICGw8GCwkIBwMCBBUCCAMEFgIDAQIeAQIXgAAKCRA7Sd8qBgi4lR/GD/wLGPv9
qO39eyb9NlrwfKdUEo1tHxKdrhNz+XYrO4yVDTBZRPSuvL2yaoeSIhQOKhNPfEgT
9mdsbsgcfmoHxmGVcn+lbheWsSvcgrXuz0gLt8TGGKGGROAoLXpuUsb1HNtKEOwP
Q4z1uQ2nOz5hLRyDOV0I2LwYV8BjGIjBKUMFEUxFTsL7XOZkrAg/WbTH2PW3hrfS
WtcRA7EYonI3B80d39ffws7SmyKbS5PmZjqOPuTvV2F0tMhKIhncBwoojWZPExft
HpKhzKVh8fdDO/3P1y1Fk3Cin8UbCO9MWMFNR27fVzCANlEPljsHA+3Ez4F7uboF
p0OOEov4Yyi4BEbgqZnthTG4ub9nyiupIZ3ckPHr3nVcDUGcL6lQD/nkmNVIeLYP
x1uHPOSlWfuojAYgzRH6LL7Idg4FHHBA0to7FW8dQXFIOyNiJFAOT2j8P5+tVdq8
wB0PDSH8yRpn4HdJ9RYquau4OkjluxOWf0uRaS//SUcCZh+1/KBEOmcvBHYRZA5J
l/nakCgxGb2paQOzqqpOcHKvlyLuzO5uybMXaipLExTGJXBlXrbbASfXa/yGYSAG
iVrGz9CE6676dMlm8F+s3XXE13QZrXmjloc6jwOljnfAkjTGXjiB7OULESed96MR
XtfLk0W5Ab9pd7tKDR6QHI7rgHXfCopRnZ2VVQ==
=V/6I
-----END PGP PUBLIC KEY BLOCK-----

>> 利用密钥检查程序包

[root@localhost CDROM]# rpm -K ./Packages/zsh-4.3.10-7.el6.i686.rpm
./Packages/zsh-4.3.10-7.el6.i686.rpm: rsa sha1 (md5) pgp md5 OK  



## 上面同时会检查完整性和来源合法性,我们也可以单独检查
--nodigest     不检查完整性
--nosignature  不检查来源合法性

7     rpm 数据库重建

rpm 数据库用来追踪每个程序包的依赖关系。数据库存放在 /var/lib/rpm 目录下,其中包括

[root@localhost CDROM]# ll /var/lib/rpm/
total 66820
-rw-r--r--. 1 root root  5513216 Jun  9 04:37 Basenames
-rw-r--r--. 1 root root    12288 Apr  2 18:42 Conflictname
-rw-r--r--. 1 root root  1474560 Jun  9 04:37 Dirnames
-rw-r--r--. 1 root root 10182656 Jun  9 04:37 Filedigests
-rw-r--r--. 1 root root    24576 Jun  9 04:37 Group
-rw-r--r--. 1 root root    16384 Jun  9 04:37 Installtid
-rw-r--r--. 1 root root    40960 Jun  9 04:37 Name
-rw-r--r--. 1 root root    24576 Jun  9 04:37 Obsoletename
-rw-r--r--. 1 root root 50925568 Jun  9 04:37 Packages
-rw-r--r--. 1 root root  1310720 Jun  9 04:37 Providename
-rw-r--r--. 1 root root   614400 Jun  9 04:37 Provideversion
-rw-r--r--. 1 root root    12288 Mar 29 02:16 Pubkeys
-rw-r--r--. 1 root root   446464 Jun  9 04:37 Requirename
-rw-r--r--. 1 root root   241664 Jun  9 04:37 Requireversion
-rw-r--r--. 1 root root    86016 Jun  9 04:37 Sha1header
-rw-r--r--. 1 root root    81920 Jun  9 04:37 Sigmd5
-rw-r--r--. 1 root root    12288 Jun  9 04:37 Triggername

## 如果这些文件损坏,将会对 rpm 的安装,卸载,查询等功能产生影响。


>> 初始化

rpm --initdb

## 如果事先没有库,则新建。如果有,则不执行

>> 重建

rpm --rebuilddb

## 直接重建,覆盖原有数据

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

(0)
FoxProFoxPro
上一篇 2016-06-22
下一篇 2016-06-22

相关推荐

  • Tomcat基于memcached会话共享

    安装两台memcache,基于tomcat做会话同步;(只对动态内容缓存,用于追踪用户会话) 前提:两个tomcat节点:172.16.100.7(tomcatA.magedu.com),172.16.100.8(tomcatB.magedu.com)两个memcached节点:172.16.100.9, 172.16.100.10一个负载均衡节点:172.…

    2017-05-25
  • Linux基础学习总结(六)

    一、创建一个10G分区,并格式为ext4文件系统; 1、要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl; [root@blog ~]# fdisk /dev/sdfCommand (m for help): nCommand action e extended p primary partition (1…

    2016-11-06
  • linux用户与组管理

    一、linux用户与组管理的基本介绍 1、任何一个用户想要使用Linux系统都要向管理员申请一个账号,对这些账号的管理即是对用户的管理,所谓组,就是多个账号的集合。用户和组管理可以提高用户的管理效率、工作效率以及系统的安全性,比如将同一个部门的成员放在一个组里并设置权限,这样可有效的对资源共享,同时可以避免其他部门的人恶意破坏。 2、用户和组的管理内容一般有…

    Linux干货 2016-08-02
  • MariaDB之MHA配置

    工作拓扑 一、MHA简明:     MHA(Master HA)是一款开源的MySQL的高可用程序,它为MySQL主从复制架构提供了    automating master failover 功能。MHA在监控到master节点故障时,会提升其中    拥有最新数据的…

    2014-10-08
  • linux网络管理

    什么是计算机网络     计算机网络是指将不同地理位置上,具有独立功能的计算机和网络设备通过通信链路连接起来,通过操作系统,网络管理软件,和网络通信协议的共同组合下的计算机系统团体,实现资源共享,信息传递的网络。计算机网络的组成部分有各种微小大型计算机,网桥,交换机,路由器,传输介质等网络设备,相应的软件系统,相应的通…

    Linux干货 2016-09-05
  • 二叉树迭代器算法

    二叉树(Binary Tree)的前序、中序和后续遍历是算法和数据结构中的基本问题,基于递归的二叉树遍历算法更是递归的经典应用。 假设二叉树结点定义如下: // C++ struct Node {     int value;     No…

    Linux干货 2016-08-15

评论列表(1条)

  • stanley
    stanley 2016-06-22 15:41

    赞,样式上调整的很专业,