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
下一篇 2016-11-18

相關推薦

  • 記事本操作的小小小技巧

    原創作品,允許轉載,轉載時請務必以超鏈接形式標明文章 原始出處 、作者信息和本聲明。否則將追究法律責任。http://jeffyyko.blog.51cto.com/28563/140063       大家在查看文本文件的時候,如果內容很多,想快速到達某一位置可能比較麻煩,這時如果按住shift,再點擊右側…

    Linux干貨 2015-03-26
  • HAProxy七種調度方法的簡單示意圖

    看了三個月,中間因出差和其他事沒有看估計也有十幾天,剛把35天的視頻看完。很多內容都記不住,待第一次看完后再回頭看吧。 現在想,對內容進行簡單的畫圖,把基本的體現出來,對記憶和回顧應該有幫助。

    Linux干貨 2016-07-26
  • 網絡接口Bonding以及網絡組

    網絡接口Bonding就是將多塊網卡綁定同一IP地址對外提供服務,可以實現高可用或者負載均衡。當然,直接給兩塊網卡設置同一IP地址是不可能的。通過bonding,虛擬一塊網卡對外提供連接,物理網卡的被修改為相同的MAC地址。 網絡組 :網絡組:是將多個網卡聚合在一起方法,從而實現冗錯和提高吞吐量。網絡組不同于舊版中bonding技術,提供更好的性能…

    Linux干貨 2016-11-23
  • 從Linux小白到大牛——與狼共舞的日子11

    馬哥教育網絡班21期+第10周課程練習 1、詳細描述一次加密通訊的過程,結合圖示最佳。 加密過程 1.使用單向加密算法,提取A的文件的特征碼。 2.使用A的私鑰對提取出來的特征碼進行加密,把加密后的特征碼附加在A的文件的后面。 3.使用對稱加密對剛剛的A的文件和加密后的特征碼進行加密,生成對稱加密密鑰 4.使用B的公鑰對第3步驟的對稱加密的密鑰進行加密,加密…

    Linux干貨 2016-12-05
  • linux中的磁盤陣列(RAID)

    RAID: Redundant Arrays of Inexpensive Disks  Independent 提高IO能力: 通過磁盤并行讀寫實現 提高耐用性能: 磁盤冗余來實現 級別: 多塊磁盤組織在一起的工作方式有所不同: RAID是的方式: 外接式磁盤陣列: 通過擴展卡提供適配能力 內接式RAID: 主板集成RAID控制器 Softwar…

    Linux干貨 2016-08-29
  • Linux下的進程調度與作業管理

    Linux下的進程調度與作業管理 一、概述 1.1 進程的相關概念: 通過前面的幾個章節,我們幾乎已經學習了很多的linux的基礎,這個章節我們講一下linux下的進程管理,就像windows 下的進程一樣,我們知道windows 下有一個任務管理器,專門用來管理進程,我們首先看一下windows 的任務管理器: 從這2個圖我們可以看出,windows 下的…

    Linux干貨 2016-10-17
欧美性久久久久