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