天天看點

如何使用RPM

1.什麼是RPM

    RPM Package Manager(RPM)是一個開放式的包管理系統,它既可以運作于RHEL系統,也可以運作于其他Linux或Unix系統。

1.1 RPM包的命名方式一般為:

            zip-3.0-1.el6.i686.rpm

            package name         zip

            version             3.0

            release             1

            major version         el6

            CPU architecture     i686

2.安裝,更新,重新整理和解除安裝

       rpm {-i|--install} [install-options] PACKAGE_FILE ...

            安裝一個包

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

            更新一個包到最新的版本,或者安裝一個包

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

            重新整理一個包到最新版本,同-U,但包必須先被安裝在系統上才會執行

            rpm -Fvh *.rpm         更新所有已經安裝的包

 2.1    安裝時加入-v可以獲得更多資訊,加入-h使用哈希符号顯示進度表,是以它們組合起來是這樣的

[[email protected] ~]# rpm -Uvh createrepo-0.9.9-18.el6.noarch.rpm

warning: createrepo-0.9.9-18.el6.noarch.rpm: Header V3 RSA/SHA1 Signature, key ID c105b9de: NOKEY

Preparing...                ########################################### [100%]

   1:createrepo             ########################################### [100%]

notice:Linux提供了兩個可以安裝包的選項(-U & -i),-U選項包含了安裝和更新,是以推薦使用-U選項,但

在安裝核心時,請使用-i選項,因為-U更新完成後會删除舊核心,如果更新完成之後的核心無法使用則會造成系統故障

未解決的依賴關系

    RPM安裝包有時會依賴于其它安裝包,這時需要被依賴包安裝才能正确運作

列如:

[[email protected] ~]# rpm -Uvh nginx-1.0.15-12.el6.i686.rpm

warning: nginx-1.0.15-12.el6.i686.rpm: Header V3 RSA/SHA256 Signature, key ID 0608b895: NOKEY

error: Failed dependencies:

    GeoIP is needed by nginx-1.0.15-12.el6.i686

    gd is needed by nginx-1.0.15-12.el6.i686

    libGeoIP.so.1 is needed by nginx-1.0.15-12.el6.i686

    libgd.so.2 is needed by nginx-1.0.15-12.el6.i686

    nginx-filesystem is needed by nginx-1.0.15-12.el6.i686

    nginx-filesystem = 1.0.15-12.el6 is needed by nginx-1.0.15-12.el6.i686

notice:如果想nginx包安裝,這時有兩個方法:

    方法1:

        安裝對應的RPM包,解決依賴關系

    方法2:

        使用--nodeps選項忽略依賴關系(雖然可以安裝,但可能導緻程式運作不正常)

        rpm -Uvh --nodeps nginx-1.0.15-12.el6.i686.rpm

配置檔案被更改

    當您更新一個包時,可能會出現一下的資訊,

    saving /etc/ntp.conf as /etc/ntp.conf.rpmsave

    這是因為您對舊版本程式配置檔案修改不能被新版本相容,是以RPM儲存了之前修改的檔案,并

    安裝了一個新的

2.2 解除安裝

    rpm -e nginx

    #解除安裝時使用包名,而不是包的全部名稱

3.查詢,校驗及RPM資料庫管理

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

    -q <Package_Name>    對某包進行查詢

    -p <Package_Name>    對未安裝的包進行查詢

    -a                     在所有已被安裝的包中查詢

    -f <File_Name>        查詢檔案被哪個包擁有

        下列選項用于選擇指定查詢哪些資訊

            -i 顯示某包的詳細資訊

            -l 顯示某包中的所有檔案

            -d 顯示某包的說明文檔

            -c 顯示某包的配置檔案

例:

    rpm -qpi <Package_File>     查詢一個尚未安裝包的詳細資訊

    rpm -ql <Package_Name>         查詢某個已被安裝包生成的檔案清單

3.1  校驗

    rpm -V <package_name>        

    用于檢查安裝生成的檔案屬性是否發生變化,主要描述有

    5        MD5檢查

    S        檔案大小

    L        符号連結

    T         檔案修改時間

    D         裝置

    U         使用者

    G         組

    M         權限

    ?        不可了解檔案(檔案權限錯誤)

    .        沒有發生改變

3.2 檢查包的數字簽名

    校驗RPM包必須先要導入GunPG key     

    [r[email protected] ~]# rpm --import /media/cdrom/RPM-GPG-KEY-CentOS-6

    顯示所有已經導入的GunPG key

    [[email protected] ~]# rpm -qa gpg-pubkey*

    gpg-pubkey-c105b9de-4e0fd3a3

    想要顯示key的詳細資訊

    [[email protected] ~]# rpm -qi gpg-pubkey-c105b9de-4e0fd3a3

    對包進行數字簽名檢查

    [[email protected] Packages]# rpm -K zip-3.0-1.el6.i686.rpm

    zip-3.0-1.el6.i686.rpm: rsa sha1 (md5) pgp md5 OK

3.3  RPM資料庫管理

    RPM所有查詢功能都是基于資料庫的

    #資料庫目錄為/var/lib/rpm

        rpm --initdb            #初始化,如果沒有則建立,有則不執行

        rpm --rebuilddb            #資料庫重建,覆寫原有

參考文檔:

                Red_Hat_Enterprise_Linux-6-Deployment_Guide-en-US

轉載于:https://blog.51cto.com/5778452/1745848