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

相关推荐

  • 文本处理工具-习题

    1 、找出ifconfig 命令结果中本机的所有IPv4地址 [root@centos7 ~]# ifconfig |head -2 |tail-1 |cut -dn -f2 |cut -d" " -f2 2 、查出分区空间使用率的最大百分比值 [root@centos7 ~]# df |cut -c44-46 |sort -n|tail…

    Linux干货 2016-08-15
  • N25-第14周博客作业

    系统的INPUT和OUTPUT默认策略为DROP; iptables -P INPUT DROP iptables -P OUTPUT DROP [root@localhost ~]# iptables -L -n  Chain INPUT…

    Linux干货 2017-05-21
  • 22期第十一周课堂练习

    1、详细描述一次加密通讯的过程,结合图示最佳。 发送方:BOB                        &nbsp…

    Linux干货 2016-12-12
  • tomcat优化

    安装过程就不多说了,本次主要说明我在实际工作中的一些优化。    1,修改tomcat的运行模式,常见的有 bio,nio, apr三种    我选择的apr模式,这种对tomcat的性能有较大提高. a:可以根据压力测试工具来进行测试观察。(其实我没对修改apr模式后压测,我直接问百度的) b:重新启动tomcat后…

    Linux干货 2016-06-28
  • 网络管理之虚拟网卡实现一个网卡多个地址

    一.概述 在虚拟机中实现一个网卡多个地址 完成这个功能之前需要先关闭NetworkManager功能(在centos 6系统)         chkconfig NetworkManager off   而且我们要实现虚拟网卡一个网卡多个地址只是对虚拟机有用 网卡别名…

    Linux干货 2016-09-16

评论列表(1条)

  • stanley
    stanley 2016-06-22 15:41

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