- Linux服務(wù)器配置與管理完全學(xué)習(xí)手冊(cè)
- 王健
- 3615字
- 2021-03-19 15:14:43
5.1 源碼的安裝方式
由于Linux系統(tǒng)中使用的絕大多數(shù)軟件都是開(kāi)源軟件,軟件作者在發(fā)布軟件時(shí)直接提供的就是軟件的源代碼。用戶在取得應(yīng)用軟件的源碼文件后,可以根據(jù)自身需求對(duì)軟件進(jìn)行修改或定制,然后在自己的系統(tǒng)上重新編譯,即可生成能在該系統(tǒng)上執(zhí)行的程序文件。通過(guò)源碼安裝,用戶可以獲得最新的應(yīng)用程序,定制更靈活、豐富的功能,而且使軟件可以跨越計(jì)算機(jī)平臺(tái),在所有版本的Linux系統(tǒng)中使用。但是源碼安裝方式過(guò)于復(fù)雜,耗時(shí)長(zhǎng),對(duì)用戶的軟件開(kāi)發(fā)能力要求也比較高。源碼安裝方式的特點(diǎn)可概括如下。
Linux系統(tǒng)軟件大都是開(kāi)源軟件,這些軟件總是以源碼形式最先發(fā)布。下載應(yīng)用程序的最新源碼并編譯安裝,可在程序功能、安全補(bǔ)丁等方面得到及時(shí)更新。
對(duì)于RPM格式封裝的應(yīng)用程序,在編譯源代碼程序時(shí)綁定功能也一并安裝到Linux主機(jī)上,可能造成安全隱患。RPM軟件包的更新并沒(méi)有源代碼,而通過(guò)對(duì)程序源代碼進(jìn)行重新配置并編譯安裝后,可以定制更靈活、更豐富的功能。
當(dāng)需要對(duì)現(xiàn)有的程序源代碼進(jìn)行適當(dāng)修改,以便增加新的功能時(shí),必須釋放出該軟件的源代碼,進(jìn)行修改后再重新編譯安裝。
源碼安裝軟件一般由以下幾個(gè)步驟組成:下載解壓源碼、分析安裝平臺(tái)環(huán)境(ifconfigure)、編譯安裝軟件(make、make install)等,下面分別來(lái)介紹。
5.1.1 下載解壓源碼
Linux下軟件的源碼一般都是C或者C++語(yǔ)言編寫(xiě)的,并且都會(huì)在軟件的官方網(wǎng)站上提供源碼包下載,例如apache開(kāi)源項(xiàng)目的官方網(wǎng)站為http://www.apache.org。此外,網(wǎng)上的很多開(kāi)源社區(qū)也提供一些常用軟件的源碼供下載。源碼被打包成壓縮文件,常見(jiàn)的源碼打包壓縮格式有.tar.gz、.tar.baz2等。可以先從網(wǎng)站上下載源碼文件,然后再傳到所在的Linux系統(tǒng)下。如果Linux系統(tǒng)處于聯(lián)網(wǎng)狀態(tài)下,也可以直接在系統(tǒng)內(nèi)通過(guò)wget之類(lèi)的下載命令將源碼壓縮包直接下載到Linux系統(tǒng)中。
下載完成后,把相應(yīng)的軟件包解壓縮即可。針對(duì)下載軟件包的不同,在使用不同的方法進(jìn)行解壓。解壓完畢后進(jìn)入解壓生成的目錄中,在這個(gè)目錄下,一般都存在一個(gè)REDAME文件,這個(gè)文本文件非常重要,它詳細(xì)介紹了這個(gè)軟件所能完成的功能、授權(quán)許可、安裝需求、安裝注意事項(xiàng)、安裝方式等。由于Linux各個(gè)版本的差異以及安裝環(huán)境的不同,軟件的安裝方式也不盡相同,所以在安裝軟件前,一定要事先閱讀這個(gè)README文件,從而確保安裝的正確性。
5.1.2 分析安裝平臺(tái)環(huán)境
在軟件包解壓完畢之后,進(jìn)入源碼目錄,一般都會(huì)有configure和README這兩個(gè)文件。README是對(duì)軟件的介紹和安裝說(shuō)明。Linux下軟件的安裝受到操作系統(tǒng)安裝環(huán)境的影響,比如某些軟件在安裝或者運(yùn)行過(guò)程中需要調(diào)用操作系統(tǒng)本身的庫(kù)文件,或者需要運(yùn)行系統(tǒng)的某個(gè)工具等,但是如果系統(tǒng)中不存在這個(gè)庫(kù)文件或者這個(gè)工具,那么安裝或者運(yùn)行軟件就會(huì)失敗。
為了避免這類(lèi)問(wèn)題的出現(xiàn),在安裝軟件前需要分析操作系統(tǒng)環(huán)境,檢測(cè)當(dāng)前系統(tǒng)是否擁有安裝軟件所需的所有文件和工具,如果系統(tǒng)缺少某個(gè)文件,就給出提示,直到滿足軟件的所有需求為止。這就是configure文件的功能。configure文件一般是個(gè)可執(zhí)行文件,可以在當(dāng)前目錄下直接輸入“./configure”進(jìn)行軟件安裝的環(huán)境測(cè)試,如果提示缺少某些安裝包,就需要進(jìn)行安裝,直到測(cè)試通過(guò)。通常,源碼安裝都需要GCC或者CC編譯器,這些編譯器一般在安裝系統(tǒng)時(shí)定制安裝包中的開(kāi)發(fā)工具選項(xiàng)下,其實(shí)這也是第2章安裝Linux系統(tǒng)中要求選擇開(kāi)發(fā)工具包的原因所在。
此外,在執(zhí)行configure分析軟件需求時(shí),還可以在“./configure”后面加上軟件的安裝路徑以及安裝所需的模塊等選項(xiàng),來(lái)定制用戶需要的軟件功能。
5.1.3 編譯安裝軟件
在驗(yàn)證軟件安裝環(huán)境后,正式進(jìn)入軟件的編譯步驟。在進(jìn)行編譯前,首先要了解關(guān)于編譯的一些基礎(chǔ)知識(shí)。在Linux系統(tǒng)下,make是經(jīng)常用到的編譯命令。無(wú)論是安裝軟件還是項(xiàng)目開(kāi)發(fā),都會(huì)經(jīng)常用到編譯安裝命令,也就是make和make install命令。對(duì)于一個(gè)包含很多源文件的應(yīng)用程序,使用make和makefile工具可以簡(jiǎn)單快速地解決各個(gè)源文件之間復(fù)雜的依賴關(guān)系,同時(shí),make工具還可以自動(dòng)完成所有源碼文件的編譯工作,并且可以只對(duì)上次編譯后修改過(guò)的文件進(jìn)行增量編譯。因此,熟練掌握了make和makefile工具之后,源碼安裝軟件就變得像Windows下安裝軟件一樣簡(jiǎn)單。
make工具最主要的功能是通過(guò)makefile文件來(lái)實(shí)現(xiàn)的,makefile文件是按照某種語(yǔ)法來(lái)進(jìn)行編寫(xiě)的,文件中定義了各個(gè)源文件之間的依賴關(guān)系,說(shuō)明了如何編譯源文件及生成可執(zhí)行文件,通過(guò)描述各個(gè)源程序之間的關(guān)系來(lái)使make工具自動(dòng)完成編譯工作。在Linux系統(tǒng)下,一般習(xí)慣用Makefile替代makefile文件,在configure執(zhí)行通過(guò)測(cè)試后,就會(huì)在當(dāng)前目錄下生成這個(gè)文件,一般情況下在命令行輸入make時(shí),make命令會(huì)默認(rèn)去尋找當(dāng)前目錄下的Makefile文件。如果需要使用其他文件,就要在make命令選項(xiàng)后指定相應(yīng)的文件名。例如設(shè)定編譯規(guī)則文件為make_file,就需要使用以下命令來(lái)指定。
[root@WEBServer ~]#make -f make_file
下面通過(guò)實(shí)例講解Makefile的編寫(xiě)原則和內(nèi)容。
【例5-1】 test程序由三個(gè)源文件file1.c、file2.c、file3.c及庫(kù)文件LS編譯生成,這三個(gè)源文件還分別包含了頭文件1.h、2.h和3.h。通常,C編譯器將會(huì)輸出三個(gè)目標(biāo)文件file1.o、file2.o和file3.o。假定file1.c和file3.c都要聲明用到一個(gè)apcs文件,但是file2.c不用,也就是在file1.c和file3.c文件中都有類(lèi)似#include "apcs"的聲明。
下面這段代碼就是對(duì)test程序的描述。
1: #It is an example for describing makefile 2: test: file1.o file2.o file3.o 3: cc file1.o file2.o file3.o -LS -o test 4: file1.o: file1.c 1.h apcs 5: gcc -c file1.c 6: file3.o: file3.c 3.h apcs 7: gcc -c file3.c 8: file2.o: file2.c c.h 9: gcc -c file2.c
這個(gè)對(duì)test程序的描述文檔其實(shí)就是一個(gè)Makefile文件,其中,第一行為注釋行,第二行指定test程序由file1.o、file2.o和file3.o鏈接生成,第三行描述了如何從test所依賴的文件來(lái)建立可執(zhí)行文件,接下來(lái)的第四行、第六行、第八行定義了三個(gè)目標(biāo)文件以及它們依賴的.c、.h和apcs文件,第五行、第七行、第九行則定義了如何從目標(biāo)依賴的文件生成可執(zhí)行文件。
在了解Makefile文件結(jié)構(gòu)后,用戶就可以控制編譯的選項(xiàng),定制自己所需的軟件功能。接下來(lái),只需在命令行輸入make命令,即可進(jìn)入編譯階段,根據(jù)軟件源程序的大小和系統(tǒng)的硬件配置進(jìn)行編譯。編譯所需的時(shí)間不定。編譯完畢,會(huì)在當(dāng)前目錄以及子目錄下生成相應(yīng)的可執(zhí)行文件。接下來(lái)就進(jìn)入最后的安裝軟件階段,在命令行輸入make install命令,開(kāi)始安裝軟件,安裝進(jìn)程首先創(chuàng)建安裝目錄,如果沒(méi)有指定安裝目錄,安裝程序默認(rèn)在系統(tǒng)的/usr/local目錄下創(chuàng)建安裝目錄,然后將相應(yīng)的文件和可執(zhí)行程序從源碼目錄復(fù)制到安裝目錄下,這樣安裝就完成了。具體的,編譯安裝步驟如下。
(1)解壓縮包——tar命令
使用tar命令解開(kāi)壓縮包,釋放出源代碼文件。
(2)配置——./configure命令
該過(guò)程主要是生成Makefile文件。配置工作通常由源代碼目錄中的configure腳本文件完成,配置結(jié)果將保存到源碼目錄中的Makefile文件中。若在配置過(guò)程中出現(xiàn)錯(cuò)誤,通常是缺少相關(guān)依賴軟件包所致,一般只需根據(jù)提示安裝相應(yīng)軟件即可。“./configure”表示執(zhí)行當(dāng)前目錄下的configure腳本文件,不同應(yīng)用程序其配置參數(shù)會(huì)存在區(qū)別,具體配置參數(shù)可在源代碼目錄中執(zhí)行“./configure –help”命令查看。但是有一個(gè)“--prefix”參數(shù)卻是大多數(shù)開(kāi)源軟件所通用的,該配置參數(shù)用于指定軟件包安裝的目標(biāo)文件夾。配置界面如圖5-1、圖5-2所示。

圖5-1 配置./configure界面1

圖5-2 配置./configure界面2
(3)編譯——make命令
執(zhí)行make命令將源代碼文件轉(zhuǎn)變?yōu)槎M(jìn)制可執(zhí)行程序。編譯的過(guò)程主要是根據(jù)makefile文件中的配置信息,將源代碼編譯、連接成可執(zhí)行程序。
(4)檢測(cè)——make test/make check命令
顧名思義,這一步就是對(duì)上一步make命令的檢查。要確保make是沒(méi)有錯(cuò)誤的,也就是這一步的test、check要全部是通過(guò),error為0。這一步可省略。
(5)安裝——make install命令
編譯完成后,就可以執(zhí)行“make install”命令將軟件的執(zhí)行程序、配置文件等相關(guān)文件復(fù)制到Linux系統(tǒng)中了,即應(yīng)用程序最后的“安裝”過(guò)程。如圖5-3所示為編譯安裝ntfs- 3g包。

圖5-3 編譯安裝ntfs-3g
5.1.4 源碼編譯安裝程序的卸載
如果要重新安裝源碼編譯安裝包,以上一節(jié)編譯安裝的ntfs-3g為例,若打算重新安裝,則需要先刪除,直接運(yùn)行下面的命令就可以了:
#make uninstall #make clean
如果是編譯過(guò)程出錯(cuò),要重新編譯,命令如下:
make clean
然后再執(zhí)行如下命令即可:
./configure make && make install
5.1.5 源碼安裝實(shí)例
通常的安裝方法是在安裝包的目錄下執(zhí)行以下命令。
gunzip soft1.tar.gz; cd soft1 #. /configure #配置 make #調(diào)用make make install #安裝源代碼 #make clean #刪除安裝時(shí)產(chǎn)生的臨時(shí)文件 #make uninstall #卸載軟件
【例5-2】在Linux下以源碼安裝方式安裝Apache Http server。
(1)下載及解壓apache源碼
[root@WEBServer~]#mkdir /apache #在根目錄下創(chuàng)建一個(gè)apache目錄 [root@WEBServer~]#cd /apache #切換到apache目錄 [root@WEBServer apache]#wget \ #下載apache源碼 >http://apache.mirror.phpchina.com/httpd/httpd-2.2.9.tar.bz2 [root@WEBServer apache]#tar -jxvf httpd-2.2.9.tar.bz2 #解壓apache源碼 [root@WEBServer apache]#ls #顯示解壓結(jié)果 httpd-2.2.9 httpd-2.2.9.tar.bz2
(2)測(cè)試安裝環(huán)境
[root@WEBServer apache]#cd httpd-2.2.9 #切換到httpd-2.2.9目錄下 [root@WEBServer httpd-2.2.9]#./configure --prefix=/opt/apache2.2.9\ >--enable-so\ >--enable-mods-shared=most\ >--enable-proxy-balancer=shared\ >--enable-proxy-http=shared\ >--enable-proxy-ajp\ >--enable-rewrite
上面的代碼中指定apache的安裝目錄為/opt/apache2.2.9,同時(shí)指定了需要編譯的apache模塊。
下面分別介紹這些模塊代表的含義(更詳細(xì)的介紹參看apache說(shuō)明文檔)。
--enable-so選項(xiàng):表示使apache支持DSO模式。
--enable-mods-shared=most選項(xiàng):表示動(dòng)態(tài)編譯大部分常用模塊,當(dāng)然也可以有選擇地加載一些模塊。most的意思是只包含通常用的模塊,并且以動(dòng)態(tài)加載模式加載。
--enable-proxy-balancer=shared選項(xiàng):表示使apache支持負(fù)載均衡功能,即動(dòng)態(tài)編譯apache的負(fù)載均衡模塊。
--enable-proxy-http=shared選項(xiàng):表示動(dòng)態(tài)編譯apache的http代理模塊。
--enable-proxy-ajp選項(xiàng):表示動(dòng)態(tài)編譯apache的proxy-ajp模塊。
--enable-rewrite選項(xiàng):表示使apache支持地址重寫(xiě)功能,即動(dòng)態(tài)編譯apache的rewrite模塊。
(3)編譯安裝軟件
[root@WEBServer httpd-2.2.9]#make [root@WEBServer httpd-2.2.9]#make install
安裝完畢后,apache被安裝到/opt/apache2.2.9下,接下來(lái)就可以使用apache軟件了。
【例5-3】將Linux圖形中文軟件fcitx源碼安裝到/opt/fcitx目錄中。
完整的安裝步驟如下:
[root@localhost fcitx]# tar jxvf fcitx-3.2-050827.tar.bz2 [root@localhost fcitx]#cd fcitx [root@localhost fcitx]# ./configure --prefix=/opt/fcitx [root@localhost fcitx]# make [root@localhost fcitx]# make install
調(diào)用fcitx命令如下。
[root@localhost]#/opt/fcitx/bin/fcitx
如果希望只要執(zhí)行fcitx命令就能調(diào)用fcitx,可配置環(huán)境變量,或者在/usr/bin中增加一個(gè)fcitx的鏈接。
- pcDuino開(kāi)發(fā)實(shí)戰(zhàn)
- Mastering ElasticSearch
- Puppet實(shí)戰(zhàn)
- 從零開(kāi)始寫(xiě)Linux內(nèi)核:一書(shū)學(xué)透核心原理與實(shí)現(xiàn)
- 操作系統(tǒng)基礎(chǔ)與實(shí)踐:基于openEuler平臺(tái)
- Installing and Configuring Windows 10:70-698 Exam Guide
- Python基礎(chǔ)教程(第3版)
- INSTANT Migration from Windows Server 2008 and 2008 R2 to 2012 How-to
- μC/OS-III內(nèi)核實(shí)現(xiàn)與應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)指南:基于STM32
- Linux網(wǎng)絡(luò)操作系統(tǒng)項(xiàng)目教程(RHEL 7.4/CentOS 7.4)(第3版)(微課版)
- 鴻蒙HarmonyOS手機(jī)應(yīng)用開(kāi)發(fā)實(shí)戰(zhàn)
- Raspberry Pi入門(mén)指南
- OpenSolaris紅寶書(shū)
- 電腦辦公(Windows 7 + Office 2013)入門(mén)與提高
- 用“芯”探核:基于龍芯的Linux內(nèi)核探索解析