Linux系統(tǒng)應(yīng)用基礎(chǔ)教程 第3版 課件 第六章 Linux 的包管理_第1頁
Linux系統(tǒng)應(yīng)用基礎(chǔ)教程 第3版 課件 第六章 Linux 的包管理_第2頁
Linux系統(tǒng)應(yīng)用基礎(chǔ)教程 第3版 課件 第六章 Linux 的包管理_第3頁
Linux系統(tǒng)應(yīng)用基礎(chǔ)教程 第3版 課件 第六章 Linux 的包管理_第4頁
Linux系統(tǒng)應(yīng)用基礎(chǔ)教程 第3版 課件 第六章 Linux 的包管理_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

第六章Linux的包管理隨著計算機技術(shù)的飛速發(fā)展,操作系統(tǒng)的內(nèi)核在不斷地升級;各種各樣的應(yīng)用軟件也在不斷地推出;對于Linux操作系統(tǒng)而言,這些軟件許多是以RPM軟件包的形式存在并可以通過網(wǎng)絡(luò)下載的。要在系統(tǒng)中查詢、驗證、安裝、升級或刪除這些軟件包就需要有專門的包管理器。包管理器(RPM)是Linux系統(tǒng)的一個重要部分,它為Linux操作系統(tǒng)的升級與維護(hù)以及用戶應(yīng)用程序的安裝帶來了極大的便利。6.1包管理概述RPM是RedHatPackageManager的縮寫,它原來是RedHatLinux發(fā)行版專門用來管理Linux各項軟件包的程序,由于它遵循GPL(GNU通用公共許可證)協(xié)議且功能強大、使用方便,因而受到許多用戶的青睞并逐漸被其他Linux發(fā)行版本所采用。

RPM是一個開放的軟件包管理器,它工作于許多種類型的Linux和UNIX操作系統(tǒng)。只要遵循GPL協(xié)議,RPM軟件對所有的用戶都是開放的,用戶甚至可以將它用到自己的程序中。由于安裝、刪除、或升級某個RPM軟件包時,包管理器要對用戶的系統(tǒng)做適當(dāng)?shù)呐渲茫訰PM軟件包的安裝、刪除或更新只有root權(quán)限的用戶才能使用;對于查詢功能任何用戶都可以操作;如果普通用戶擁有建立目錄的權(quán)限,也可以進(jìn)行安裝。對于終端用戶來說,包管理器大大簡化了系統(tǒng)升級、維護(hù)以及應(yīng)用程序的安裝。當(dāng)要安裝、刪除或升級RPM軟件包時,只要使用簡短的命令就可以完成。包管理器維護(hù)一個所有已安裝的RPM軟件包和文件的數(shù)據(jù)庫,因此,用戶可以在系統(tǒng)上進(jìn)行RPM軟件包的查詢和校驗工作。在RPM軟件包的升級中,包管理器處理配置文件時非常謹(jǐn)慎,因此用戶決不會丟失所定制的配置—這是用普通壓縮包,如.tar.gz文件所無法達(dá)到的。對于程序開發(fā)者來說,包管理器允許這類用戶把軟件源代碼和編譯、連接生成的二進(jìn)制程序打包,然后提供給終端用戶使用。這個過程非常簡單,它由一個主文件和可選的補丁程序組成。這種源代碼、補丁程序和軟件生成指令的清晰描述簡化了發(fā)行軟件新版本所帶來的維護(hù)負(fù)擔(dān)。在終端字符界面下,Linux的包管理器以rpm命令加上參數(shù)和選項的形式使用;在圖形界面下,CentOS7在“應(yīng)用程序”菜單欄的“系統(tǒng)工具”菜單的子菜單里所提供的“軟件”管理工具可以通過互聯(lián)網(wǎng)查找、添加、更新、刪除、定位軟件包,還可以模塊檢查依賴關(guān)系等;可以通過按鈕和鼠標(biāo)的配合操作完成軟件包管理的一些常用功能。6.2包管理的特色有關(guān)RPM的信息在網(wǎng)頁/中有許多介紹。在學(xué)習(xí)如何使用包管理器之前,讓我們先簡要了解Linux包管理的特色:易用性(Easeofuse)面向軟件包(Package-orientedfocus)包的升級性(Upgradabilityofpackages)探測包的依賴性(Trackingofpackageinterdependencies)強大的查詢能力(Querycapabilities)軟件包校驗(Verification)支持多種結(jié)構(gòu)(Supportformultiplearchitectures)保持軟件包原始特征(Useofpristinesources)6.2.1易用性或許RPM設(shè)計的主要目的之一就是要容易使用。為了讓更多的用戶使用這種新軟件,RPM與其他早期的Linux包管理工具軟件相比必須要有重大的改變?;谶@一點,大多數(shù)可以用RPM處理的任務(wù)被設(shè)計成通過執(zhí)行單條命令來完成。例如,使用RPM來升級軟件要求執(zhí)行單條命令(rpm-Usoftware_package),而使用早期的方法至少需要六條命令才能完成同樣的工作:tarzxfsoftware_packagecdsoftware_package./configuremakesumakeinstall與此類似,當(dāng)使用RPM刪除一個已安裝的應(yīng)用程序軟件包時,也同樣要求執(zhí)行單條命令(rpm-esoftware_package);而早期的方法需要手動刪除每個與應(yīng)用程序相關(guān)聯(lián)的文件。6.2.2面向軟件包 RPM是用來在軟件包層次上操作的。RPM提供可以管理成百上千個包的軟件,勝于在單個文件或整個系統(tǒng)基礎(chǔ)上的操作。

每個包由分立的關(guān)聯(lián)文件集、相關(guān)的文檔和配置信息組成;典型情況下,每個包是一個單獨的應(yīng)用程序。RPM作為包的管理單元,使得軟件包安裝與刪除的應(yīng)用變的極為簡單。6.2.3包的升級性

除了面向軟件包的特色外,RPM還支持軟件包升級。對于從RPM包中安裝的應(yīng)用程序,只要有新的版本發(fā)行都可以使用RPM升級,而不需要重新安裝。在升級應(yīng)用程序時,RPM會刪除那些舊的文件并用新文件替換它們。另外,RPM允許智能地、全自動地升級用戶軟件,軟件包中原來所做的配置在升級過程中會安全的保留下來,因此用戶不會丟失配置信息。例如,ApacheWeb服務(wù)器一般安裝在需要Web網(wǎng)頁服務(wù)的Linux計算機上;Apache服務(wù)器的配置信息以文本文件的形式存儲在/etc/http/conf/httpd.conf文件中。假設(shè)用戶已經(jīng)用RPM安裝了Apache并且配置過httpd.conf文件;當(dāng)用戶再用RPM升級Apache時,RPM將會小心地保護(hù)用戶所做過的配置。相反,手動升級應(yīng)用程序時常常覆蓋已存在的配置文件,丟失系統(tǒng)管理員所做的配置。6.2.4探測包的依賴性

軟件包之間存在依賴關(guān)系,即某個軟件包中的程序需要使用其他已經(jīng)安裝的軟件包中的程序。例如,Postfix和Sendmail郵件傳輸代理(MTA)程序一般安裝在提供e-mail服務(wù)的Linux計算機上,在它們可以提供e-mail服務(wù)前都會被配置,以便成功地對用戶身份進(jìn)行驗證(通過輸入用戶名和密碼)。這常常用于防止未經(jīng)授權(quán)的用戶訪問e-mail服務(wù)器,阻止不道德的廣告商利用郵件服務(wù)器為工具發(fā)送垃圾郵件。然而,要使Postfix和Sendmail程序正常工作,CyrusSASL程序必須安裝。CyrusSASL(SimpleAuthenticationandSecurityLayer)程序為Postfix和Sendmail程序提供用戶名和密碼的檢查。換句話說,Postfix和Sendmail程序依賴于CyrusSASL。

對于系統(tǒng)級的軟件管理程序,在系統(tǒng)組件之間的邏輯依賴關(guān)系容易探測。所有需要的組件作為系統(tǒng)的部分包括在系統(tǒng)中,升級系統(tǒng)時就升級了所有的組件。在MicrosoftWindows2000操作系統(tǒng)中,IIS需要其他的程序,如EventLog(Windows用來記錄系統(tǒng)事件,很類似于Linux系統(tǒng)的syslogd和klogd程序)必須存在。由于Windows是在系統(tǒng)層次上的管理,而不是包的管理,所以這種依賴得到滿意的保證。然而,在Linux操作系統(tǒng)中使用RPM情況就不同了,RPM提供了靈活性以安裝某個應(yīng)用程序,但是以后不安裝或刪除其他應(yīng)用程序。例如Postfix程序需要syslogd程序記錄系統(tǒng)事件,當(dāng)用戶安裝Postfix程序時不能保證已經(jīng)安裝了syslogd程序。如果syslogd沒有安裝,則Postfix程序?qū)o法正確地工作。為了避免這樣的問題RedHat開發(fā)者認(rèn)識到RPM還必須探測依賴信息,以便RPM安裝或刪除應(yīng)用程序時使用這種依賴信息。使用RPM在沒有安裝syslogd程序的系統(tǒng)上安裝Postfix時會產(chǎn)生一個警告信息,以提示syslogd必須先安裝。于此類似,在一個已經(jīng)安裝了Postfix的系統(tǒng)上卸載syslogd時也會產(chǎn)生一個警告信息。如果需要,這些警告信息可以被忽略,但是缺省情況下RPM強制檢查這些依賴關(guān)系。6.2.5強大的查詢能力

作為RPM實現(xiàn)的一部分,它維護(hù)一個所有已安裝的RPM軟件包和文件的數(shù)據(jù)庫。RPM設(shè)計為很容易查詢,用戶可以搜索數(shù)據(jù)庫以證實系統(tǒng)中哪些軟件包已經(jīng)安裝和軟件包中有哪些文件以及該軟件包的制作者。這個特色使得基于RPM的系統(tǒng)特別容易使用,因為單條的RPM命令就可以查看系統(tǒng)中所有已經(jīng)安裝的軟件包。6.2.6軟件包校驗 RPM還維護(hù)著系統(tǒng)數(shù)據(jù)庫中每個已安裝文件的大量信息,例如每個文件應(yīng)該有什么權(quán)限、每個文件的大小等。一段時間后,如果安裝的程序不能正常工作,原因可能是系統(tǒng)管理員設(shè)置了不正確的文件權(quán)限或者由于外部的原因影響了計算機的內(nèi)存,破壞了存儲位而引起的錯誤。雖然RPM不能阻止引起已安裝軟件失效的所有錯誤,但是它能排除通常的錯誤。當(dāng)一個應(yīng)用程序失效時,用戶可以使用RPM數(shù)據(jù)庫確定所有與該應(yīng)用程序相關(guān)聯(lián)的文件是否仍然有正確的Unix文件權(quán)限以及與該應(yīng)用程序無關(guān)的文件是否被改變或被破壞。6.2.7支持多種結(jié)構(gòu)

早期Linux包管理程序的限制之一是它們只能使軟件包安裝在一種類型的計算機上,例如用于32位或64位Intel兼容的CPU。這對于發(fā)行版的開發(fā)者例如RedHat和Debian以及為了在Linux上使用而打包軟件的應(yīng)用程序賣主造成一個問題,因為可用的打包方法不能產(chǎn)生支持多種結(jié)構(gòu)的包。而且軟件打包者無法指出目標(biāo)軟件包適用的體系結(jié)構(gòu),這使得軟件的最終用戶難以知道那種計算機可以安裝這些軟件包。 RedHat通過把各種體系結(jié)構(gòu)的支持合并進(jìn)RPM解決了這個限制,這種特色通過一個基本的安裝軟件包產(chǎn)生一個可以運行在各種CPU上的包,這大大方便了最終用戶。6.2.8保持軟件包原始特征

保持軟件包原始特征是BOGUS發(fā)行項目管理系統(tǒng)人員提出的概念,它是RPM的一個設(shè)計目標(biāo)。對于RPM產(chǎn)生兩種類型的包:二進(jìn)制包和源代碼包。二進(jìn)制包用于壓縮要安裝和使用的程序;源代碼包包含程序的源代碼以及如何把源代碼編譯成二進(jìn)制包的文檔。這個特色或許是在現(xiàn)代Linux打包軟件(如RPM)與用于其他系統(tǒng)(如商業(yè)Unix系統(tǒng)使用的pkg格式)的打包軟件之間的最大的區(qū)別。源代碼打包使得軟件打包者更容易工作,因為打包者在準(zhǔn)備這些包的新版本時可以使用舊版本的源代碼包作為參考。源代碼打包還方便了最終用戶,因為容易通過改變軟件編譯選項產(chǎn)生一個新的、支持用戶需要特征的二進(jìn)制包。

6.3命令行下的包管理

在命令行下使用rpm命令進(jìn)行包管理。RPM提供以下五種基本操作以實現(xiàn)用戶對軟件包的管理:

安裝----解開被壓縮的軟件包,并安裝軟件到計算機磁盤上。

查詢----通過RPM數(shù)據(jù)庫查詢軟件包的相關(guān)信息。

校驗----校驗軟件包中程序的正確性。

升級----用新版本程序替換軟件包中的舊版本程序。

刪除----清除通過RPM安裝的軟件,即卸載軟件包。

一般RPM不提供建立軟件包的功能,軟件開發(fā)者或其他用戶如果需要創(chuàng)建軟件包可以通過rpmbuild命令來實現(xiàn)。 rpm命令的用法是: rpm[OPTION...]其中,OPTION...為命令選項。由于rpm命令功能強大,所以它的命令選項很多;主要有查詢、校驗、簽名、數(shù)據(jù)庫、安裝、升級、刪除和公共選項等。這里先介紹公共選項,其他選項在每個基本操作中介紹;公共選項是在所有操作中都可以使用的選項。公共選項說明公共選項選項說明-D或--define='MACROEXPR'用表達(dá)式EXPR的值定義宏-E或--eval='EXPR'輸出EXPR宏表達(dá)式--macros=<FILE:...>從指定的列表文件<FILE:...>中讀,以代替默認(rèn)的文件。--nodigest不校驗軟件包的摘要信息。--nosignature不校驗軟件包的簽名。--rcfile=<FILE:...>用指定的配置文件列表<FILE:...>代替默認(rèn)的文件。-r或--root=ROOT用ROOT作為頂級目錄(缺省為“/”)。--querytags顯示已知的查詢標(biāo)志。--showrc顯示最后的rpmrc和宏配置文件。--quiet輸出指令執(zhí)行的簡要信息。-v或--verbose輸出指令執(zhí)行的詳細(xì)信息。--version顯示版本信息。-?或--help顯示幫助信息。--usage簡要顯示命令用法信息。表6-1rpm命令的公共選項及說明6.3.1安裝軟件包

從網(wǎng)絡(luò)上可以搜索到大量應(yīng)用程序的RPM軟件包,大多數(shù)RPM軟件包的命名有一定的規(guī)律,一般有類似如system-config-printer-1.4.1-21.el7.x86_64.rpm的文件名;這些RPM軟件包的文件名一般包括以下幾個部分:

軟件包的名稱,如system-config-printer。

軟件包的版本號,如1.4.1-21。

發(fā)行號,如el7。

硬件平臺,如x86_64等。

擴(kuò)展名,一般就是rpm。

此外,網(wǎng)絡(luò)上還有一種源代碼軟件包,即SRPM軟件包,其軟件包名中帶有src字樣。這種軟件包是不帶編譯后的可執(zhí)行文件,需要用戶自己編譯。以下分別介紹這兩種軟件包的安裝方法。6.3.1.1RPM軟件包的安裝

通常安裝一個RPM軟件包的命令格式是: rpm{-i|--install}[install-options]PACKAGE_FILE...

其中,-i或—install是必需的命令選項、install-options是可選的命令選項,參數(shù)PACKAGE_FILE...是要安裝的軟件包文件名列表。

安裝、升級與刪除選項(install/upgrade/eraseoption)說明選項說明--aid當(dāng)需要時,添加建議的軟件包以便處理。--allfiles安裝或升級軟件包中所有的文件,不管文件是否存在。--allmatches刪除所有指定的軟件包。--badreloc發(fā)生錯誤時,重新配置文件。--excludepathOLDPATH忽略在指定目錄OLDPATH里的所有文件。--excludedocs安裝軟件包時不安裝任何文檔(包括man手冊頁和文本信息文檔)。--force強制更換軟件包或文件。與使用命令選項—replacepkgs、--replacefiles和—oldpackage一樣。-h或--hash軟件包安裝或升級時輸出“#”顯示進(jìn)度;經(jīng)常與-v選項一起使用。--ignoresize安裝前不檢查磁盤空間是否足夠。--ignorearch即使二進(jìn)制包適用的結(jié)構(gòu)格式與主機不匹配,仍然允許安裝和升級軟件包。表6-2rpm命令的安裝、升級與刪除選項及說明--ignoreos即使二進(jìn)制包適用的操作系統(tǒng)與主機不匹配,仍然允許安裝和升級軟件包。--includedocs安裝軟件包時,安裝所有的文檔。這是默認(rèn)設(shè)置。--justdb只是更新數(shù)據(jù)庫,不改變?nèi)魏挝募?-nodigest當(dāng)讀取包時不校驗包或標(biāo)題摘要。--nosignature當(dāng)讀取包時不校驗包或標(biāo)題簽名。--nodeps當(dāng)安裝/升級/刪除軟件包時不做依賴性檢查。--nosuggest不提示丟失包的依賴關(guān)系。--noorder不重新編排軟件包的安裝順序,以便滿足它們彼此間的依賴關(guān)系。--nopostun不執(zhí)行任何安裝腳本(script)文件。該選項與—noscripts、--nopre、--nopost、--nopreun選項等價。--notriggerpostun不執(zhí)行軟件包內(nèi)的任何腳本(script)文件。該選項與—notriggerin、--notriggerun、–notriggers選項等價。--oldpackage允許升級中用舊包替換新包。--percent安裝或升級時顯示完成進(jìn)度的百分比。--prefixNEWPATH如果重新配置文件,就把文件放在指定的目錄NEWPATH之下。--relocateOLDPATH=NEWPATH將原來放在舊目錄OLDPATH下的文件改放到新目錄NEWPATH下。--repackage在軟件包刪除前重新打包文件。--replacefiles強行替換軟件包中的文件。--replacepkgs強行替換軟件包。--test僅僅是測試,并不真的安裝/升級/刪除軟件包。軟件包常用的安裝方法示例:[root@localhostPackages]#rpm-ivhqt-settings-19.23.8.el7.centos.noarch.rpm準(zhǔn)備中...###########################################[100%]正在升級/安裝...1:qt-settings-19.23.8.el7.centos#################################[100%][root@localhostPackages]#

在命令中使用-v選項輸出安裝詳細(xì)信息,用-h選項以輸出“#”符號顯示安裝進(jìn)度。由于該軟件包有簽名,所以安裝中不會出現(xiàn)警告信息;否則有警告信息,如果要消除顯示警告信息可以通過增加—nosignature選項。命令執(zhí)行中輸出的顯示信息“準(zhǔn)備中...”表示正在對軟件包進(jìn)行預(yù)處理,主要是對軟件包的依賴性進(jìn)行檢查。雖然rpm命令的安裝選項很多,但是常用的主要就是v和h選項。由于用戶事先可能并不知道系統(tǒng)中哪些包已經(jīng)安裝、哪些包沒有安裝,所以軟件包在實際安裝過程中會出現(xiàn)一些常見的錯誤:1.軟件包已經(jīng)安裝

如果用戶安裝的軟件包已經(jīng)被安裝過,則會出現(xiàn)以下信息:[root@localhostPackages]#rpm-ivhqt-settings-19.23.8.el7.centos.noarch.rpm準(zhǔn)備中...###########################################[100%]軟件包 qt-settings-19.23.8.el7.centos.noarch 已經(jīng)安裝[root@localhostPackages]#

從輸出的信息可以看到,經(jīng)過預(yù)處理后rpm判斷出該軟件包已經(jīng)安裝過。如果用戶要堅持重新安裝,則可以使用—force或—replacepkgs選項,強制進(jìn)行重新安裝,例如:[root@localhostPackages]#rpm-ivh–force—nosignatureqt-settings-19.23.8.el7.centos.noarch.rpm準(zhǔn)備中...###########################################[100%]1:qt-settings-19.23.8.el7.centos#################################[100%][root@localhostPackages]#

采用—nosignature選項后不再進(jìn)行包的簽名檢查,不顯示警告信息;采用–force選項后將忽略該軟件包已經(jīng)安裝的信息,強制進(jìn)行安裝。2.文件太舊

如果用戶要安裝的軟件包已經(jīng)安裝過新版本時再安裝舊版本,就會出現(xiàn)文件太舊的信息,這時安裝失敗。例如:[root@localhostPackages]#rpm-ivhlibstdc++-4.4.7-23.el6.x86_64.rpm警告:libstdc++-4.4.7-23.el6.x86_64.rpm:頭V3RSA/SHA1Signature,密鑰IDc105b9de:NOKEY準(zhǔn)備中...###########################################[100%]

軟件包libstdc++-4.8.5-36.el7_6.2.x86_64(比libstdc++-4.4.7-23.el6.x86_64還要新)已經(jīng)安裝 file/usr/lib64/libstdc++.so.6frominstalloflibstdc++-4.4.7-23.el6.x86_64conflictswithfilefrompackagelibstdc++-4.8.5-36.el7_6.2.x86_64[root@localhostPackages]#

這表示要安裝的軟件包libstdc++-4.4.7-23.el6.x86_64.rpm與系統(tǒng)已經(jīng)安裝的軟件包libstdc++-4.8.5-36.el7_6.2.x86_64相比文件太舊,則軟件包不能安裝。如果用戶希望忽略這個錯誤信息并繼續(xù)安裝時,可以采用強制替換軟件包中文件的—replacefiles或--force選項。由于該軟件包沒有簽名,所以安裝中會出現(xiàn)警告信息。3.依賴關(guān)系檢查失敗

在執(zhí)行rpm命令安裝軟件包時,默認(rèn)會自動檢查軟件包的依賴關(guān)系;即要安裝的軟件包如果依賴其他軟件包,而其他軟件包還沒有安裝時,會出現(xiàn)依賴關(guān)系檢查失敗的信息,當(dāng)然安裝也會終止。例如:[root@localhostPackages]#rpm-ivhqt-4.8.7-2.el7.x86_64.rpm錯誤:依賴檢測失敗:qt-settings被qt-1:4.8.7-2.el7.x86_64需要[root@localhostPackages]#

這表示要安裝的軟件包qt-4.8.7-2.el7.x86_64.rpm依賴qt-settings-19.23.8.el7.centos.noarch.rpm軟件包,因此解決依賴關(guān)系檢查失敗引起的問題需要先安裝qt-settings-19.23.8.el7.centos.noarch.rpm軟件包。

安裝選項—nodeps可以要求rpm命令不做依賴性檢查,因此用戶可以使用該選項進(jìn)行強制安裝,但是最好不要這樣做,因為忽略了依賴關(guān)系檢查后即使軟件包安裝了也不一定能正常運行。6.3.1.2安裝源代碼軟件包前面所介紹的RPM軟件包是指包內(nèi)已經(jīng)帶有可執(zhí)行程序的軟件包,安裝后即可運行?,F(xiàn)在許多網(wǎng)站除了提供這種軟件包外也提供源代碼軟件包,即SRPM軟件包,其軟件包名中帶有src字樣。用戶可以根據(jù)自己的需要從相關(guān)的網(wǎng)站下載RPM或SRPM軟件包。與RPM軟件包安裝方式相比,使用源代碼軟件包(SRPM軟件包)進(jìn)行安裝相對會比較復(fù)雜,因為需要由用戶自己編譯源代碼生成可執(zhí)行文件。在Linux系統(tǒng)中,有些軟件只能以SRPM軟件包的形式提供,如Linux系統(tǒng)內(nèi)核和某些應(yīng)用程序源代碼。使用源代碼軟件包安裝軟件是Linux系統(tǒng)下進(jìn)行軟件安裝的重要手段,也是使用Linux系統(tǒng)的最主要的優(yōu)勢之一。對于專業(yè)用戶而言使用源代碼軟件包安裝軟件,不僅能按照用戶的需要選擇安裝方式進(jìn)行安裝,而且能夠深入了解源代碼學(xué)習(xí)到更多的知識。下面簡要介紹SRPM軟件包的安裝方法:第一,將SRPM軟件包導(dǎo)入系統(tǒng)。下載后,以超級用戶身份執(zhí)行“rpm–ivhPACKAGE_FILE”命令,將源代碼軟件包導(dǎo)入系統(tǒng)。如果是RPM包,則該命令執(zhí)行后會將包內(nèi)的可執(zhí)行程序安裝到Linux系統(tǒng)的某個bin或sbin目錄下;而如果是SRPM包,則在/root/rpmbuild/SOURCES目錄下導(dǎo)入一個包含軟件包名稱的壓縮文件,形如package_name.tar.gz等。第二,將壓縮文件解壓縮。源代碼軟件包導(dǎo)入后的壓縮文件通常以.tar.gz做為擴(kuò)展名,也有以tar.Z、tar.bz2或.tgz做為擴(kuò)展名的。不同的擴(kuò)展名表示壓縮時所用的命令不同,當(dāng)然解壓縮的命令也不相同,用戶既可以在命令行下解壓縮也可以在圖形方式下解壓縮,有關(guān)如何解壓縮的內(nèi)容請參閱第四章的相關(guān)章節(jié)。第三,編譯源代碼當(dāng)解壓縮成功后,會建立一個目錄,目錄名一般就是軟件包名。用cd命令進(jìn)入到對應(yīng)的目錄中。在編譯之前最好閱讀Readme文件和Install文件。盡管許多源代碼軟件包都使用基本相同的命令,但是有時在閱讀這些文件時能發(fā)現(xiàn)一些重要的信息。例如,安裝該軟件包是否需要其他軟件或程序庫的支持;軟件包中是否含有可以自動安裝的腳本程序(.sh)等。在安裝前閱讀這些說明文件,有助于安裝成功和節(jié)約時間。如果目錄中已經(jīng)有Makefile文件,則用戶只要執(zhí)行make命令就可以完成安裝;如果目錄中沒有Makefile文件,則一般有一個可執(zhí)行的configure腳本文件,執(zhí)行它會自動檢查編譯器及編譯該軟件的條件是否滿足,如果檢查通過,則生成Makefile文件。再執(zhí)行make和makeinstall命令即可完成源代碼軟件包的安裝。否則,輸出錯誤信息且運行終止。在執(zhí)行configure腳本文件時常見的錯誤、判斷方法和解決措施是:1.沒有安裝C或C++編譯器判斷方法:執(zhí)行命令gcc(C++則為g++),看是否提示找不到該命令。解決措施:將CentOS7鏡像光盤(即下載的iso文件)裝入光驅(qū),然后進(jìn)入/run/media/root/CentOS7x86_64/Packages目錄,執(zhí)行命令:#rpm-ivhgcc*

注意:A、目錄名包含空格要用轉(zhuǎn)義符或用tab鍵;B、如果有提示缺乏依賴文件則先安裝它。2.沒有安裝make工具判斷方法:執(zhí)行命令make,看是否提示找不到該命令。解決措施:進(jìn)入同上的Packages目錄,然后執(zhí)行命令:#rpm-ivhmake*3.沒有安裝autoconf工具判斷方法:執(zhí)行命令autoconf,看是否提示找不到該命令。解決措施:進(jìn)入同上的Packages目錄,然后執(zhí)行命令:#rpm-ivhautoconf*4.缺少某些鏈接庫判斷方法:在make時,提示缺少某些鏈接庫文件。解決措施:從網(wǎng)絡(luò)上下載并安裝包含這些鏈接庫文件的包。

這些錯誤是在安裝Linux系統(tǒng)時沒有全部安裝或沒有選中軟件開發(fā)包造成的。除了采用命令方式解決這些問題外,如果用戶已經(jīng)安裝了圖形方式下的軟件包管理工具,則也可以在圖形方式下添加這些軟件包。

參考示例:安裝ImageMagick--15.el7_2.src.rpm源代碼軟件包。ImageMagick(TM)是一個免費的創(chuàng)建、編輯、合成圖片的軟件。它可以讀取、轉(zhuǎn)換、寫入多種格式的圖片;具體用法在安裝后用man–aImageMagick查看。安裝具體方法如下: [root@localhostroot]#rpm–ivhImageMagick--15.el7_2.src.rpm*導(dǎo)入源代碼包,未指定目標(biāo)目錄時,則默認(rèn)在/root/rpmbuild目錄* [root@localhostroot]#cd/root/rpmbuild/SOURCES [root@localhostSOURCES]#tar–xvfImageMagick-6.7.8-9.tar.xz *從tar包解壓縮還原文件* [root@localhostSOURCES]#cdImageMagick-6.7.8-9

[root@localhostImageMagick-6.7.8-9]#./configure *執(zhí)行configure文件,產(chǎn)生Makefile文件*[root@localhostImageMagick-6.7.8-9]#make *執(zhí)行make命令,編譯源代碼*[root@localhostImageMagick-6.7.8-9]#makeinstall *安裝編譯生成的可執(zhí)行文件*[root@localhostImageMagick-6.7.8-9]#makeclean *刪除安裝時產(chǎn)生的臨時文件*以上的解壓縮和從tar包中還原文件操作,在圖形界面下用軟件打包器也可以一步完成并且更方便、速度更快。如果是*.tar.gz壓縮包,則使用tar–zxvf*.tar.gz解壓縮,當(dāng)然同樣可以在圖形界面下用軟件打包器解壓縮。有些源代碼軟件包在編譯安裝后可以用makeuninstall命令卸載。如果不提供此功能,則該軟件的卸載必須手動刪除。6.3.2軟件包查詢

軟件包查詢實際上就是查詢RPM所維護(hù)的數(shù)據(jù)庫,通常查詢一個RPM軟件包的命令格式是: rpm{-q|--query}[query-options][PACKAGE_NAME...]

其中,-q或—query是必需的命令選項、query-options是可選的命令選項,參數(shù)PACKAGE_NAME...是軟件包名列表,該參數(shù)是可選的;用戶查詢指定軟件包的信息時只要輸入軟件包名不要帶版本號和發(fā)行號,另外軟件包名不支持通配符。查詢選項(queryoptions)說明查詢選項選項說明-c或--configfilespackage_name列出指定軟件包的所有配置文件。-d或--docfilespackage_name列出指定軟件包的所有文檔文件。--dumppackage_name列出指定軟件包中每個文件的校驗信息。-l或--listpackage_name列出指定軟件包中所有的文件安裝的位置。--queryformat=QUERYFORMATPackage_name按指定的格式查詢。格式QUERYFORMAT有“name”、“version”和“description”三種。該選項要與-i選項一起使用。-s或--statepackage_name顯示指定軟件包中每個文件的狀態(tài)。-a或--all查詢系統(tǒng)中所有的軟件包。-f或--filefile_name查詢擁有指定文件的軟件包。文件名必須帶完整的路徑。-g或--groupgroup_name查詢位于指定組群的軟件包。-p或--packagepackagefile_name查詢指定軟件包文件的包名稱、版本號和發(fā)行號。--specfilepackagefile_name查詢指定的軟件包文件。--whatrequirespackage_name查詢指定軟件包所需要的依賴關(guān)系。--whatprovidespackage_name查詢指定軟件包所提供的依賴關(guān)系。表6-3rpm命令的查詢選項及說明軟件包常用的查詢方法參考示例1:查詢軟件包名為libstdc++的包名稱、版本號和發(fā)行號。 [root@localhostPackages]#rpm-qlibstdc++ libstdc++-4.8.5-36.el7_6.2.x86_64 [root@localhostroot]類似的命令是: [root@localhostPackages]#rpm-qplibstdc++-4.4.7-23.el6.x86_64.rpm

選項-p雖然也是顯示軟件包的基本信息,但是它會進(jìn)行軟件包的簽名等項檢查。注意:選項-qp一起用必須用包的全名!參考示例2:查詢軟件包system-config和acl所需要的依賴關(guān)系。[root@localhostPackages]#rpm-q--whatrequiressystem-config-usersaclsystem-config-users-docs-1.0.9-6.el7.noarchsane-backends-1.0.24-12.el7.x86_64cups-1.6.3-35.el7.x86_64[root@localhostPackages]#從顯示的結(jié)果可以看到,軟件包system-config-users需要依賴system-config-users-docs-1.0.9-6.el7.noarch包;軟件包acl需要依賴其他兩個sane-backends-1.0.24-12.el7.x86_64和cups-1.6.3-35.el7.x86_64軟件包。注意:這種查詢只需要輸入包名,不能用全名!參考示例3:查詢系統(tǒng)中所有軟件包的基本信息。 [root@localhostmnt]#rpm-qa

執(zhí)行該命令后將顯示系統(tǒng)中所有已經(jīng)安裝的軟件包名稱、版本號和發(fā)行號信息。參考示例4:查詢軟件包acl中的所有文件安裝位置。 [root@localhostPackages]#rpm-qlacl/usr/bin/chacl/usr/bin/getfacl/usr/bin/setfacl/usr/share/doc/acl-2.2.51/usr/share/doc/acl-2.2.51/CHANGES.gz/usr/share/doc/acl-2.2.51/COPYING/usr/share/doc/acl-2.2.51/COPYING.LGPL/usr/share/doc/acl-2.2.51/PORTING/usr/share/doc/acl-2.2.51/README/usr/share/locale/de/LC_MESSAGES/acl.mo/usr/share/locale/es/LC_MESSAGES/acl.mo/usr/share/locale/fr/LC_MESSAGES/acl.mo/usr/share/locale/gl/LC_MESSAGES/acl.mo/usr/share/locale/pl/LC_MESSAGES/acl.mo/usr/share/locale/sv/LC_MESSAGES/acl.mo/usr/share/man/man1/chacl.1.gz/usr/share/man/man1/getfacl.1.gz/usr/share/man/man1/setfacl.1.gz/usr/share/man/man5/acl.5.gz[root@localhostPackages]#

該軟件包查詢時只要使用軟件包名稱即可。6.3.3軟件包校驗

軟件包校驗是檢查軟件包中的所有文件是否與系統(tǒng)中所安裝的一致。軟件包校驗就是根據(jù)RPM所維護(hù)的數(shù)據(jù)庫對文件大小、存取權(quán)限和屬主屬性等進(jìn)行校驗。當(dāng)用戶安裝了新程序后,如果懷疑某些文件被破壞時,可以使用軟件包校驗操作。通常校驗一個RPM軟件包的命令格式是: rpm{-V|--verify}[verify-options][PACKAGE_NAME...]

其中,-V或—verify是必需的命令選項、verify-options是可選的命令選項,參數(shù)PACKAGE_NAME...是軟件包名列表,該參數(shù)是可選的;軟件包名的使用規(guī)則與軟件包查詢操作是相同的。校驗選項(verifyoptions)說明校驗選項選項說明--nomd5package_name對指定的軟件包不使用MD5編碼校驗文件的大小與正確性。--nofilespackage_name對指定的軟件包不校驗軟件包中文件的屬性。--nodepspackage_name對指定的軟件包不校驗軟件包的依賴關(guān)系。--noscriptpackage_name對指定的軟件包不執(zhí)行校驗Scripts文件。-a或--all校驗系統(tǒng)中所有的軟件包。-f或--filefile_name校驗擁有指定文件的軟件包。文件名必須帶完整的路徑。-g或--groupgroup_name校驗位于指定組群的軟件包。-p或--packagepackagefile_name校驗指定軟件包文件大小、屬性等。--specfilepackagefile_name校驗指定的軟件包文件。--whatrequirespackage_name校驗指定軟件包所需要的依賴關(guān)系。--whatprovidespackage_name校驗指定軟件包所提供的依賴關(guān)系。表6-4rpm命令的校驗選項及說明軟件包常用的校驗方法參考示例1:校驗指定的/run/media/root/CentOS7x86_64/Packages/acl軟件包。 [root@localhostroot]#rpm-Vacl [root@localhostroot]參考示例2:校驗當(dāng)前目錄下system-config-users-docs-1.0.9-6.el7.noarch.rpm軟件包。[root@localhostPackages]#rpm–Vpsystem-config-users-docs-1.0.9-6.el7.noarch.rpm[root@localhostPackages]#注意:要用包全名。這個校驗在自己下載軟件包安裝前做個校驗是非常必要的。參考示例3:校驗指定軟件包文件大小、屬性等。 [root@localhostDownloads]#rpm-Vplibstdc++-4.4.7-23.el6.x86_64.rpm警告:libstdc++-4.4.7-23.el6.x86_64.rpm:頭V3RSA/SHA1Signature,密鑰IDc105b9de:NOKEY....L..../usr/lib64/libstdc++.so.6遺漏/usr/lib64/libstdc++.so.6.0.13[root@localhostDownloads]#

從上面的參考示例可見,如果校驗正常則沒有任何信息輸出,如參考示例1和2;如果校驗中有發(fā)現(xiàn)問題則rpm命令就會顯示錯誤信息,如參考示例3。錯誤信息的格式先是8位長度的字符串,如果被校驗的文件是配置文件則緊跟一個標(biāo)志“c”,接著是文件名。8位字符的每一個用來表示被校驗文件與RPM數(shù)據(jù)庫中一種屬性的比較結(jié)果。錯誤信息中輸出的每個字符含義見表5-5。表6-5rpm命令校驗錯誤信息及含義輸出字符表示含義.表示該屬性測試通過。5表示MD5校驗碼測試失敗。S表示文件大小測試失敗。L表示符號鏈接測試失敗。T表示文件修改日期測試失敗。D表示設(shè)備測試失敗。U表示用戶測試失敗。G表示用戶組群測試失敗。M模式e(包括文件權(quán)限和文件類型)測試失敗。6.3.4軟件包升級

軟件包的升級操作與軟件包的安裝操作非常類似。通常升級一個RPM軟件包的命令格式是:rpm{-U|--upgrade}[install-options]PACKAGE_FILE... 或rpm{-F|--freshen}[install-options]PACKAGE_FILE...

其中,-U或—upgrade和-F或--freshen是必需的命令選項、install-options是可選的命令選項,與安裝操作時的命令選項是一樣的(見表5-2)。參數(shù)PACKAGE_FILE...是要升級的軟件包文件名列表。

這兩種命令用法之間的區(qū)別只是,-U

選項將升級當(dāng)前指定的軟件包,如果這個包還沒有安裝,就安裝它;如果已經(jīng)安裝,則對它升級。-F

選項只是對已經(jīng)安裝的軟件包進(jìn)行升級(即刷新)。在具體應(yīng)用中,-U

選項比較常用,尤其是在命令行中包含一系列RPM軟件包的時候。這樣自動地使未安裝的包被安裝,而已安裝的包被升級。

在升級軟件包時,rpm命令將自動刪除舊版本的軟件包。如果用戶對舊版本的軟件包做過配置,則rpm命令能自動處理配置文件,即將原有的配置文件更名保存;用戶在升級完成后可以查看新、舊配置文件,比對它們之間的不同并進(jìn)行修改,以保證升級后的軟件能正常地運行。

如果用戶下載的軟件包版本比已經(jīng)安裝的軟件包版本還舊,則在非特別指定的情況下rpm命令不會執(zhí)行“升級”操作;除非用戶在升級命令中采用—oldpackage選項,則rpm命令將用舊版本的軟件包替換新版本的軟件包。軟件包常用的升級方法參考示例1:升級指定的system-config-users軟件包。[root@localhostPackages]# rpm-Uvhsystem-config-users-docs-1.0.9-6.el7.noarch.rpm準(zhǔn)備中...#################################[100%]

軟件包system-config-users-docs-1.0.9-6.el7.noarch已經(jīng)安裝[root@localhostPackages]#參考示例2:僅僅測試ImageMagick軟件包并不真正升級。[root@localhostDownloads]#rpm-Uvh--testImageMagick--15.el7_2.src.rpm[root@localhostDownloads]#

增加—test選項后,rpm命令并不安裝或升級軟件包,只是進(jìn)行測試操作。這個測試輸出信息表示該軟件包安裝沒有問題;如果測試結(jié)果存在文件沖突或依賴關(guān)系檢查失敗則會輸出相應(yīng)的信息。6.3.5軟件包刪除(卸載)

當(dāng)所安裝的軟件包不再使用時,為了節(jié)省磁盤空間可以將已安裝的軟件包刪除(卸載)。刪除RPM軟件包的格式是:rpm{-e|--erase}[--allmatches][--nodeps][--noscripts][--notriggers][--repackage][--test]PACKAGE_NAME...

其中,參數(shù)PACKAGE_NAME...是軟件包名列表,不是軟件包文件名列表,-e或--erase是必需的命令選項,其他的為可選的命令選項,含義參見表5-2。參考示例1:刪除linuxconf-gui-1.34r3-1.i386.rpm軟件包。 [root@localhostroot]#rpm-eImageMagick [root@localhostroot]#

注意:這里使用的是軟件包名,而不是軟件包文件名。

有時在刪除軟件包時,會有錯誤提示信息,這一般是系統(tǒng)中還有其他的軟件包要依賴當(dāng)前正要刪除的軟件包。參考示例2:測試刪除acl軟件包。[root@localhostDownloads]#rpm-e--testacl錯誤:依賴檢測失?。?acl被(已安裝)sane-backends-1.0.24-12.el7.x86_64需要 acl被(已安裝)cups-1:1.6.3-35.el7.x86_64需要[root@localhostDownloads]#

在這種情況下,雖然用戶可以使用—nodeps選項,忽略依賴關(guān)系繼續(xù)刪除,但是最好不要這樣做,否則該軟件包刪除后其他的軟件包也不能運行。

一般在刪除一個軟件包前,可以在命令中先使用—test選項以檢查該軟件包與其他軟件包之間的依賴關(guān)系,在沒有錯誤信息輸出時再實際進(jìn)行刪除操作。6.3.6數(shù)據(jù)庫維護(hù)

在Linux系統(tǒng)中之所以可以完成對RPM軟件包的一系列管理,是因為系統(tǒng)中維護(hù)著一個RPM軟件包的數(shù)據(jù)庫。有時執(zhí)行rpm命令不能實現(xiàn)軟件包的安裝、升級、查詢、驗證和刪除就是由于該數(shù)據(jù)庫存在問題而引起的。維護(hù)RPM數(shù)據(jù)庫的命令格式是: rpm{--initdb|--rebuilddb}[-v][--dbpathDIRECTORY][--rootDIRECTORY]

其中,--initdb或—rebuilddb為必需的命令選項,其他為可選的命令選項。當(dāng)使用—initdb選項時,在系統(tǒng)中建立一個新的RPM數(shù)據(jù)庫;使用—rebuilddb選項時,重建包括所有已經(jīng)安裝軟件包的數(shù)據(jù)庫??蛇x命令選項的說明可選選項選項說明-v顯示命令執(zhí)行的詳細(xì)信息。--dbpathDIRECTORY指定要存放RPM數(shù)據(jù)庫的路徑目錄名。--rootDIRECTORY指定要作為根目錄的目錄。表6-6rpm命令數(shù)據(jù)庫維護(hù)選項參考示例1:在/root/rpmdb目錄下建立一個新的RPM數(shù)據(jù)庫。[root@localhostroot]#rpm--initdb-v--dbpath/root/rpmdb進(jìn)入rpmdb目錄檢查RPM數(shù)據(jù)庫建立情況:[root@localhostroot]#cdrpmdb[root@localhostrpmdb]#lsBasenames__db.002GroupObsoletenameRequirenameTriggernameConflictname__db.003InstalltidPackagesSha1header __db.001DirnamesNameProvidenameSigmd5[root@localhostrpmdb]#從檢查結(jié)果可以看到,新數(shù)據(jù)庫已經(jīng)建立。注意:選項—dbpath所帶的目錄名參數(shù)必須是絕對路徑名,否則不會在指定的目錄中建立RPM數(shù)據(jù)庫。

參考示例2:重建所有已經(jīng)安裝軟件包的數(shù)據(jù)庫。 [root@localhostroot]#rpm–rebuilddb

這個命令執(zhí)行時要檢查系統(tǒng)中所有已經(jīng)安裝的軟件包,所以花費的時間是比較長的。另外,在執(zhí)行rpm命令時,不要再執(zhí)行重建數(shù)據(jù)庫命令,否則系統(tǒng)會顯示“設(shè)備或資源忙”錯誤信息。

6.4圖形方式下的RPM包管理

在CentOS7的發(fā)行版本中圖形化的軟件包管理工具只有“軟件”和“軟件更新”,它是“應(yīng)用程序”、“系統(tǒng)工具”菜單下的兩個菜單項;“軟件”的界面如圖6-1所示,其主要功能是添加或刪除軟件包,可以訪問選定軟件包的主頁,也可以查看軟件包里的文件,還可以查詢軟件包的依賴或被依賴的關(guān)系,在這個界面上還可以輸入軟件包名或包名的部分字符在在系統(tǒng)指定的范圍里進(jìn)行查找?!败浖隆逼渲饕δ苁歉萝浖?。圖6-1軟件界面6.4.1添加/刪除應(yīng)用程序

從圖6-1可以看到,窗體左側(cè)是軟件包集,其中“SoftwareRepositoreies”是CentOS7的軟件資料庫,當(dāng)用戶使用yum命令安裝軟件包時系統(tǒng)會先在本機查找,如果沒有且系統(tǒng)若聯(lián)網(wǎng)則就在資料庫(CentOS站點、社區(qū)站點、指定的第三方站點)里找,當(dāng)用戶選擇某個軟件包集時,右上邊的窗口中出現(xiàn)該包集中的軟件包,如圖6-2所示,其中已經(jīng)安裝的軟件包的盒子圖標(biāo)呈現(xiàn)打開狀態(tài)且復(fù)選鈕被選中(打鉤),如果要安裝某個軟件包,則用鼠標(biāo)左鍵選擇或用上下鍵移動藍(lán)色亮帶到合適的位置,再用鼠標(biāo)左鍵雙點擊它或點擊“安裝”按鈕,最后點擊窗體標(biāo)題欄上的“應(yīng)用更改”按鈕,選中某個軟件包時中間下面的小窗體會顯示該軟件包的描述信息如,圖6-3所示。所列出的軟件包安裝時,系統(tǒng)一般會自動檢查其依賴關(guān)系并安裝相關(guān)的包。

當(dāng)藍(lán)色亮帶移到已安裝的軟件包上時,窗體中“安裝”按鈕變?yōu)椤耙瞥卑粹o,再點擊“應(yīng)用更改”按鈕即可刪除該軟件包,同樣這里列出的軟件包在刪除時,系統(tǒng)會自動檢查其依賴關(guān)系。

顯然,用圖形方式畢命令行方式簡單、直觀和方便,但功能沒有命令行強大,使用也沒有那么靈活。圖6-2已安裝和未安裝的包圖6-3安裝軟件包6.4.2添加CentOS7資料庫源

當(dāng)用戶在這個“軟件”的軟件包集中都找不到需要的軟件包時,可以對軟件資料庫進(jìn)行新站點加源,所謂的加源就是把新站點的網(wǎng)址鏡像添加到CentOS7的軟件資料庫中,但是,在加源的站點上要下載軟件包時會要求用戶加以信任確認(rèn);軟件資料庫的加源可以用wget命令方法。 GNUwget是一個免費的實用程序,用于從Web上非交互式下載文件。它支持HTTP,HTTPS和FTP協(xié)議,以及通過HTTP代理進(jìn)行檢索。wget是非交互式的,這意味著它可以在后臺工作,而用戶沒有登錄。即允許用戶開始檢索并斷開與系統(tǒng)的連接,讓wget完成工作。相比之下,大多數(shù)Web瀏覽器都需要用戶的持續(xù)存在,這在傳輸大量數(shù)據(jù)時可能是一個很大的障礙。 wget可以跟蹤HTML,XHTML和CSS頁面中的鏈接,以創(chuàng)建遠(yuǎn)程網(wǎng)站的本地版本,完全重新創(chuàng)建原始站點的目錄結(jié)構(gòu);這有時被稱為“遞歸下載”??梢砸體get將下載文件中的鏈接轉(zhuǎn)換為指向本地文件,以供脫機查看。如果由于網(wǎng)絡(luò)問題導(dǎo)致下載失敗,當(dāng)網(wǎng)絡(luò)恢復(fù)時它將斷點續(xù)傳直到整個文件。限于篇幅,這里不介紹命令的具體用法,使用時請參見命令手冊。用wget命令進(jìn)行加源,#wget-O/etc/yum.repos.d/epel.repo/repo/epel-7.repo其中,-O是命令選項、/etc/yum.repos.d/epel.repo為選項參數(shù),用于存放輸出數(shù)據(jù)的文件。命令執(zhí)行過程如下:#wget-O/etc/yum.repos.d/epel.repo/repo/epel-7.repo--2019-09-0303:58:49--/repo/epel-7.repo正在解析主機()...44,92,89,...正在連接()|44|:80...已連接。已發(fā)出HTTP請求,正在等待回應(yīng)...200OK長度:664[application/octet-stream]正在保存至:“/etc/yum.repos.d/epel.repo”100%[=============================================>]664--.-K/s用時0s2019-09-0303:58:49(98.5MB/s)-已保存“/etc/yum.repos.d/epel.repo”[664/664])

最后加源的結(jié)果如圖4-13紅線框所示。6.4.3軟件包依賴關(guān)系檢查

當(dāng)要檢查某個軟件包依賴哪些其它軟件包時,選中該軟件包后點擊“Required”按鈕即可查看到它依賴誰,如圖6-4所示;當(dāng)要檢查某個軟件包被誰依賴時,選中該軟件包后點擊“Dependent”按鈕即可查看到它被誰依賴誰,如圖6-5所示。圖6-4包依賴的軟件包圖6-5軟件包被依賴6.4.4查看的軟件包文件

圖形方式下查看軟件包里有哪些文件非常簡單,選中某個軟件包后點擊“文件”按鈕即可看到軟件包里的文件、安裝后存放的路徑、文件數(shù)等信息,如圖6-6所示。圖6-6查看軟件包文件6.4.4查找軟件包

圖形方式下查找軟件包只要在搜索輸入框內(nèi)輸入軟件包名后回車即可,如圖6-7所示。6.4.5軟件更新

圖形方式下更新軟件包時,運行菜單欄“應(yīng)用程序”下的“系統(tǒng)工具”菜單下的“軟件更新”菜單項,系統(tǒng)會自動檢查是否有需要更新的軟件,如果有則啟動更新,否則顯示信息相關(guān)退出,如圖6-8所示。

圖6-7軟件更新6.5包管理器yumyum是一個基于rpm的交互式包管理器,以命令的方式存在。它可以自動執(zhí)行系統(tǒng)更新,包括依賴性分析和基于“存儲庫”元數(shù)據(jù)的更新處理。它還可以執(zhí)行新程序包的安裝,刪除舊程序包以及對許多其他命令或服務(wù)的已安裝和/或可用程序包執(zhí)行查詢。yum類似于apt-get和smart等其他高級包管理器。yumex是yum命令的圖形用戶界面,但它不在CentOS7的資源庫中,需要通過加源其它站點來安裝。6.5.1命令形式y(tǒng)um命令功能強大、使用靈活,但用法較為復(fù)雜。做為開發(fā)者或者系統(tǒng)管理者掌握它可以方便地進(jìn)行軟件包的處理以大大提高系統(tǒng)開發(fā)和管理效率。命令用法: yum[options][command][package...]其中,command是下列形式之一:*installpackage1[package2][...]*update[package1][package2][...]*update-to[package1][package2][...]*update-minimal[package1][package2][...]*check-update*upgrade[package1][package2][...]*upgrade-to[package1][package2][...]*distribution-synchronization[package1][package2][...]*remove|erasepackage1[package2][...]*autoremove[package1][...]*list[...]*info[...]*provides|whatprovidesfeature1[feature2][...]*clean[packages|metadata|expire-cache|rpmdb|plugins|all]*makecache[fast]*groups[...]*searchstring1[string2][...]*shell[filename]*reinstallpackage1[package2][...]*downgradepackage1[package2][...]*deplistpackage1[package2][...]*repolist[all|enabled|disabled]*repoinfo[all|enabled|disabled]*repository-packages<enabled-repoid> <install|remove|remove-or-rein‐stall|remove-or-distribution-synchronization>[package2][...]*version[all|installed|available|group-*|nogroups*|grouplist|groupinfo]*history[info|list|packages-list|packages-info|summary|addon-info|redo|undo|rollback|new|sync|stats]*load-transaction[txfile]*updateinfo[summary|list|info|remove-pkgs-ts|exclude-updates|exclude-all|check-running-kernel]*fssnapshot[summary|list|have-space|create|delete]*fs[filters|refilter|refilter-cleanup|du]*check*help[command]除非給出--help或-h選項,否則必須存在上述命令之一。6.5.2command說明:

在yum命令中通過command告訴系統(tǒng)要對包做何操作,因此必須了解他們的功能和需要注意的問題,如表6-1所示,更為具體的描述參見yum手冊。command功能及說明表功能說明installpackage1…向系統(tǒng)中安裝一個或多個軟件包update更新系統(tǒng)中的一個或多個軟件包update-to此命令的作用類似于“upgrade”,但必須指定要更新到的程序包的版本。update-minimal此命令工作方式類似于“upgrade”,但轉(zhuǎn)到“最新”包匹配,該匹配修復(fù)影響系統(tǒng)的問題。check-update檢查是否有可用的軟件包更新。upgrade更新軟件包的同時考慮軟件包取代關(guān)系。upgrade-to此命令的工作方式與“upgrade”類似,但必須指定要更新到的包版本。distribution-synchronization同步軟件包到最新可用的版本。remove或erase從系統(tǒng)中移除一個或多個軟件包。autoremove此命令的工作方式類似于在使用clean_requirements_on_remove參數(shù)的情況下運行“remove”命令。還可以不指定任何參數(shù),在這一點上,它會嘗試刪除任何不是由用戶顯式安裝的、任何軟件都不依賴的包(所謂的葉包)。list列出一個或一組軟件包。若不指定軟件包名,則列出所有的軟件包。info用于列出有關(guān)可用包的描述和摘要信息。provides或whatprovidesfeature1…用于確定哪個包提供某些功能或文件。clean刪除rpm緩存數(shù)據(jù)。makecache創(chuàng)建元數(shù)據(jù)緩存。groups在內(nèi)核版本3.4.2中新增的一種命令,它收集所有作用于組的子命令。searchstring1…在軟件包詳細(xì)信息中搜索指定字符串。shell運行交互式的yumshell文件。當(dāng)指定文件名時,該文件的內(nèi)容將在yumshell模式下執(zhí)行,否則交互式運行。reinstallpackage1…覆蓋安裝軟件包。downgradepackage1…降級軟件包。deplistpackage1…列出軟件包的依賴關(guān)系。repolist顯示已配置資源庫中的源。repoinfo這個命令的工作方式與repolist-v完全相同。repository-packages作為包的集合(如“yumgroups”),允許用戶以單個實體的形式安裝或刪除它們。version顯示機器可用的源版本。history允許用戶查看在過去事務(wù)處理中用yum發(fā)生的事情。load-transaction此命令將重新加載保存的yum事務(wù)文件,這允許您在一臺計算機上運行事務(wù),然后在另一臺計算機上使用它。updateinfo這個命令有很多子命令來處理資料庫中的updateinfo。fssnapshot創(chuàng)建文件系統(tǒng)快照,或列出/刪除當(dāng)前快照。fs此命令有幾個子命令可用于處理主機的文件系統(tǒng)數(shù)據(jù),主要用于刪除語言/文檔以進(jìn)行最少的安裝。check檢查RPM數(shù)據(jù)庫問題。此命令執(zhí)行時間花費較長。help顯示yum用法提示并退出。表6-1command功能及說明6.5.3options說明

命令yum的選項很多,大多數(shù)命令行選項也可以使用配置文件說明要設(shè)置的必要配置選項。選項及含義如表6-2所示。選項及含義:選項含義-h,--help顯示此幫助消息并退出-t,--tolerant忽略錯誤-C,--cacheonly完全從系統(tǒng)緩存運行,不升級緩存-c[configfile],--config=[configfile]配置文件路徑-R[minutes],--randomwait=[minutes]命令最長等待時間-d[debuglevel],--debuglevel=[debuglevel]調(diào)試輸出級別--showduplicates在list/search命令下,顯示資料庫源里重復(fù)的條目-e[errorlevel],--errorlevel=[errorlevel]錯誤輸出級別--rpmverbosity=[debuglevelname]RPM調(diào)試輸出級別-q,--quiet靜默執(zhí)行(不顯示執(zhí)行詳細(xì)信息)-v,--verbose顯示詳盡的執(zhí)行過程-y,--assumeyes回答全部問題為是--assumeno回答全部問題為否--version顯示Yum版本然后退出--installroot=[path]設(shè)置安裝根目錄--enablerepo=[repo]啟用一個或多個軟件源(支持通配符)--disablerepo=[repo]禁用一個或多個軟件源(支持通配符)-x[package],--exclude=[package]采用全名或通配符排除軟件包--disableexcludes=[repo]禁止從主配置,從源或者從任何位置排除--disableincludes=[repo]禁用配置文件中定義的包含項。--obsoletes更新時處理軟件包取代關(guān)系--noplugins禁用Yum插件--nogpgcheck禁用GP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論