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 21:22
下一篇 2016-08-24 21:22

相關推薦

  • rsync+inotify實時同步備份數據

    rsync同步 rsync+inotify實時同步備份數據 軟件簡介: rsync命令簡介: rsync命令是一個遠程數據同步工具,可通過LAN/WAN快速同步多臺主機間的文件。rsync使用所謂的“rsync算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。 rsync是一個功能非常強大…

    Linux干貨 2016-10-28
  • vim編譯器與shell腳本簡介

    一、vim文本編譯器       vi:Visual Interface,文本編輯器;   文本: ASCII Unicode  文本編輯種類:行編輯器:sed  ;全屏編輯器:nano,vi ,vim ;其他編輯器:gedit(圖形),g…

    Linux干貨 2016-11-24
  • 第二周博客作業

    1.Linux上的文件管理類命令都有那些,其常用的使用方法及其相關示例演示。
    2.Bash的工作特性之命令執行狀態返回值和命令行展開所涉及的內容及其示例演示。
    3.請使用命令行展開功能來完成以下的練習。
    4.文件的元數據信息有哪些,分別表示什么含義,如何查看?如何修改文件的時間戳信息。
    5.如何定義一個命令的別名,如何在命令中引用另一個命令的執行結果?
    6.顯示/var目錄下所有以1開頭,以一個小寫字母結尾,且中間至少出現一位數字(可以有其他字符)的文件或目錄。
    7.顯示/etc目錄下,以任意一個數字開頭,且以非數字結尾的文件或目錄。
    8.顯示/etc目錄下,以非字母開頭,后面跟了一個字母以及其他任意長度任意字符的文件或目錄。
    9.在/tmp目錄下創建以tgile開頭,后跟當前日期和時間的文件,文件名形如:tfile-2016-05-27-09-32-22
    10.復制/etc目錄下所有以p開頭,以非數字結尾的文件或目錄到/tmp/mytest1目錄中。
    11.復制/etc目錄下所有以.d結尾的文件或目錄到/tmp/mytest2目錄中。
    12.復制/etc目錄下所有以l或m或n開頭,以.conf結尾的文件至/tmp/mytest3目錄中。

    2018-03-22
  • SELinux——有趣的標簽

    SELinux ·SELinux: Secure Enhanced linux,工作與Linux內核中 ·DAC:Discretionary Access Control 自由訪問控制 ·MAC:Mandatory Access Control  強制訪問控制        &n…

    Linux干貨 2016-09-18
  • 軟硬鏈接區別及tr轉換命令

    軟硬鏈接的區別 (1)軟連接可以 跨文件系統 ,硬連接不可以 (2)關于 I節點的問題 。硬連接不管有多少個,都指向的是同一個I節點,會把 結點連接數增加,只要結點的連接數不是 0,文件就一直存在 ,不管你刪除的是源文件還是連接的文件。只         要有一個存在,文件就 存…

    Linux干貨 2016-08-08
  • N21天天第十周課程練習

    1、請詳細描述CentOS系統的啟動流程(詳細到每個過程系統做了哪些事情) CentOS主機按以下順序啟動 1、POST加電自檢 2、BIOS讀取CMOS中的BIOS設置的參數來識別基礎硬件,尋找到啟動設備 3、MBR 1)讀取啟動設備MBR中前446字節的bootloader 2)讀取MBR后的扇區用來識別grub以及內核kernel所在的區域 3)啟動g…

    Linux干貨 2016-09-26
欧美性久久久久