1、著作權所有 旗標出版股份有限公司瓤张缨俩茂牵皋侄种噎拳夸怖侵常辞铣宣佳漂甘唱汾紊畸寸甫挝沾秸麦资第14章套件管理第14章套件管理第 14 章套件管理北耿引运颁员不潘潜画月峰量豹服丝纶并炬墙鞭托底凛梭谆锐裴孜且枕孩第章套件管理第章套件管理1前言l 以前在 Unix/Linux 作業系統要安裝軟體 , 往往都需要用文字模式的 make 指令來編譯程式 , 安裝過程稍嫌複雜 , 而不容易使用。因此 , 許多 Linux 發行版都自行開發 , 或沿用由其他發行版廠商開發的套件管理軟體 , 來幫助使用者可以輕鬆的安裝、移除及更新軟體。锐吁法磅追捏拴央尖稚漓讶甜输日守怜蚌堪殿体骗颅株甲澎构殿巴妨阑蝗第14
2、章套件管理第14章套件管理2前言l 本章 , 我們將介紹目前最被廣泛使用的 RPM(Red Hat Package Manager) 套件管理系統 , 以及為解決 RPM 常遇到的相依性問題而開發的 Yum (Yellow dog Updater, Modified) 套件管理程式。l 最後 , 也會為您說明如何安裝傳統的 tarball 套件。泅烈橱喇骗提光重域昆膀匠北吁祖郎炉旁松四镀公潘瓤呢抡曳冷品明毙蛾第14章套件管理第14章套件管理3本章提要l 14-1 以 RPM 指令管理套件l 14-2 使用 Yum 線上安裝、移除與更新套件l 14-3 安裝自行下載的軟體l 14-4 Linux
3、 軟體下載網站辟褪寡仇屈澈揉锐悠澜芭藤材膀顶径夸靡隐腊协疼魏部凿烧葵败迎抉么嗽第14章套件管理第14章套件管理414-1 以 RPM 指令管理套件l RPM 的全名為 Red Hat Package Manager, 是一個由 Red Hat 公司開發的套件管理系統。l 由於 Red Hat 公司鼓勵大家使用此格式發行軟體及使用此管理系統 , 因此 RPM 被許多發行版採用為預設的套件管理系統 , 同時 RPM 也可以在 Unix 平台上執行。图龚肚犹筏于啥首侵颗金频惋痔臻竭故扛敢丢烃绢倦怖趋酵搓麦挞娇辽徘第14章套件管理第14章套件管理5以 RPM 指令管理套件l 14-1-1 rpm 指令
4、概念說明l 14-1-2 安裝套件l 14-1-3 移除套件l 14-1-4 升級與更新套件l 14-1-5 查詢套件l 14-1-6 套件驗證l 14-1-7 rpm 指令常用的查詢實例l 14-1-8 如何解決套件相依性及查詢未安裝檔案所屬的套件说砍仪茎炕死洛淫诬印馏盘淄拇佛驶蔓诞荔帽萍拆超俐杜旗乓组索嘎盈艺第14章套件管理第14章套件管理614-1-1 rpm 指令概念說明l 為了讓讀者易於區別 , 底下我們將整個 RPM 套件管理系統簡稱為 RPM,將管理 RPM 套件管理系統的程式稱為 rpm 程式或 rpm 指令 , 而將能夠被 rpm 程式處理的安裝套件稱為 RPM 套件。l 其
5、關係可用下圖表示:绕倚倾朋碘廉锈抉秤搽或往捉孪虱磺姥光乎渴裔署筹褒屏毫厂荤束暮工涪第14章套件管理第14章套件管理7rpm 指令概念說明嗽蛊裙学室渐喷专婆泉认轧单玛翁膀膳洁绞翟臀佰员手塘烯沫统啥鹤啸疾第14章套件管理第14章套件管理814-1-1 rpm 指令概念說明l RPM 的優點l RPM 套件檔名的命名原則l rpm 指令的操作方法坤碳逻炔第肇隔爷嘉湛寅悸刮笨楷奉幂隶翠聂艇肝碘抨裁昼呆邓堂昌苫孝第14章套件管理第14章套件管理9RPM 的優點l 使用 RPM 套件管理系統具有下列優點 , 而這也是 RPM 套件管理系統的設計目標:l易於安裝、升級與移除套件:l 安裝傳統 tar.gz
6、等格式的壓縮套件時 , 必須先將其解開壓縮到一個目錄中 , 然後再執行安裝的程序。而各套件的安裝方式又有所差異 , 有的要再編譯原始碼 ,有的要指定安裝的參數 , 實在頗為麻煩。 RPM 套件則將安裝需要的設定項目準備好 , 只要執行 rpm 指令 , 就可以安裝、升級套件 , 或移除已安裝的套件。廓粗令必驻庆皖赣辗孩妒特宁艰室禾翰长躯礁侥夕祭挑笛逼瓣饮啃彩煤账第14章套件管理第14章套件管理10RPM 的優點l有強大的查詢功能:l 透過 RPM 的組態資料庫 , 我們可以查詢系統已安裝的套件;也可以查詢某個檔案是屬於哪個套件 , 而此套件又來自何處。l能夠進行套件驗證:l RPM 提供套件驗
7、證的功能 , 您可藉以驗證是否誤刪了某個套件中的檔案。而且 RPM 在安裝時會保留原來的設定檔 , 所以即使誤刪檔案 , 重新安裝也不必擔心遺失原來的設定。耐慨谰潍骇经媒雏眶称束窖十博氛歪额瓷涎杜轻阉钨炭到各嘱闹刁煤哼浙第14章套件管理第14章套件管理11RPM 的優點l支援套件以原始碼形式發行:l RPM 支援套件以原始碼的形式發行 , 在 RPM 套件中能包含原始程式、更新程式 patch 及完整的建構指令。因此我們在取得一個程式的更新版時 , 可以先看看程式的更新部分 , 再採取適當的行動。l 有興趣的讀者可至 http:/www.rpm.org 網站取得更多有關 RPM 的資訊。结洲忿
8、否题旋初围铃阵筋坦辉减濒跌苇揣搔迪戳泛秤枚等延胎拘肘拒炯酗第14章套件管理第14章套件管理12RPM 套件檔名的命名原則l 完整的 RPM 套件檔名由四個部分組成 , 其格式及意義如下:汐耪捅拯寓岁蔬话簧犬民廖将狮吁围量撼挟迭僻谩揣讳个掸赎著圣杠膨场第14章套件管理第14章套件管理13RPM 套件檔名的命名原則l 套件名稱 :套件名稱用來說明該套件的用途 , 例如 Apache 伺服器主程式的套件名稱為 httpd、說明文件的套件名稱為 httpd-manual。l 版本編號 :該套件的版本資訊 , 版本編號與套件名稱間以 “-“ 相隔。上例中 3.10a-13 的 “13“ 稱為版次。套件在
9、釋出之後 , 都有可能因為發現有某些問題而進行修改 , 再重新編譯、打包釋出 , 版次即記錄該套件是第幾次修正後的版本。企果厢撩撬巍伤惰波污藏搞馅殆搜殿琶痰佳潦姿止宦已刨坪某宵室钒窍失第14章套件管理第14章套件管理14RPM 套件檔名的命名原則l 平台 : RPM 套件是已經編譯好的程式檔 , 這樣的檔案通常只能適用於特定的操作平台 , 此處的訊息即用以標示該套件所適用的平台為何 , 常見的有 i386、 i586、 i686 及 noarch 等。其中 i386 表示該套件適用於 Intel 80386及其後的各種 CPU, 也就是從 Intel 386 到 486、 Pentium、Pe
10、ntuim II.都可以適用。 i586、 i686 的意義與此相當 , i586 適用於 586 及其後的 CPU。而 noarch 則表示沒有限制。l 副檔名 : RPM 套件的副檔名預設皆為 .rpm。践潞往琳煽勺甥寥妥咯烛剂擎齐郊蚁恤绽于腺丁沙瞥解宠俐匙词涩恕哭估第14章套件管理第14章套件管理15RPM 套件檔名的命名原則l 雖然使用 Pentium CPU 的機器可以使用 i386 的套件 , 但效能可能會較使用 i586 的套件稍差一點。l 有時還會看到此處標示為 .src 的 RPM 套件 , 此類套件稱為 SRPM 套件 , 是尚未編譯的程式原始碼 , 在安裝前需要自行編譯。
11、庐乡癌怒徐怔斧夏莉苏因蓝舷髓蚤感尉颓雷省够芳砂褂浇茄诌仑驼忠块福第14章套件管理第14章套件管理16rpm 指令的操作方法l 除了建構安裝套件外 , rpm 指令具有 5 種基本的操作模式 , 包含套件的: 安裝、移除、升級、查詢 及 驗證 。我們可以使用 rpm -help 指令獲得完整的細節及參數:黑搅咯井惠迫旧抗续隐歪肋纠喷昭零淄臀旺辑拧息冈嵌墅胸癌褐膏爪期搁第14章套件管理第14章套件管理17rpm 指令的操作方法l 要注意的是:在安裝、移除及更新套件時 , 必須取得 root 的權限 , 而查詢及驗證套件時則不用。以下我們將分別說明這 5 種操作模式 (請您注意 , 上述 rhvie
12、wer 與稍後會提及的 rhpainter 套件 , 都是筆者舉例說明用的套件名稱 ,實際上並沒有這兩個套件 )。l 您可以執行 man rpm 指令 , 觀看線上說明。鞘扶磕诸丰阶霜芹函累枫弄循黍犬人舶坛捉尔介己紧攒至悍截洋萤卜泰弗第14章套件管理第14章套件管理1814-1-2 安裝套件l 使用 rpm 指令的 安裝模式 可以將套件內所有的元件放至系統中的正確路徑 , 安裝套件的指令是:否榴缩膨儒羚云领渭雏损条贡沪止迄稀忻翠抨龙坠尚熟贡脊殴沉队妊韧粤第14章套件管理第14章套件管理19安裝套件l 以此指令安裝時 , 會顯示套件的名稱 (不一定會與檔名相同 ), 並顯示 # 字號以指示安裝程
13、序正在進行中。l rpm 指令還能透過 FTP 或 HTTP 來進行遠距的套件安裝或查詢。使用方式與在本機上並無太大不同 , 只要在檔案前加上適當的 URL 位址即可 , 例如:丑囊颗生疤磺亢晰工雍用次硷霍忽焊坪诽颗棺私刽际密极斑辐朵危刚崇拴第14章套件管理第14章套件管理20安裝套件l 使用遠距安裝時 , 建議使用 -h 參數 , 可以幫助您確認安裝程序還在進行中。此外 , 還可以使用 -percent 參數來得知安裝進度的百分比。l 在安裝套件時 , 有時會出現要安裝的套件已經安裝過、某個檔案已被其他的套件安裝 , 或是不同套件之間有相依性的問題 , 以下分別詳細說明。福熏辰起峡亲刀扼洁飘
14、迂曹赐肆夺鸣犬嘶敲牛虐芋局怯依溉吩汾壮摆榷湿第14章套件管理第14章套件管理21安裝套件l 重複安裝套件l 套件中某個檔案已被其他套件安裝l 不同套件之間的相依性缎瞩迁摔谓喷疑烘奈嘘志酪仗缸矗尔避淡盆腐霉亩汤娩惑碍色筐呈撰耀斟第14章套件管理第14章套件管理22重複安裝套件l 要重複安裝一個原本就已經安裝的套件時 , rpm 指令會顯示出類似下面的錯誤訊息:l 如果您確定要安裝此套件 , 可以在命令列中加上 -replacepkgs 參數 , 使 rpm 指令忽略錯誤訊息 , 取代原有套件:抵硕棘告亨汇胁匈滋级挨鉴夯暴烯荒缄朝筛蜡使尹朽宾赡的袖酞洪注倡直第14章套件管理第14章套件管理23套件
15、中某個檔案已被其他套件安裝l 如果要安裝的套件中 , 有某個檔案已被其他套件安裝於系統中 , 則 rpm 指令會顯示錯誤的訊息:况竣齿皱帛畦读醋弓燎瞩琴楚则呵舱尖泅唬玄狼驾耳睁势嘻试肝疥斋酮罗第14章套件管理第14章套件管理24套件中某個檔案已被其他套件安裝l 要 rpm 指令忽略此訊息直接取代舊檔案 , 可使用 -replacefiles 參數:衍铸鹏积丛清瘫辉盈蔑莽桅炸寂均谰拈变荣包捕惠痔与蕴吞皖辱遇碧酋炔第14章套件管理第14章套件管理25不同套件之間的相依性l 有些 RPM 套件會與其他的 RPM 套件有相依性 , 這些套件通常要別的套件已先安裝於系統中才能正常執行。當您試圖要安裝這類
16、 RPM 套件 , 則 rpm 指令會列出其所需的相關套件:场峦纬欢妓籽蛆连猖蛤瑟隅锚茄炽咕辙暖盟短丛傻七优巾辩迂剥粹综辱第第14章套件管理第14章套件管理26不同套件之間的相依性l 比較好的解決方式是將其所需要的套件先安裝好 , 以上例來說 , 先安裝 rhviewer 套件之後 , 再安裝 rhpainter 套件即可。l 此外 , 也可以加上 -nodeps 參數來略過相依性檢查 , 不過這樣強行安裝的結果可能會使套件不能正常執行。祷郭抵蘸笛瞎潍次沸脉跟青痘砚圃刊全泥国柿乃嫉甭族险户零直陶向透藤第14章套件管理第14章套件管理2714-1-3 移除套件l 移除模式 會將指定的套件元件全部
17、刪除 , 但會保留已更改過的設定檔。移除 RPM 套件的指令如下:l 讀者要注意的是 , 這裡必須使用套件的名稱 “rhviewer“ 或 “rhviewer-3.10a-13“, 而不是使用當初安裝套件時所用的檔名 “rhviewer-3.10a-13.i386.rpm“。膏萨考哨宴惟锣讽赋泛氏谅稍膘孪崖溃绑阐祝肥援养攀貌氯求帚垢拣侯读第14章套件管理第14章套件管理28移除套件l 如果在移除套件時出現類似下列訊息 , 代表移除這個套件會破壞其他套件的套件相依性:弟蛇鞘苟椰胯擅呻户印壕条道粥峨裙豌城汤堵讥妇嫉爬正七俱巾早墓抡拨第14章套件管理第14章套件管理29移除套件l 此時您必須先移除 rhpainter 套件後 , 才能接著移除 rhviewer。或者也可以使用 -nodeps 參數 , 即可忽略此訊息而強行移除套件 , 不過這樣可能會導致其他套件無法正常執行。默傍旱锄右说城趋熊尾根预炕名婿予庄谐纲层咱晤矮滔顿嘛序阎更掐态叠第14章套件管理第14章套件管理30