對於Windows的用戶來說,軟件安裝的確是沒有什麼學問,一直Next或者改一下路徑,軟件就會裝好了。但是在Linux下可沒這麼簡單了。
Linux下的軟件安裝主要有三種方式,分別是rpm(RedHat系列)或DPKG(Debian系列)、yum(RedHat系列)或APT(Debian系列)和Tarball。
由於rpm、yum等的安裝方式都非常簡單,在這裡就不再詳述了,就舉一個例子來說明吧,在Windows上360、金山這些系統管理軟件相信大家都有用過,yum的軟件安裝方式就類似於你在360裡面選擇了一個軟件然後按安裝一樣,它就會自動幫你安裝好,不過yum選擇的軟件得要系統的提供者的服務器上有才行。而rpm安裝則類似於你從網上下載了一個安裝包,然後打開直接安裝,只不過這個安裝是用命令來進行。
下面重點來說說Tarball安裝。
一、Tarball是什麼
看到Tarball這個名字,不知道大家有沒想起一個命令——tar,所謂的Tarball文件,其實就是將軟件的所有源代碼先以tar打包,然後再加以壓縮技術來壓縮,通常最常見的就是以gzip和zip2來壓縮了,所以tarball文件一般的擴展名就會寫成*.tar.gz、tgz或者tar.bz2。那麼這個Tarball文件裡有什麼內容呢?裡面的文件通常有:
1、源代碼文件
2、檢測程序文件(可能是configure或config等文件)
3、本軟件的簡易說明與安裝說明(README和INSTALL)
README和INSTALL這兩個文件是非常重要的,但是對於用慣了Windows的我們,安裝一個軟件太簡單,以至於我們一直忽視了這些說明文件,然而在Linux卻不同,所以在軟件安裝前要仔細閱讀一下。
二、檢測安裝環境
拿到Tarball的安裝包後,可以把它壓解到/usr/local/src目錄下(最好這樣做),首先找到README和INSTALL這兩個文件看看裡面的說明,如果沒有問題,在當前目錄下,找到configure或config等文件,若沒有,可按照README和INSTALL這兩個文件的說明去安裝,這裡假設configure文件存在。
configure文件到底是什麼?通過file命令可以看到,其實這個文件是一個腳本文件,它的目的就是檢測你的Linux環境,判斷你當前的環境符不符合這個軟件的安裝要求,若不符合,輸出出錯信息並退出,若符合,則生成MakeFile。而MakeFile指定了這個軟件如何編譯、如何安裝等信息。
由於之後的安裝一直要使用到MakeFile文件,所以如果此步失敗,由於沒有MakeFile文件生成,則安裝不能繼續下去。
此外,在運行configure時,還可以通過添加參數來改變生成的MakeFile中的一些默認參數,其中比較重要的參數是--frefix,這個參數後面可接路徑,表示這個軟件將來要安裝到哪個目錄去,如果你沒有指定這個參數,通常默認就是/usr/local,使用方法舉例如下:
# configure --prefix=/usr/local/app
默認方法為:# configure
三、軟件安裝
這一切都搞定之後,安裝就非常簡單了,輸入如下命令即可。
# make clean
# make
# make install
注:你的系統中一定要用make和gcc等工具。
是不是很簡單,是!那麼上面的三步,每一步又做了什麼呢?它們各有什麼作用呢?下面就來說說吧!
1、make clean:make會讀取MakeFile中關於clean的工作,它的主要工作就是去除目標文件。這個步驟不一定要有,但是最好還是執行一下,為什麼?它可以去除目標文件啊。因為源碼裡面可能包含上次編譯過的目標文件(*.o)存在,所以當然還是清除一下比較妥當的。至少等一下編譯出來的執行文件可以肯定是使用自己的機器所編譯出來的。
2、make:make會依據MakeFile當中的默認工作進行編譯行為。編譯的工作主要是gcc將源代碼編譯成可執行文件,但是這些目標文件通常還需要一些函數庫之類的鏈接後才能生成一個完整的可執行文件。簡單點說,就是使用make把源代碼編譯為可執行文件(即Windows下的*.exe文件),而這個可執行文件會放置在目前所在的目錄之下,尚未安裝到預定安裝的目錄中。
看到這裡大家可能就有點迷惑了,既然我的可執行程序都出來了,我可以運行程序了,不就是安裝完成了嗎,為什麼說還沒有安裝完成呢?舉個不太貼切的例子吧,這就好像只生成了Windows中你熟悉的那個安裝程序一樣,並不是你想要的那個應用程序。你還要運行這個安裝程序才能完成你想要的應用軟件的安裝。
3、make install:通常這就是安裝的最後步驟了,make會依據MakeFile文件裡的install選項,將上一步所編譯完成的數據安裝到默認的目錄中(如果先前用configure檢測環境並生成MakeFile的過程中,你有使用--frefix參數的話,就是你指定的目錄),就完成安裝了。安裝的過程通常是把編譯生成的而且軟件運行所需要的文件移動到指定的安裝目錄下並進行一些配置。
注:上述步驟是有關聯的,只要其中一步失敗,則下面的操作都不能進行。此外,如果安裝成功,但是卻安裝在一個獨立的目錄中,例如/usr/local/app,那麼你就必須手動將這個軟件的man page寫入/etc/man.config裡,即在裡面添加一行:MANPATH/usr/local/app/man。
作者署名:csdn博客 倦飛L