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.www58058.com/18444

(0)
FoxProFoxPro
上一篇 2016-06-22 15:39
下一篇 2016-06-22 15:41

相關推薦

  • Shell腳本編程基礎之一

      Linux為高效管理系統,提供了CLI命令行接口,供用戶在命令提示符下輸入命令,它有很多bash shell基礎特,根據這些特性能夠很靈活的使用命令,也支持使同時輸入多個命令執行,命令之間用冒號分隔;但是要完成復雜多次重復性的操作,非常不便,系統管理工作變得很是繁忙,很難輕松完成工作任務;不過Linux的shell支持腳本編程,通過編寫純文本格…

    Linux干貨 2016-08-15
  • 管道及重定向

    管道及重定向 1、重定向 在Linux中有時我們在命令的執行過程中,不想將執行結果顯示到屏幕上,或者將其結果輸出到其他位置 這時就需要重定向來解決這個問題了 首先了解一下Linux中的3種I/O設備: 0:標準輸入 1:標準輸出 2:標準錯誤輸出 輸出重定向:> >> 輸入重定向: < << >:將標準輸出重定向到文…

    Linux干貨 2017-07-28
  • 整型、浮點型在內存中的存儲方式

      在學習C語言的過程中,有時候會想,數據到底是以什么樣的方式在內存中存儲的呢?經過一段時間的查閱資料,小編終于整理了一些…… 以VC6.0編譯器為測試環境(int型為4Byte) 先簡介一下大小端模式,具體資料可參考 http://blog.csdn.net/ce123_zhouwei/article/details/6971544  …

    Linux干貨 2016-01-14
  • 磁盤管理

    設備文件 I/O Ports: I/O 設備地址 一切皆文件: open(), read(), write(), close() 設備類型: 塊設備:block ,存取單位“塊”,磁盤 [root@localhost ~]# ll /dev/ brw-rw—-. 1 root disk 253, 0 Apr 29 03:53 dm-0 塊設備 brw-r…

    2017-04-28
  • Linux 第二天: (07月22日) Linux入門

    Linux 第二天: (07月22日) Linux入門       root管理員帳戶,超級用戶,除非必要,不要用root登錄 /dev/console 物理終端/dev/tty 虛擬終端, CentOS 6默認6個虛擬終端/dev/pts 模擬終端tty 查看當前終端設備     GUI 圖形用戶界面 GN…

    Linux干貨 2016-08-08
  • Mysql之運用MHA的功能實現服務高可用

    MHA介紹 (Master High Availability) MHA(Master HA)是一款開源的 MySQL 的高可用程序,它為 MySQL 主從復制架構提供 了 automating master failover 功能。MHA 在監控到 master 節點故障時,會提升其中擁有最新數據的 slave 節點成為新的 master 節點,在此期間,…

    2017-09-14

評論列表(1條)

  • stanley
    stanley 2016-06-22 15:41

    贊,樣式上調整的很專業,

欧美性久久久久