Linux 下的絕大多數原始碼包都是用 C 語言編寫的,還有少部分是用 C++ 等其他程式語言編寫的。所以,要想安裝原始碼包,必須安裝 C 語言編譯器 gcc(如果是用 C++ 編寫的程式,則還需要安裝 gcc-c++)。
我們可以先檢測一下 gcc 是否已經安裝,命令如下:
[[email protected] ~]# rpm -q gcc
gcc-4.4.6-4.el6.i686
如果沒有安裝 gcc,則推薦大家採用 yum 安裝方式安裝。因為如果手工使用 rpm 命令安裝,那麼 gcc 所依賴的包太多了。命令如下:
[[email protected] yum.repos.d]#yum -y install gcc
有了編譯器,還需要考慮一個問題:剛剛寫的"hello.c"只有一個原始碼檔案,所以我們可以利用 gcc 手工編譯。但是真正發布的原始碼包軟體內的原始碼檔案可能有成百上千個,而且這些檔案之間都是有聯絡的,編譯時有先後順序。如果這樣的原始碼檔案需要手工編譯,光想想就是一項難以完成的工作。
這時就需要 make 命令來幫助我們完成編譯,所以make也是必須安裝的。我們也需要査看一下 make 是否已經安裝,命令如下:
[[email protected] yum. repos.d]# rpm -q make
make-3.81-20.el6.i686
原始碼包的獲取
RPM 包是儲存在 CentOS 6.3 的安裝光碟中的,那麼原始碼包從哪裡來呢?從官方網站上下載,我們依然以下載和安裝 apache 為例。
原始碼包安裝
在安裝之前,我們先來解釋一下原始碼包的安裝注意事項:
-
軟體包是從網際網路上下載的。比如 apache 是從北京理工大學開源軟體映象服務網站上下載的。
-
下載的軟體包格式。下載格式一般都是壓縮格式,常見的是".tar.gz"或".tar.bz2",選擇你習慣的格式下載即可。
-
下載之後的原始碼儲存位置。Linux 是一個非常嚴謹的作業系統,每個目錄的作用都是固定而且明確的,作為管理員,養成良好的操作習憤非常重要,在正確的目錄中儲存正確的資料就是一個約定俗成的習慣。系統中儲存原始碼的位置主要有兩個:"/usr/src"和 "/usr/local/src"。其中,"/usr/src"用來儲存核心原始碼,"/usr/local/src"用來儲存使用者下載的原始碼。
-
軟體安裝位置。我們剛說了 Linux 非常注意每個目錄的作用,所以安裝軟體也有預設目錄,即"/usr/local/軟體名"。我們需要給安裝的軟體包單獨規劃一個安裝目錄,以便於管理和解除安裝。想象一下,如果我把每個軟體都安裝到"/usr/local/"目錄下,但是沒有給每個軟體單獨分配安裝目錄,那麼以後還能分清哪 個軟體是哪個軟體嗎?這樣一來也就不能正確地解除安裝軟體了。
-
軟體安裝報錯。原始碼包如果安裝不報錯,那麼安裝還是很方便的。但是報錯後的排錯對剛學習的人來說還是有難度的,不過我們先要知道什麼樣的情況是報錯。報錯有兩個典型特點,這兩個特點必須都具備才是報錯:其一是出現"error"或"warning"字樣;其二是安裝過程停止。如果沒有停止但是出現警告資訊,那麼軟體中的部分功能不能使用,而不是報錯。
安裝步驟
我們來解釋一下原始碼包安裝的具體步驟:
1) 下載軟體包。
2) 解壓縮。
3) 進入解壓目錄。
4) ./configure 軟體設定與檢查。這一步主要有三個作用:
-
在安裝之前需要檢測系統環境是否符合安裝要求。
-
定義需要的功能選項。"./configure"支援的功能選項較多,可以執行"./configure--help"命令査詢其支援的功能。一般都會通過"./configure--prefix=安裝路徑"來指定安裝路徑。
-
把系統環境的檢測結果和定義好的功能選項寫入 Makefile 檔案,後續的編譯和安裝需要依賴這個檔案的內容。
需要注意的是,configure 不是系統命令,而是原始碼包軟體自帶的一個指令碼程式,所以必須採用"./configure"方式執行("./"代表在當前目錄下)。
5) make編譯。make 會呼叫 gcc 編譯器,並讀取 Makefile 檔案中的資訊進行系統軟體編譯。編譯的目的就是把原始碼程式轉變為能被 Linux 識別的可執行檔案,這些可執行檔案儲存在當前目錄下。程式設計過程較為耗時,需要有足夠的耐心。
6) make clean:清空編譯內容(非必需步驟)。如果在"./configure"或"make"編譯中報錯,那麼我們在重新執行命令前一定要記得執行 make clean 命令,它會清空 Makefile 檔案或編譯產生的".o"頭文 件。
7) make install:安裝。這才是真正的安裝過程,一般會寫清楚程式的安裝位置。如果忘記指定安裝目錄,則可以把這個命令的執行過程儲存下來,以備將來刪除使用。
舉例安裝apache
1) 下載。
2) 解壓縮。
[[email protected] ~]#tar -zxvf httpd-2.2.9.tar.gz|more
3) 進入解壓目錄。
[[email protected] ~]# ls
anaconda-ks.cfg httpd-2.2.9 httpd-2.2.9.tar.gz install.log install.log.syslog
[[email protected] ~]# cd httpd-2.2.9
4) 軟體設定。
[[email protected] httpd-2.2.9]# ./configure --prefix=/usr/local/apache2
checking for chosen layout...Apache
checking for working mkdir -p…yes
checking build system type...i686-pc-linux-gnu
checking host system type...i686-pc-linux-gnu
checking target system typa...i686-pc-linux-gnu
…省略部分輸出…
選項:
這裡的安裝選項沒有載入其他功能,只是指定安裝目錄。"/usr/local/apache2"目錄不需要手工建立,安裝完成後會自動建立,這個目錄是否生成也是檢測軟體是否正確安裝的重要標誌。
當然,在設定之前也可以查詢一下 apache 支援的選項功能,命令如下:
[[email protected] httpd-2.2.9]#./configure --help|more
#查詢apache支援的選項功能(不是必需步驟)
5) 編譯。
[[email protected] httpd-2.2.9]# make
這一步命令較為簡單,醒編譯時間賬,主要作用是把原始碼檔案轉換為二進位制檔案。
6)安裝。
[[email protected] httpd-2.2.9]# make install
如果不報錯,這一步完成後就安裝成功了。
原始碼包解除安裝
我們在說原始碼包解除安裝之前,先回顧一下 Windows 系列作業系統中的軟體解除安裝。在 Windows 系統中是不能用滑鼠右鍵單擊安裝之後的軟體,選擇直接刪除的,因為這樣做會遺留大量的垃圾檔案。這些垃圾檔案越多,會導致 Window 系統越不穩定。
那麼, Linux 中刪除原始碼包應該怎樣操作呢?太簡單了,只要找到軟體的安裝位置,然後直接刪除就可以了。比如刪除 apache,只需執行如下命令即可,而且不會遺留任何垃圾檔案。
[[email protected] ~]# rm -rf /usr/local/apache2/
如果 apache 服務啟動了,那麼,記得先停止服務再刪除。