初窺Linux之簡述軟體安裝 對於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。