rpm包管理

rpm包管理

rpm(RedHat Package Manager) 是RedHat公司發展的一種將軟件安裝到Linux系統的管理機制,也是一種數據庫記錄方法。

Linux系統上軟件的安裝主要分兩種方式,從廠商發布的tarball通過編譯來安裝;或者使用廠商已經在相應平臺上編譯好的二進制文件。

從源碼編譯安裝的程序,在漏洞修補以及軟件功能升級時太過麻煩,并且管理員不能清晰地知道系統上已經安裝了哪些軟件,以及相應的版本等摘要信息。

Linux發行商或者社區組織在固定的硬件平臺與操作系統上將需要安裝的軟件編譯好,然后將編譯好的軟件與相關文件打包成一個特殊格式的文件。此特殊文件中包含了預先檢測系統與依賴關系的腳本,并提供該軟件的文件信息。用戶取得該軟件后,通過特殊的命令安裝,首先會根據內部的腳本來檢測該軟件所依賴的前驅軟件是否存在,若安裝環境復合,就開始安裝。安裝完成后還會將該軟件的信息寫入軟件管理機制,以備將來進行升級、移除等動作。目前在Linux界軟件安裝方式最常見的有以下兩種:

  • dpkg,由Debian Linux社群開發,目前Debian系的Linux發行版大多使用dpkg機制來管理軟件,例如Ubuntu。

  • rpm, 由Red Hat公司開發,目前Fedora、CentOs、SuSE等發行版都使用該機制。

需要注意的是:因為rpm文件是已經編譯好的二進制文件,所以在使用時,硬件平臺和系統必須和編譯時一致。如果要用其他發行版提供的rpm軟件,可以下載srpm,也即某一rpm軟件對應的源碼(*.src.rpm命名),在使用srpm安裝軟件時,首先需要以rpm管理方式編譯程rpm文件,然后將編譯后的rpm包依照rpm包的安裝方法安裝至系統。

rpm包管理命令

  • rpm包安裝

只有root用戶有權限管理rpm包

rpm -ivh pkgs_name
    -i 安裝
    -v 顯示詳細信息
    -h 顯示安裝進度
        pkgs_name 可以是單個或多個rpm包文件名,也可以是rpm包路徑(如果可以連入互聯網的話,也可以是軟件包的互聯網地址)

此外rpm包在安裝時,還額外提供安裝選項可供選擇使用

--nodeps 忽略軟件安裝所需要考慮的依賴關系問題
--replacepkgs 重新安裝
--test 測試某rpm包安裝到環境中,是否有依賴關系問題
--prefix /path/to/somewhere 執行新的安裝路徑
--nosignature 不檢查包簽名信息,不檢查包來源的合法性
--nodigest 不檢查包的完整性
--no[pre|post|preun|postun] 選擇安裝或卸載前后不執行安裝包自帶腳本
  • rpm包卸載

rpm包卸載時應注意依賴關系問題

rpm -e program_name
rpm -e --nodeps program_name 強制卸載,會影響依賴此軟件的軟件的正常使用

rpm包的安裝、移除以及升級操作有時誤操作可能會導致rpm數據庫/var/lib/rpm內的文件損壞,可以使用–rebuilddb 來重建rpm數據庫

rpm --rebuilddb 
rpm --initdb 初始化數據庫
  • rpm包查詢

rpm查詢操作,其實查詢的/var/lib/rpm/目錄下的數據庫文件。此外也可以查詢系統上未安裝的rpm包的相關信息

rpm -q program_name 確認相應軟件是否已被安裝
    -qa 列出系統上所有軟件名稱
    -qi 列出軟件的相關信息
    -ql 列出軟件安裝所生成的文件
    -qc 指出軟件的配置文件
    -qd 列出軟件包提供的文檔
    -qR 列出該軟件所依賴的軟件
    --whatrequites capability 查詢指定capability被哪些軟件所依賴
    -qf /path/to/file 查詢指定文件為哪個軟件安裝所產生的
    -qp[idclR] 查詢某個rpm文件內的信息,并非已安裝的軟件的信息
    --whatprovides capability 查詢指定capability由那個軟件所提供
    --script 查詢rpm程序包自帶的腳本
  • rpm安裝程序升級

升級rpm包安裝的程序

rpm -Uvh program_name 如果該軟件并未被安裝則會自動安裝
rpm -Fvh program_name 如果系統上并沒有該軟件,則不會執行相應操作
  • rpm安裝程序校驗

校驗rpm安裝程序是否被篡改過,一般configure文件在使用過程中可能被修改,但binary program被修改就需要特別注意

rpm -V program_name 檢查軟件所屬的文件是否被修改過
    -Va 列出系統上rpm包安裝的程序所屬的文件中所有被修改過的
    -Vp 后跟rpm包文件名,列出對應的安裝程序中被修改過的文件
    -Vf 檢查某個文件是被修改過

    SM5DLUGT c filename

    S :(file Size differs) 文件的容量大小是否被改變
    M :(Mode differs) 文件的類型或文件的屬性 (rwx) 是否被改變?如是否可運行等參數已被改變
    5 :(MD5 sum differs) MD5 這一種指紋碼的內容已經不同
    D :(Device major/minor number mis-match) 裝置的主/次代碼已經改變
    L :(readLink(2) path mis-match) Link 路徑已被改變
    U :(User ownership differs) 文件的所屬人已被改變
    G :(Group ownership differs) 文件的所屬群組已被改變
    T :(mTime differs) 文件的創建時間已被改變

    c :配置檔 (config file)
    d :文件數據檔 (documentation)
    g :鬼文件~通常是該文件不被某個軟件所包含,較少發生!(ghost file)
    l :授權文件 (license file)
    r :讀我文件 (read me)
  • rpm包來源合法性和完整性驗證

首先安裝rpm包發行組織釋出的公鑰;每次安裝rpm包時,rpm命令會讀取rpm包文件的簽名,并與公鑰比對;如果相同則順利安裝,如果不同則停止安裝(-ivh –signature 選項也是針對此處)。

rpm --import /path/to/public-key 導入公鑰
rpm -qi `rpm -qa | grep pubkey` 查看已導入的公鑰信息

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

(0)
N24_fynlN24_fynl
上一篇 2016-11-18 20:20
下一篇 2016-11-18 22:58

相關推薦

  • HipHop PHP實戰(詳解web運行模式)

    Note: These code examples assume the HipHop compiler is fully built. 1 . Setting Up Your Environment (構建環境) To get started, you need to configure two environment variables. cd…

    Linux干貨 2015-04-10
  • 磁盤管理

    設備文件 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
  • 15-2用戶系統資源配額

    用戶資源系統配額 在系統中,允許系統用戶使用存儲空間,但是不能限制的讓用戶隨意使用存儲空間,對用戶存儲空間的設定就是用戶資源系統配額。 下面以/home 為例,通常如果系統中有一定的用戶,會把用戶的家目錄作為一個單獨的分區,從而實現更好的管理。下面具體講解如何把用戶家目錄從根系統分區分離出來進行磁盤配額。 1、拿出一個未使用的分區,把用戶家目錄的數據拷貝到新…

    Linux干貨 2016-12-02
  • python 10第一周博客作業

    1. 修改提示符格式 PS1=”\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]” 2.命令別名:alias NAME=’VALUE’ ? 如果想永久有效,要定義在配置文件中 僅對當前用戶:~/.bashrc ? 對所有用戶有效:/etc/bashrc 3.日期和時間:相關命令 d…

    Linux干貨 2018-03-17
  • 搜索引擎-網絡爬蟲

     通用搜索引擎的處理對象是互聯網網頁,目前網頁數量以百億計,搜索引擎的網絡爬蟲能夠高效地將海量的網頁數據傳下載到本地,在本地 形成互聯網網頁的鏡像備份。它是搜索引擎系統中很關鍵也很基礎的構件。 1. 網絡爬蟲本質就是瀏覽器http請求。      瀏覽器和網絡爬蟲是兩種不同的網絡客戶端,都以相同的方式來獲取網…

    Linux干貨 2015-11-18
欧美性久久久久