Linux軟件安裝——軟件包
摘要:本文主要學習了Linux下軟件安裝的相關知識。
軟件包
簡介
Linux下的軟件包眾多,且幾乎都是經GPL授權、免費開源(無償公開源代碼)的。這意味着如果你具備修改軟件源代碼的能力,只要你願意,可以隨意修改。
GPL,全稱General Public License,中文名稱“通用性公開許可證”,簡單理解GPL就是一個保護軟件自由的一個協議,經GPL協議授權的軟件必須開源。
Linux下的軟件包可細分為兩種,分別是源碼包和二進制包。
Linux源碼包
實際上,源碼包就是一大堆源代碼程序,是由程序員按照特定的格式和語法編寫出來的。
我們都知道,計算機只能識別機器語言,也就是二進制語言,所以源碼包的安裝需要一名“翻譯官”將“abcd”翻譯成二進制語言,這名“翻譯官”通常被稱為編譯器。“編譯”指的是從源代碼到直接被計算機(或虛擬機)執行的目標代碼的翻譯過程,編譯器的功能就是把源代碼翻譯為二進制代碼,讓計算機識別並運行。
另外,由於源碼包的安裝需要把源代碼編譯為二進制代碼,因此安裝時間較長。
為了解決使用源碼包安裝方式的這些問題,Linux軟件包的安裝出現了使用二進制包的安裝方式。
Linux二進制包
二進制包,也就是源碼包經過成功編譯之后產生的包。由於二進制包在發布之前就已經完成了編譯的工作,因此用戶安裝軟件的速度較快,且安裝過程報錯幾率大大減小。
二進制包是Linux下默認的軟件安裝包,因此二進制包又被稱為默認安裝軟件包。目前主要有以下兩大主流的二進制包管理系統:
1)RPM包管理系統:功能強大,安裝、升級、査詢和卸載非常簡單方便,因此很多Linux發行版都默認使用此機制作為軟件安裝的管理方式,例如:Fedora、CentOS、SuSE等。
2)DPKG包管理系統:由Debian Linux所開發的包管理機制,通過DPKG包,Debian Linux就可以進行軟件包管理,主要應用在Debian和Ubuntu中。
線上升級
不論DPKG還是RPM,這些機制或多或少都會有軟件依賴的問題,每個軟件都有對依賴的檢查,目前新的Linux開發商都有提供這樣的線上升級機制,通過這個機制,在安裝時只要有網絡,就能夠取得開發商所提供的任何軟件。
在DPKG管理機制上就開發出APT的線上升級機制。
在RPM上則根據開發商的不同,有Red Hat系統的YUM(Yellow dog Updater, Modified),SuSE系統的YOU(Yast Online Update)等。
RPM包管理系統
RPM包說明
RPM全名是“RedHat Package Manager”,顧名思義,當初這個軟件管理的機制是由Red Hat這家公司發展出來的。RPM是以一種資料庫記錄的方式來將你所需要的軟件安裝到你的Linux系統的一套管理機制。
RPM最大的特點就是將你要安裝的軟件先進行編譯,然后打包成為RPM機制的文件,在安裝時,RPM會先依照軟件里的數據查詢相依賴的軟件是否滿足,如果滿足則進行安裝,如果不滿足則不安裝。安裝的時候會將該軟件的信息寫入RPM的數據庫中,以便未來的查詢、驗證與反安裝。
在使用RPM進行安裝時也會遇到一些問題,軟件安裝的環境必須與打包時的環境需求一致或相當,並且在安裝時需要滿足某些軟件的依賴,而且在卸載時需要特別小心,最底層的軟件不可先移除,否則可能造成整個系統的問題。
為了解決不同廠商提供的軟件不能在其他Linux版本上安裝運行的問題,在安裝軟件時可以使用SRPM這個東西。
SRPM包說明
SRPM是Source RPM的意思,也就是這個RPM文件里面含有原始碼,這個SRPM所提供的軟件內容並沒有經過編譯。
通常SRPM的擴展名是以“***.src.rpm”這種格式來命名的。雖然SRPM的內容是原始碼,但是仍然含有該軟件所需要的相關軟件依賴、以及所有RPM文件所提供的數據。同時,與RPM不同的是,SRPM也提供了參數配置檔。所以,如果我們下載的是SRPM,那么要安裝該軟件時,你就必須要:
1)先將該軟件以RPM管理的方式編譯,此時SRPM會被編譯成為RPM文件。
2)然后將編譯完成的RPM文件安裝到Linux系統中。
通常一個軟件在發布的時候,都會同時發布該軟件的RPM與SRPM。RPM文件必須要在相同的Linux環境下才能夠安裝,可以通過修改SRPM內的參數配置,然后重新編譯產生能適合Linux環境的RPM文件,如此一來,就可以將該軟件安裝到新系統中。
命名規范
通過文件名可以知道這個軟件的版本、適用的平台、編譯釋出的次數。例如rp-pppoe-3.11-5.el7.x86_64.rpm這的檔案的意義為:
1)rp-pppoe:軟件名稱。
2)3.11:軟體的版本資訊。
3)5:釋出的次數。
4).el7.x86_64:適合的硬體平台。
5).rpm:文件類型名。
默認安裝路徑
通常情況下,RPM包采用系統默認的安裝路徑,所有安裝文件會按照類別分散安裝到如下目錄:
1 /etc/:配置文件安裝目錄。 2 /usr/bin/:可執行的命令安裝目錄。 3 /usr/lib/:程序所使用的函數庫保存位置。 4 /usr/share/doc/:基本的軟件使用手冊保存位置。 5 /usr/share/man/:幫助文件保存位置。
RPM包的默認安裝路徑是可以通過命令查詢的。
除此之外,RPM包也支持手動指定安裝路徑,但此方式並不推薦。因為一旦手動指定安裝路徑,所有的安裝文件會集中安裝到指定位置,且系統中用來查詢安裝路徑的命令也無法使用(需要進行手工配置才能被系統識別),得不償失。
與RPM包不同,SRPM源碼包的安裝通常采用手動指定安裝路徑(習慣安裝到/usr/local/中)的方式。既然安裝路徑不同,同一apache程序的源碼包和RPM包就可以安裝到一台Linux服務器上(但同一時間只能開啟一個,因為它們需要占用同一個80端口)。
實際情況中,一台服務器幾乎不會同時包含兩個apache程序,管理員不好管理,還會占用過多的服務器磁盤空間。
YUM包管理系統
說明
YUM的全稱是“Yellow dog Updater, Modified”,是一個專門為了解決包的依賴關系而存在的軟件包管理器,是改進型的RPM軟件管理器,它很好的解決了RPM所面臨的軟件包依賴問題。
YUM在服務器端存有所有的RPM包,並將各個包之間的依賴關系記錄在文件中,當管理員使用YUM安裝RPM包時,YUM會先從服務器端下載包的依賴性文件,通過分析此文件從服務器端一次性下載所有相關的RPM包並進行安裝。
源
使用YUM安裝軟件包之前,需指定好YUM下載RPM包的位置,此位置稱為YUM源。換句話說,YUM源指的就是軟件安裝包的來源。
使用YUM安裝軟件時至少需要一個YUM源。YUM源既可以使用網絡YUM源,也可以將本地光盤作為YUM源。
1)網絡YUM源
一般情況下,只要你的主機網絡正常,可以直接使用網絡YUM源,不需要對配置文件做任何修改。
網絡YUM源配置文件位於/etc/yum.repos.d/目錄下,只要擴展名為“*.repo”的文件都是YUM源的配置文件,通常情況下CentOS-Base.repo文件生效。
2)本地YUM源
在無法聯網的情況下,YUM可以考慮用本地光盤(或安裝映像文件)作為YUM源。
Linux系統安裝映像文件中就含有常用的RPM包,我們可以使用壓縮文件打開映像文件(iso文件),進入其Packages子目錄,該子目錄下含有幾乎所有常用的RPM包,因此使用系統安裝映像作為本地YUM源沒有任何問題。
在/etc/yum.repos.d/目錄下有一個CentOS-Media.repo文件,此文件就是以本地光盤作為YUM源的模板文件,只需進行簡單的修改即可。