歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 【Linux探索之旅】第四部分第五課:源碼編譯,安裝便利

【Linux探索之旅】第四部分第五課:源碼編譯,安裝便利

日期:2017/3/1 12:18:52   编辑:關於Linux

\


內容簡介

1、第四部分第五課:源碼編譯,安裝便利

2、第四部分第六課:DNS和域名,一探究竟


源碼編譯,安裝便利

這一課相對輕松,畢竟剛跨年(2015-2016)麼,新年怎麼能讓大家一個頭兩個大呢~ 小編怎麼可能這麼壞呢?小編是這樣的人嗎?(是啊 -_-#)。

之前的課程(【Linux探索之旅】第二部分第七課:軟件安裝,如虎添翼)中,我們已經了解過Ubuntu這個Linux的發行版下安裝軟件是何等方便,用apt-get這個工具可以輕松搞定。這種方式可以讓我們下載並安裝大部分的軟件。

其他Linux發行版也類似,一通百通。

但是,有些軟件並沒有包含在軟件倉庫中,那麼我們只能手動來安裝了,也就是只能下載軟件的源代碼,編譯以生成可執行文件。

這個方式有時候會比較復雜。我們需要首先下載源代碼,下載下來的源碼通常是一個壓縮包,解壓壓縮包,然後配置,再編譯,再安裝。希望這課能讓大家把之前學的一些知識應用到實踐中,我們一步步來探究軟件的編譯。


首先嘗試找deb安裝包

首先,我們得聲明:這一部分涉及到的軟件包安裝等知識點是基於Debian一族的Linux發行版,包括Ubuntu。

其他不是Debian一族的Linux發行版,例如Fedora,Redhat,CentOS,等等。其實安裝軟件的方式大同小異,就是每個Linux發行版之間所用的命令不一樣,軟件包的名稱有點區別罷了。

大部分Ubuntu下的軟件都可以在軟件倉庫中找到,你只要用apt-get命令就可以安裝它們。但是,有少部分比較新的或者還在開發中的或者還不是很有名的軟件,就沒被收錄到軟件倉庫中,那你就不能用apt-get來獲取到了。

在這種情況下,事情會變得復雜一些。在Windows下面,要安裝某個軟件,我們很習慣於先去軟件的官網,然後下載.exe結尾的安裝文件。

然而,那些為Linux系統編寫軟件的程序員卻一般不創建類似Windows下的那些安裝文件。為什麼呢?難道是Linux的程序員很懶惰嗎?

是的,Linux程序員是很懶惰。開玩笑啦。是因為Linux存在極為多樣的發行版(比如Ubuntu,Fedora,CentOS,SUSE,等等),每個發行版又有不同版本號。而且又有不同的處理器種類(32位的和64位的CPU,ARM架構,Intel架構,等等)要適配,不像Windows因為是微軟自己定義,沒有太多變數。因此,要為每種Linux創建一個安裝文件幾乎成了不可能的事。

當我們要找的軟件不在Ubuntu的軟件倉庫中時,我們可以試試去軟件的官方網站找後綴是.deb(表示Debian)的安裝包。.deb的安裝包只能用於Debian一族的操作系統,包括Ubuntu。而Redhat一族(包括Fedora)用的則是後綴為.rpm(表示Redhat Package Manager)的安裝包。

不過有個軟件可以幫忙將rpm安裝包轉換為deb安裝包。這個軟件是alien(就是“外星人”的意思,哈哈):

#alien默認沒有安裝,所以首先要安裝它

sudo apt-get install alien

#將rpm轉換為deb,完成後會生成一個同名的xxxx.deb

sudo alien xxxx.rpm

#安裝。注意,用alien轉換的deb包並不能保證100%順利安裝,所以可以找到deb最好直接用deb

sudo dpkg -i xxxx.deb

如果你有幸直接在網上找到了軟件的deb安裝包,那麼下載下來,雙擊安裝包(或者用上面的命令行的形式:sudo dpkg -i xxxx.deb)。

然後一個窗口會彈出,問你是否確定安裝,選擇“安裝”。

如果安裝過程沒出錯,那很好。如果有錯誤,一般可能是因為:

也許你下載的deb安裝包不符合你的電腦環境。可能位數搞錯了,32位和64位有區別的。

也許你沒有安裝那些依賴軟件。因為apt-get工具會幫我們自動下載各種依賴軟件,所以不需要我們親自動手。但現在你需要自己動手安裝缺失的依賴軟件,可以根據提示信息,缺什麼就裝什麼。

假如實在找不到deb安裝包,那麼只能:獲取軟件的源代碼,然後自行了斷(哦,不是,是自行編譯)。

那下面我們就來看看如何從源代碼出發直到編譯安裝完成咯。


實在沒有其他方法,選擇編譯安裝

如果你要安裝的軟件既不在軟件倉庫裡,你在網上又找不到相應的deb安裝包的話,你就只能回到石器時代,用編譯源代碼的方式來安裝了。

什麼是編譯?

簡單來說,編譯就是將程序的源代碼轉換成可執行文件的過程。就好比我們做糕點,用到的原料(如雞蛋,面粉等)等就是源代碼,而最終制成的蛋糕就是可執行文件。在這個比喻中,編譯就是制作蛋糕的過程。

假如復雜地說就說不完了。

大多數Linux的程序都是開放源碼的,我們可以比較輕易地獲取它們的源代碼,然後將其編譯成適合我們的電腦和操作系統屬性的可執行文件。

編譯安裝軟件的步驟根據軟件的不同有所區別。有些軟件的編譯安裝非常復雜,可能會讓你抓狂(特別是一些非標准,非主流的軟件),需要很多准備工作。不過一般安裝手冊都會說明詳細的安裝步驟。即使如此,有時還是會讓你比較頭大,只能解決一個個遇到的小錯誤。沒辦法,誰讓程序員愛折騰呢,不折騰的人生有什麼意義,木啊哈哈。

一步步編譯程序

在編譯之前,你需要安裝編譯的工具。在Ubuntu下有一個方法可以一次性安裝跟編譯有關的工具,就是build-essential(build是“構建”或“編譯”的意思,essential是“必要的”的意思,顧名思義就是“進行構建/編譯所需的必要工具”),運行如下命令安裝:

sudo apt-get install build-essential

一句命令搞定,Linux之威武帥氣展露無遺。Windows君基本已經哭暈在廁所~ (日常黑Windows任務又完成了,科科)

\

安裝完編譯需要的基本工具,我們就可以開工了。

我們就用一個小軟件作為例子來講解吧。這個軟件是htop。之前我們學過top命令,它可以查看電腦中運行的各種進程狀態,占用多少內存,cpu用量等等,有點類似Windows中的任務管理器。htop就是類似於top的一個小軟件。

雖然htop這個軟件從apt-get中也可以安裝。但是我們為了演示編譯安裝的過程,就拿它來開刀啦(可憐的娃)。

第一步去軟件的官網:http://hisham.hm/htop/?

然後點擊左邊的 [Downloads / Git],目前這個軟件的開發源代碼托管在Github上,Github的相關頁面:https://github.com/hishamhm/htop (可以上去看看,熟悉一下全球聞名的Github)<喎?http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjxwPiZuYnNwOzwvcD4NCjxwPrWrysfOyLaotcS3orK8sOaxvrK7ysfU2kdpdGh1YsnPo6y2+MrH0tR0YXIuZ3q1xNG5y/Ww/Ljxyr205rfF1No8L3A+DQo8cD4mbmJzcDs8L3A+DQo8cD48YSBocmVmPQ=="http://hisham.hm/htop/releases" target="_blank" title="\">http://hisham.hm/htop/releases

我們進入最新的穩定版:1.0.3版的目錄

http://hisham.hm/htop/releases/1.0.3/

下載那個文件

htop-1.0.3.tar.gz

下載之後,我們用之前學過的解壓方法解壓之:

tar zxvf htop-1.0.3.tar.gz

解壓後生成了htop-1.0.3這個目錄。

然後進入目錄中:

cd htop-1.0.3

假如用ls命令來列出文件,你會發現有好多,不要怕。我們並不需要在意這些細節。

在眾多文件中個,我們對一個文件比較感興趣:

configure

configure是英語“配置”的意思,顧名思義就是為軟件的編譯做一些配置的前期准備工作。

我們運行它:

./configure

configure這個程序會分析你的電腦,確認是否編譯所必須的所有工具都安裝了。它的執行需要些時間,因為要做不少檢測。

結果檢測出現了錯誤:

\

錯誤是:

沒有找到 -lncursesw

提示信息是:

error: You may want to use --disable-unicode or install libncursesw

意思是:“出錯啦:你也許想要用 --disable-unicode 參數 或者 安裝libncursesw”

首先小編到網上去找了安裝libncursesw的方法,都不行,所以為了快速起見,就不折騰了。直接用第一個建議:用 --disable-unicode 參數

重新運行configure(加上 --disable-unicode 參數)

./configure --disable-unicode

這會沒錯誤了。

然後我們就可以開始編譯了。用make命令:

make

也沒錯誤,編譯完成。

然後最後一步用make install命令來安裝 (需要加上sudo以用root權限來安裝軟件):

sudo make install

沒有問題。安裝完成。然後運行htop軟件試試:

htop

\

大功告成,收工~

下一課會比較難,我們來好好探究一下IP地址,域名和DNS域名解析系統的來龍去脈。


總結

  1. 大多數Linux發行版的軟件都可以用包管理工具apt-get來安裝(對於Debian一族)。

    有些軟件不能通過apt-get來安裝,因為沒有被收錄到Ubuntu的軟件倉庫中。在這種情況下,我們可以試著在網上找軟件的deb安裝包。

    假如前兩種方法都不行,我們只能選擇從源代碼編譯安裝的方法。一般通用的步驟如下:

    1. 從網上下載程序的源代碼(通常被打包壓縮為 .tar.gz 的格式)。

      解壓壓縮包(tar zxvf xxx.tar.gz)

      運行解壓之後的文件夾裡的configure文件: ./configure

      運行make來編譯

      運行sudo make install完成安裝


      第四部分第六課預告

      今天的課就到這裡,一起加油吧!

      下一課我們學習:DNS和域名,一探究竟

    Copyright © Linux教程網 All Rights Reserved