linux RPM、YUM


  1. Linux 界的兩大主流: RPM 與 DPKG
    • distribution 代表 軟件管理機制 使用指令 在線升級機制(指令)
      Red Hat/Fedora RPM rpm, rpmbuild YUM (yum)
      Debian/Ubuntu DPKG  dpkg APT (apt-get)

        

  2. RPM與SRPM
    1. RPM 是以一種數據庫記錄的方式來將你所需要的軟件安裝到你的 Linux 系統的一套管理機制。
      1. 優點:
        1. 由於已經編譯完成並且打包完畢,所以軟件傳輸與安裝上很方便 (不需要再重新編譯);
        2. 由於軟件的信息都已經記錄在 Linux 主機的數據庫上,很方便查詢、升級與反安裝
      2. 問題:
        1. 軟件檔案安裝的環境必須與打包時的環境需求一致或相當;
        2. 需要滿足軟件的相依屬性需求;
        3.  反安裝時需要特別小心,最底層的軟件不可先移除,否則可能造成整個系統的問題!
    2. SRPM(Source RPM)所提供的軟件內容『並沒有經過編譯』, 他提供的是原始碼。通常 SRPM 的擴展名是以 ***.src.rpm 這種格式來命名的。
      1. 先將該軟件以 RPM 管理的方式編譯,此時 SRPM 會被編譯成為 RPM 檔案;
      2. 然后將編譯完成的 RPM 檔案安裝到 Linux 系統當中
  3. 什么是 i386, i586, i686, noarch, x86_64
    1. rp-pppoe-3.1-5.i386.rpm----檔案的意義
      1. rp-pppoe - 3.1 -   5 .i386 .rpm
        軟件名稱 軟件的版本信息 釋出次數  適用的平台 擴展名

         

  4. RPM 是透過預先編譯並打包成為 RPM 文件格式后,再加以安裝的一種方式,並且還能夠進行數據庫的記載。所以 RPM 有以下的優點:
    1. RPM 內含已經編譯過的程序與配置文件等數據,可以讓用戶免除重新編譯的困擾;
    2. RPM 在被安裝之前,會先檢查系統的硬盤容量、操作系統版本等,可避免檔案被錯誤安裝;
    3. RPM 檔案本身提供軟件版本信息、相依屬性軟件名稱、軟件用途說明、軟件所含檔案等信息,便於了解軟件;
    4. RPM 管理的方式使用數據庫記錄 RPM 檔案的相關參數,便於升級、移除、查詢與驗證。
  5. RPM 軟件管理程序: rpm
    1. 利用RPM安裝的軟件相關的信息會被寫入 /var/lib/rpm/ 目錄下的數據庫檔案中
    2. RPM 安裝 (install)
      1. rpm -ivh package_name
        1. -i :install 的意思
        2. -v :察看更細部的安裝信息畫面
        3. -h :以安裝信息列顯示安裝進度
    3. RPM 升級與更新 (upgrade/freshen)
      1. rpm -[UF]vh package_name
        1. -Uvh:后面接的軟件即使沒有安裝過,則系統將予以直接安裝;若后面接的軟件有安裝過舊版,則系統自動更新至新版;
        2. -Fvh:如果后面接的軟件並未安裝到你的 Linux 系統上,則該軟件不會被安裝;亦即只有已安裝至你 Linux 系統內的軟件會被『升級』!
    4. RPM 查詢 (query)
      1. rpm -qa <==已安裝軟件
      2. rpm -q[licdR] 已安裝的軟件名稱 <==已安裝軟件
      3. rpm -qf 存在於系統上面的某個文件名 <==已安裝軟件
      4. rpm -qp[licdR] 未安裝的某個文件名 <==查閱RPM檔案
        1. 查詢已安裝軟件的信息:
        2. -q :僅查詢,后面接的軟件名稱是否有安裝;
        3. -qa :列出所有的,已經安裝在本機 Linux 系統上面的所有軟件名稱;
        4. -qi :列出該軟件的詳細信息 (information),包含開發商、版本與說明等;
        5. -ql :列出該軟件所有的檔案與目錄所在完整文件名 (list);
        6. -qc :列出該軟件的所有配置文件 (找出在 /etc/ 底下的檔名而已)
        7. -qd :列出該軟件的所有說明文件 (找出與 man 有關的檔案而已)
        8. -qR :列出與該軟件有關的相依軟件所含的檔案 (Required 的意思)
        9. -qf :由后面接的文件名,找出該檔案屬於哪一個已安裝的軟件;
        10. 查詢某個 RPM 檔案內含有的信息:
        11. qp[icdlR]:注意 -qp 后面接的所有參數與上面的說明一致。但用途僅在於找出某個 RPM 檔案內的信息,而非已安裝的軟件信息!注意!
    5. RPM 驗證與數字簽名 (Verify/signature)
      1. 作用的方式是『使用 /var/lib/rpm 底下的數據庫內容來比對目前 Linux 系統的環境下的所有軟件檔案 』也就是說,當你有數據不小心遺失, 或者是因為你誤殺了某個軟件的檔案,或者是不小心不知道修改到某一個軟件的檔案內容, 就用這個簡單的方法來驗證一下原本的文件系統吧!
      2. rpm -Va
      3. rpm -V 已安裝的軟件名稱
      4. rpm -Vp 某個 RPM 檔案的檔名
      5. rpm -Vf 在系統上面的某個檔案
        1. -V :后面加的是軟件名稱,若該軟件所含的檔案被更動過,才會列出來;
        2. -Va :列出目前系統上面所有可能被更動過的檔案;
        3. -Vp :后面加的是文件名,列出該軟件內可能被更動過的檔案;
        4. -Vf :列出某個檔案是否被更動過~
      6. 例:[root@www ~]# rpm -Vf /etc/crontab
        1. ..5....T c /etc/crontab
        2. 前面的八個信輸出說明:
          1. S :(file Size differs) 檔案的容量大小是否被改變
          2. M :(Mode differs) 檔案的類型或檔案的屬性 (rwx) 是否被改變?如是否可執行等參數已被改變
          3. 5 :(MD5 sum differs) MD5 這一種指紋碼的內容已經不同
          4. 5 :(MD5 sum differs) MD5 這一種指紋碼的內容已經不同
          5. L :(readLink(2) path mis-match) Link 路徑已被改變
          6. U :(User ownership differs) 檔案的所屬人已被改變
          7. G :(Group ownership differs) 檔案的所屬群組已被改變
          8. T :(mTime differs) 檔案的建立時間已被改變
        3. 第九個字段說明:
          1. c :配置文件 (config file)
          2. d :文件數據文件 (documentation)
          3. g :鬼檔案~通常是該檔案不被某個軟件所包含,較少發生!(ghost file)
          4. l :許可證文件 (license file)
          5. r :自述文件 (read me)
    6. 數字簽名 (digital signature)
      1. 當你要安裝一個 RPM 檔案時:
        1. 首先你必須要先安裝原廠釋出的公鑰檔案;
        2. 實際安裝原廠的 RPM 軟件時, rpm 指令會去讀取 RPM 檔案的簽章信息,與本機系統內的簽章信息比對,
        3. 若簽章相同則予以安裝,若找不到相關的簽章信息時,則給予警告並且停止安裝喔。
      2. 安裝原廠釋出的 GPG 數字簽名的公鑰檔案
        1. locate GPG-KEY或find /etc -name '*GPG-KEY*'  --------查找
        2. rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5 ---------安裝
    7. RPM 反安裝與重建數據庫 (erase/rebuilddb)
      1. rpm -e package_name ------刪除某個軟件
      2. rpm --rebuilddb  ------<==重建數據庫
  6. SRPM 的使用 : rpmbuild
    1. 利用默認值安裝 SRPM 檔案 (--rebuid/--recompile)
      1. rpmbuild [--rebuild --recompile] SRPM包
        1. --rebuild:『編譯』與『打包』的動作,最后會產生 RPM 的檔案。
        2. --recompile:『編譯』『打包』並且『安裝』
    2. SRPM 使用的路徑與需要的軟件 -----需要安裝rpm-build-4.2-0.69.i386.rpm包-------806 
    3. 打包自己的RPM軟件------------811
  7. 利用 yum 進行查詢、安裝、升級與移除功能
    1. yum [option] [查詢工作項目] [相關參數] 選項
      1. [option]:主要的選項,包括有:
        1. -y :當 yum 要等待用戶輸入時,這個選項可以自動提供 yes 的響應;
        2. --installroot=/some/path :將該軟件安裝在 /some/path 而不使用默認路徑
      2. [查詢工作項目] [相關參數]:這方面的參數有:
        1. search :搜尋某個軟件名稱或者是描述 (description) 的重要關鍵字;
        2. list :列出目前 yum 所管理的所有的軟件名稱與版本,有點類似 rpm -qa;
        3. info :同上,不過有點類似 rpm -qai 的執行結果;
        4. provides:依檔案去搜尋軟件!類似 rpm -qf 的功能!
      3. 列出目前服務器上可供本機進行升級的軟件有哪些?
        1. [root@www ~]# yum list updates
    2. 安裝/升級功能:yum [install|update] 軟件
      1. yum [option] [查詢工作項目] [相關參數]
        1. install :后面接要安裝的軟件!
        2. update :后面接要升級的軟件,若要整個系統都升級,就直接 update 即可
    3. 移除功能:yum [remove] 軟件
      1. yum remove pam-devel
    4. yum 的配置文件
      1. vi /etc/yum.repos.d/CentOS-Base.repo
      2. 內容說明:
        1. [base]:代表容器的名字!中刮號一定要存在,里面的名稱則可以隨意取。但是不能有兩個相同的容器名稱, 否則 yum 會不曉得該到哪里去找容器相關軟件列表檔案。
        2. name:只是說明一下這個容器的意義而已,重要性不高!
        3. mirrorlist=:列出這個容器可以使用的映射站台,如果不想使用,可以批注到這行;
        4. baseurl=:這個最重要,因為后面接的就是容器的實際網址! mirrorlist 是由 yum程序自行去捉映像站台, baseurl 則是指定固定的一個容器網址!當你要找容器所在網址時, 最重要的就是該網址底下一定要有個名為 repodata 的目錄存在
        5. enable=1:就是讓這個容器被啟動。如果不想啟動可以使用 enable=0 喔!
        6. gpgcheck=1:還記得 RPM 的數字簽名嗎?這就是指定是否需要查閱 RPM 檔案內的數字簽名!
        7. gpgkey=:就是數字簽名的公鑰文件所在位置!使用默認值即可
  8. 修改容器產生的問題與解決之道
    1. yum clean [packages|headers|all]
      1. packages:將已下載的軟件檔案刪除
      2. headers :將下載的軟件文件頭刪除
      3. all :將所有容器數據都刪除!
  9. yum 的軟件群組功能
    1. yum [群組功能] [軟件群組]
      1. grouplist :列出所有可使用的『套件組』,例如 Development Tools 之類的;
      2. groupinstall:這個好用!可以安裝一整組的套件群組,相當的不錯用!
      3. groupremove :移除某個套件群組;
  10. 全系統自動升級
    1. vim /etc/crontab
    2. 0 3 * * * root /usr/bin/yum -y update

rpm 安裝時常用的選項與參數說明

可下達的選項 代表意義
--nodeps

使用時機:當發生軟件屬性相依問題而無法安裝,但你執意安裝時

危險性: 軟件會有相依性的原因是因為彼此會使用到對方的機制或功能,如果強制安裝而不考慮軟件的屬性相依, 則可能會造成該軟件的無法正常使用!

--replacefiles

使用時機: 如果在安裝的過程當中出現了『某個檔案已經被安裝在你的系統上面』的信息,又或許出現版本不合的訊息 (confilcting files) 時,可以使用這個參數來直接覆蓋檔案。

危險性: 覆蓋的動作是無法復原的!所以,你必須要很清楚的知道被覆蓋的檔案是真的可以被覆蓋喔!否則會欲哭無淚!

--replacepkgs 使用時機: 重新安裝某個已經安裝過的軟件!如果你要安裝一堆 RPM 軟件檔案時,可以使用 rpm -ivh*.rpm ,但若某些軟件已經安裝過了, 此時系統會出現『某軟件已安裝』的信息,導致無法繼續安裝。此時可使用這個選項來重復安裝喔!
--force  使用時機:這個參數其實就是 --replacefiles 與 --replacepkgs 的綜合體!
--test 

使用時機: 想要測試一下該軟件是否可以被安裝到使用者的 Linux 環境當中,可找出是否有屬性相依的問題。

范例為:rpm -ivh pkgname.i386.rpm --test

--justdb 使用時機: 由亍 RPM 數據庫破損或者是某些緣故產生錯誤時,可使用這個選項來更新軟件在數據庫內的相關信息。
--nosignature 使用時機: 想要略過數字簽名的檢查時,可以使用這個選項。
--prefix 新路徑 使用時機: 要將軟件安裝到其他非正規目錄時。舉例來說,你想要將某軟件安裝到 /usr/local 而非正規的/bin, /etc 等目錄, 就可以使用『 --prefix /usr/local 』來處理了。
--noscripts

使用時機:不想讓該軟件在安裝過程中自行執行某些系統指令。

說明: RPM 的優點除了可以將檔案放置到定位之外,還可以自動執行一些前置作業的指令,例如數據庫的初始化。 如果你不想要讓 RPM 幫你自動執行這一類型的指令,就加上他吧!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM