20.1 源碼包程序

2022-06-01 16:44 更新

本書第1章中曾經(jīng)講到,在RPM(紅帽軟件包管理器)技術(shù)出現(xiàn)之前,Linux系統(tǒng)運(yùn)維人員只能通過源碼包的方式來安裝各種服務(wù)程序,這是一件非常繁瑣且極易消耗時(shí)間與耐心的事情;而且在安裝、升級、卸載程序時(shí)還要考慮到與其他程序或函數(shù)庫的相互依賴關(guān)系,這就要求運(yùn)維人員不僅要掌握更多的Linux系統(tǒng)理論知識以及高超的實(shí)操技能,還需要有極好的耐心才能安裝好一個(gè)源碼軟件包??紤]到本書的讀者都是剛?cè)腴T或準(zhǔn)備入門的運(yùn)維新人,因?yàn)楸緯谇懊娴恼鹿?jié)中一直都是采用Yum軟件倉庫的方式來安裝服務(wù)程序。但是,現(xiàn)在依然有很多軟件程序只有源碼包的形式,如果我們只會使用Yum軟件倉庫的方式來安裝程序,則面對這些只有源碼包的軟件程序時(shí),將充滿無力感,要么需要等到第三方組織將這些軟件程序編寫成RPM軟件包之后再行使用,要么就只能尋找相關(guān)軟件程序的替代品了(而且替代軟件還必須具備RPM軟件包的形式)。由此可見,如果運(yùn)維人員只會使用Yum軟件倉庫來安裝服務(wù)程序,將會形成知識短板,對日后的運(yùn)維工作帶來不利。

本著不能讓自己的讀者在運(yùn)維工作中吃虧的想法,劉遄老師接下來會詳細(xì)講解如何使用源碼包的方式來安裝服務(wù)程序。

其實(shí),使用源碼包來安裝服務(wù)程序具有兩個(gè)優(yōu)勢。

源碼包的可移植性非常好,幾乎可以在任何Linux系統(tǒng)中安裝使用,而RPM軟件包是針對特定系統(tǒng)和架構(gòu)編寫的指令集,必須嚴(yán)格地符合執(zhí)行環(huán)境才能順利安裝(即只會去“生硬地”安裝服務(wù)程序)。

使用源碼包安裝服務(wù)程序時(shí)會有一個(gè)編譯過程,因此可以更好地適應(yīng)安裝主機(jī)的系統(tǒng)環(huán)境,運(yùn)行效率和優(yōu)化程度都會強(qiáng)于使用RPM軟件包安裝的服務(wù)程序。也就是說,可以將采用源碼包安裝服務(wù)程序的方式看作是針對系統(tǒng)的“量體裁衣”。

一般來講,在安裝軟件時(shí),如果能通過Yum軟件倉庫來安裝,就用Yum方式;反之則去尋找合適的RPM軟件包來安裝;如果是在沒有資源可用,那就只能使用源碼包來安裝了。

使用源碼包安裝服務(wù)程序的過程看似復(fù)雜,其實(shí)在歸納匯總后只需要4~5個(gè)步驟即可完成安裝。劉遄老師接下來會對每一個(gè)步驟進(jìn)行詳解。

需要提前說明的是,在使用源碼包安裝程序時(shí),會輸出大量的過程信息,這些信息的意義并不大,因此本章會省略這部分輸出信息而不作特殊備注,請大家在具體操作時(shí)以實(shí)際為準(zhǔn)。

第1步:下載及解壓源碼包文件。為了方便在網(wǎng)絡(luò)中傳輸,源碼包文件通常會在歸檔后使用gzip或bzip2等格式進(jìn)行壓縮,因此一般會具有.tar.gz與.tar.bz2的后綴。要想使用源碼包安裝服務(wù)程序,必須先把里面的內(nèi)容解壓出來,然后再切換到源碼包文件的目錄中:

    [root@linuxprobe ~]# tar xzvf FileName.tar.gz


    [root@linuxprobe ~]# cd FileDirectory

第2步:編譯源碼包代碼。在正式使用源碼包安裝服務(wù)程序之前,還需要使用編譯腳本針對當(dāng)前系統(tǒng)進(jìn)行一系列的評估工作,包括對源碼包文件、軟件之間及函數(shù)庫之間的依賴關(guān)系、編譯器、匯編器及連接器進(jìn)行檢查。我們還可以根據(jù)需要來追加--prefix參數(shù),以指定稍后源碼包程序的安裝路徑,從而對服務(wù)程序的安裝過程更加可控。當(dāng)編譯工作結(jié)束后,如果系統(tǒng)環(huán)境符合安裝要求,一般會自動(dòng)在當(dāng)前目錄下生成一個(gè)Makefile安裝文件。

    [root@linuxprobe ~]# ./configure --prefix=/usr/local/program

第3步:生成二進(jìn)制安裝程序。剛剛生成的Makefile文件中會保存有關(guān)系統(tǒng)環(huán)境、軟件依賴關(guān)系和安裝規(guī)則等內(nèi)容,接下來便可以使用make命令來根據(jù)Makefile文件內(nèi)容提供的合適規(guī)則編譯生成出真正可供用戶安裝服務(wù)程序的二進(jìn)制可執(zhí)行文件了。

    [root@linuxprobe ~]# make

第4步:運(yùn)行二進(jìn)制的服務(wù)程序安裝包。由于不需要再檢查系統(tǒng)環(huán)境,也不需要再編譯代碼,因此運(yùn)行二進(jìn)制的服務(wù)程序安裝包應(yīng)該是速度最快的步驟。如果在源碼包編譯階段使用了--prefix參數(shù),那么此時(shí)服務(wù)程序就會被安裝到那個(gè)目錄,如果沒有自行使用參數(shù)定義目錄的話,一般會被默認(rèn)安裝到/usr/local/bin目錄中。

    [root@linuxprobe ~]# make install

第5步:清理源碼包臨時(shí)文件。由于在安裝服務(wù)程序的過程中進(jìn)行了代碼編譯的工作,因此在安裝后目錄中會遺留下很多臨時(shí)垃圾文件,本著盡量不要浪費(fèi)磁盤存儲空間的原則,可以使用make clean命令對臨時(shí)文件進(jìn)行徹底的清理工作。

    [root@linuxprobe ~]# make clean

估計(jì)有讀者會有疑問,為什么通常是安裝一個(gè)服務(wù)程序,源碼包的編譯工作(configure)與生成二進(jìn)制文件的工作(make)會使用這么長的時(shí)間,而采用RPM軟件包安裝就特別有效率呢?其實(shí)原因很簡單,在RHCA認(rèn)證的RH401考試中,會要求考生寫一個(gè)RPM軟件包。劉遄老師會在本書的進(jìn)階篇中講到,其實(shí)RPM軟件包就是把軟件的源碼包和一個(gè)針對特定系統(tǒng)、架構(gòu)、環(huán)境編寫的安裝規(guī)定打包成一起的指令集,因此為了讓用戶都能使用這個(gè)軟件包來安裝程序,通常一個(gè)軟件程序會發(fā)布多種格式的RPM軟件包(例如i386、x86_64等架構(gòu))來讓用戶選擇。而源碼包的軟件作者肯定希望自己的軟件能夠被安裝到更多的系統(tǒng)上面,能夠被更多的用戶所了解、使用,因此便會在編譯階段(configure)來檢查用戶當(dāng)前系統(tǒng)的情況,然后制定出一份可行的安裝方案,所以會占用很多的系統(tǒng)資源,需要更長的等待時(shí)間。

出現(xiàn)問題?大膽提問!

因讀者們硬件不同或操作錯(cuò)誤都可能導(dǎo)致實(shí)驗(yàn)配置出錯(cuò),請耐心再仔細(xì)看看操作步驟吧,不要?dú)怵H~

Linux技術(shù)交流請加A群:560843(滿),B群:340829(推薦),C群:463590(推薦),點(diǎn)此查看全國群。

*本群特色:通過口令驗(yàn)證確保每一個(gè)群員都是《Linux就該這么學(xué)》的讀者,答疑更有針對性,不定期免費(fèi)領(lǐng)取定制禮品。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號