Linux系統程序包管理之RPM

rpm包概述

RPM 是 Red at Package Manager 的縮寫,本意是Red Hat 軟件包管理,顧名思義是Red Hat 貢獻出來的軟件包管理工具;在Fedora 、Redhat、Mandriva、SuSE、YellowDog等主流發行版本,以及在這些版本基礎上二次開發出來的發行版采用。

RPM包里面都包含什么?里面包含可執行的二進制程序,也就是編譯好的執行程序,這個程序和Windows的軟件包中的.exe文件類似是可執行的;RPM包中還包括程序運行時所需要的文件,這也和Windows的軟件包類似,Windows的程序的運行,除了.exe文件以外,也有其它的文件。

一個RPM 包中的應用程序,有時除了自身所帶的附加文件保證其正常以外,還需要其它特定版本文件,這就是軟件包的依賴關系;依賴關系并不是Linux特有的,Windows操作系統中也是同樣存在的;比如我們在Windows系統中運行3D游戲,在安裝的時候,他可能會提示,要安裝Direct 9 ;Linux和Windows原理是差不多的。

rpm包管理

rpm包的安裝

rpm {-i|–install} [install-options] PACKAGE_FILE…

-v: verbose:顯示詳細信息
-vv: 顯示更詳細信息
-h: 以#顯示程序包管理執行進度

例如:

1.png

[install-options]

–test: 測試安裝,檢查并報告依賴關系及沖突消息等,但不真正執行安裝;dry run(干跑)模式

2.png

–nodeps:忽略依賴關系(不建議使用,有可能包安裝之后不能使用)

3.png

–replacepkgs| replacefiles:替代原來的包,重新安裝,但是replacepkgs不能夠替換配置文件,但是其他文件問題不大,可以把被改掉的配置文件刪除,然后再重新安裝

4.png

–nosignature: 不檢查來源合法性

–nodigest:不檢查包完整性

–noscipts:不執行程序包腳本片斷(每一個程序包安裝時有可能需要運行一些腳本來做些準備操作,rpm包有可能會自帶腳本,安裝腳本有四類)   

四類:(了解)

%pre: 安裝前腳本;–nopre

%post: 安裝后腳本;–nopost

%preun: 卸載前腳本;–nopreun

%postun: 卸載后腳本;–nopostun

rpm包升級

rpm {-U|–upgrade} [install-options] PACKAGE_FILE…

rpm {-F|–freshen} [install-options] PACKAGE_FILE…

upgrade:安裝有舊版程序包,則“升級”

        如果不存在舊版程序包,則“安裝”

freshen:安裝有舊版程序包,則“升級”

            如果不存在舊版程序包,則不執行升級操作

rpm -Uvh PACKAGE_FILE …

rpm -Fvh PACKAGE_FILE …

–oldpackage:降級

–force: 強行升級

升級注意項

(1) 不要對內核做升級操作;Linux支持多內核版本并存,因此,對直接安裝新版本內核

(2) 如果原程序包的配置文件安裝后曾被修改,升級時,新版本的提供的同一個配置文件并不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)后保留

rpm包卸載

rpm {-e|–erase} [–allmatches] [–nodeps] [–noscripts] [–notriggers] [–test] PACKAGE_NAME …

--allmatches:卸載所有匹配指定名稱的程序包的各版本
--nodeps:忽略依賴關系
--test:測試卸載,dry run模式

rpm包查詢

rpm {-q|–query} [select-options] [query-options]

[select-options]

-a: 查詢已安裝的所有包(可以配合正則表達式使用)

5.png

-f: 查看指定的文件由哪個程序包安裝生成

6.png

-p rpmfile:針對尚未安裝的程序包文件做查詢操作;

rpm –qpi :查詢未安裝包的info

rpm –qpc:查詢未安裝包安裝之后生成的哪些配置文件

rpm –qp –scripts: 查詢未安裝包安裝時會運行哪些腳本

7.png

–whatprovides CAPABILITY:查詢指定的CAPABILITY(某種能力)由哪個包所提供

8.png

–whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴

9.png

rpm2cpio 包文件|cpio–itv預覽包內文件

10.png

rpm2cpio 包文件|cpio–id “*.conf”釋放包內文

[query-options]

–changelog:查詢rpm包的changelog

11.png

-c: 查詢指定程序提供的配置文件

12.png

-d: 查詢指定的程序包提供的文檔

13.png

-i: information 程序包相關的信息,版本號、大小、所屬的包組等

14.png

-l: 查看指定的程序包安裝后生成的所有文件;

15.png

–scripts:程序包自帶的腳本

16.png

-R: 查詢指定的程序包所依賴的CAPABILITY;(bash所依賴的)

17.png

–provides: 列出指定程序包所提供的CAPABILITY;

18.png

包校驗

rpm {-V|–verify} [select-options] [verify-options]

S file Size differs:文件的容量大小是否被改變

M Mode differs (includes permissions and file type):文件的類型或文件的屬性(rwx)是否被改變?如是否可運行等參數已被改變

5 digest (formerly MD5 sum) differs:MD5這一種指紋碼的內容已經不同和

D Device major/minor number mismatch:裝置的主/次代碼已經改變

L readLink(2) path mismatch:link路徑已被改變

U User ownership differs:文件的所屬人已被改變

G Group ownership differs:文件的所屬群組已經被改變

T mTimediffers:文件的創建時間已被改變

P capabilities differ:

19.png

包來源合法性驗正及完整性驗正:

完整性驗正:SHA256

來源合法性驗正:RSA

公鑰加密:

對稱加密:加密、解密使用同一密鑰;

非對稱加密:密鑰是成對兒的

public key: 公鑰,公開所有人

secret key: 私鑰, 不能公開

導入所需要公鑰:

CentOS 7發行版光盤提供:RPM-GPG-KEY-CentOS-7

rpm -K|checksigrpmfile檢查包的完整性和簽名

20.png

rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

21.png

rpm數據庫

rpm管理器數據庫路徑:/var/lib/rpm

數據庫重建:

rpm {–initdb|–rebuilddb}  數據庫維護

initdb: 初始化

如果事先不存在數據庫,則新建之

否則,不執行任何操作

示例:

先刪除/var/lib/rpm的所有數據塊文件模擬環境,在進行重建

22.png

如果不想破壞原有的數據庫,可以在其他路徑下重建

23.png

rebuilddb:重建

無論當前存在與否,直接重新創建數據庫

24.png

原創文章,作者:xiaoqing,如若轉載,請注明出處:http://www.www58058.com/39507

(0)
xiaoqingxiaoqing
上一篇 2016-08-24
下一篇 2016-08-24

相關推薦

  • 往期學員優秀博客范文,供大家參考結構框架和基本格式要求。

    http://123.57.218.140/16152http://123.57.218.140/15668http://123.57.218.140/9255http://123.57.218.140/16666

    Linux干貨 2016-11-28
  • Linux 第四天: (07月28日) Linux文件管理

    Linux 第四天: (07月28日) Linux文件管理         rootfs 根目錄文件系統 root filesystemLSB  Linux Standard BaseFHS 文件系統分層結構 Filesystem Hierarchy Standard     藍色表示 目…

    Linux干貨 2016-08-08
  • N26-博客作業-week10

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) 2、為運行于虛擬機上的CentOS 6添加一塊新硬件,提供兩個主分區;  (1) 為硬盤新建兩個主分區;并為其安裝grub;  (2) 為硬盤的第一個主分區提供內核和ramdisk文件; 為第二個分區提供rootfs;  (3) 為rootfs提供bas…

    2017-04-09
  • 運維面試題和答案

    1、簡述TCP三次握手四次揮手過程及各過程中客戶端和服務器端的狀態。 #三次握手 客戶端向服務器端發送SYN包,客戶端進入SYN_SEND狀態 服務器端收到客戶端發送的包返回ACK+SYN包,服務器端進入SYN_RECV狀態 客戶端收到服務器端返回的包再發回ACK包,客戶端進入ESTABLISHED狀態,服務器端收到包也進入ESTABLISHED狀態 客戶端…

    Linux干貨 2016-06-10
  • Linux發展史

    Linux發展史 Linux是一套自由加開放源代碼的類Unix操作系統,誕生于1991年10月5日(第一次正式向外公布),由芬蘭學生Linus Torvalds和后來陸續加入的眾多愛好者共同開發完成。 Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基于Linux內核,并且使用GNU工程各種工具和數據庫的操作系統。 li…

    Linux干貨 2017-05-20
  • iptables練習

    iptables實戰 1.開啟防火墻 systemctl start firewalld 2.清空所有的默認規則,定義自己的規則 iptables -F 查看此時的iptables iptables -nL Chain INPUT (policy ACCEPT) target prot opt source destination Chain FORWARD…

    2015-03-15
欧美性久久久久