歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu編譯安裝軟件就那麼簡單

Ubuntu編譯安裝軟件就那麼簡單

日期:2017/2/28 14:28:18   编辑:Linux教程

編譯軟件

Ubuntu倉庫有著成千上萬的軟件,如果加上第三方的倉庫,你可以得到更多!然而,有些情況下,可能需要你通過源碼來編譯安裝軟件(相關指導請移步Compiling Easy How To ):

1、倉庫中的軟件包不可用;

2、倉庫中的軟件包太舊了;

3、倉庫中的軟件包,因某些原因導致程序的個別功能不可用;

4、倉庫中的軟件包可能有些bug被所有者修復了;

5、你想通過測試來幫助作者修復某些bug;

6、或者只是你想從頭開始,試試手動編譯一個程序;

環境

你需要根據寫成相關程序的語言,來編譯軟件。被要求編譯的應用程序通常是由C和C++寫成的,在這種情況下,你需要安裝編譯器gcc,可以通過安裝build-essential軟件包來獲取。通常情況下,你需要下面的命令操作來實現:

sudo apt-get install build-essential

為了能夠運行configure和autogen.sh文件,需要更多的程序:

sudo apt-get install automake

最後,需要CheckInstall安全的將程序裝載到你的系統中:

sudo apt-get install checkinstall

如果程序是由java寫成的,那麼你還需要一個java run-time和compiler。你可以根據java頁的說明來安裝java。有時候需要一個基於構建工具ant的java,軟件包可以從ubuntu倉庫獲得:

sudo apt-get install gcj

如果程序是由解釋語言寫成的,比如python和perl,那麼你僅僅需要一個解析器,這個是ubuntu默認安裝的,你可以直接運行程序,絕大多數情況下,你可以直接從ubuntu倉庫中安裝那些為了運行程序而必須的python和perl程序。更多解釋語言的情報請參考文章結尾!

你真的需要編譯嗎?

如果你編譯軟件只是因為軟件倉庫裡的不可用,那麼請在Ubuntu Package Search中搜索軟件包!很多作者同時也制作了他們自己的PPA,它們也可以被添加到你的軟件源裡。許多作者制作的PPA源的地方是Launchpad ,你也可以通過命令行,使用下面的命令搜索相關軟件的keyword(當然了,請使用實際術語代替keyword)!

apt-cache search <keyword>

獲取源

通常,源碼包會以作者自己網站的某種形式來提供!通常的格式是tar.gz和tar.gz2或者zip。你可以使用文件解壓縮工具,通過下面的命令來解壓他們:

tar -xvf file.tar.gz tar -xvf file.tar.bz2 unzip file.zip

有時候,也需要使用CVS剪切邊緣代碼,你可以通過sudo apt-get install cvs來安裝CVS。例如,檢索NetworkManager的源碼,寫出下面的命令:

cvs -d :pserver:[email protected]:/cvs/gnome login
cvs -d :pserver:[email protected]:/cvs/gnome co NetworkManager

如果你是從CVS安裝,請參閱文章最後的介紹。

很多軟件包,可以使用Bazaarsudo apt-get install bzr)從upstream獲取當前的代碼,而無需手動查找版本控制位置。例如:

bzr get lp:network-manager

三步編譯

絕大多數linux上需要源碼安裝的程序可以通過./configuremakemake install這三步來實現安裝,而最困難的一步往往都在./configure這一步,那後面的幾步是可以很輕松的完成的。

Configure

configure是用來做下面這些事的一個腳本:
1、用以檢查計算機建立包所必須的完整性;

2、幫助你根據需要改變默認的路徑;

3、用以激活/禁用編譯程序中的各種選項;

4、用以改變程序將要被安裝的路徑;
你可以通過執行下面的命令來查看特定configure腳本所提供的選項個功能:

./configure --help | less

例如,默認的configure腳本會指定安裝到/usr/local下面,如果你想改變路徑,可以執行下面顯示的configure腳本命令:

./configure --PREFIX=/opt

如果你真的想從零開始編譯,可以認真研讀一下README或者INSTALL文件。你會看到需要什麼樣的軟件碎片,比起在包系統中,在這些文件中他們通常有著不一樣的名字。接下來,可以通過使用apt-cache工具來尋找相應的包。如果你已經通過倉庫中編譯包,那麼還有一個訣竅,就是通過下面的命令來安裝包的依賴:

sudo apt-get build-dep <package>

這可以確保所有所需的包以來都可以被安裝,以期configure不會由於過舊的依賴包而報錯,否則你將不得不繼續編譯相關的依賴。

尋找並修復configure的故障

恰巧在下面這幾種情況下,configure可能會失敗:
1、編譯的時候需要-dev包;

2、要編譯GNOME應用那麼需要相應的gnome-level;而編譯KDE應用則需要kde-level

3、CC++庫的名稱總是以lib開頭,因此,如果./configure報錯說丟失了庫foo,那麼你需要安裝libfoo-dev包;

4、如果configure說要“X includes”,那麼你可能需要安裝下面這些包“xlibs-dev,xlibs-static-dev,x-window-system-dev”,注意,有時候,僅僅需要xorg-devx-dev就可以了。-Racecar56 Under Jaunty則需要安裝xorg-dev和libx11-dev。

5、查看哪些包被需要的技巧,可以使用auto-apt工具或者apt-file工具(auto-apt可能更快一些):

sudo apt-get install auto-apt
sudo auto-apt update
auto-apt search missing-file.h

使用auto-apt和上面是一樣的,如果把auto-apt替換成auto-apt!

6、如果編譯軟件禁用失敗的選項,可以使用./configure –disable-FEATURE選項。

7、如果你自己沒能修復你遇到的問題,你也可以尋求ubuntu官方的幫助哦。
如果根本不存在configure的文件,那麼最好查看一下configure.ac文件(有必要認真閱讀一下INSTALL和README文件),如果configure.ac文件存在,那就是開發者忘記創建最終configure文件了,你可以自己創建,不過需要autoconf包:

sudo apt-get install autoconf

安裝成功之後,鍵入:

autoconf

如果幸運的話,一個可工作的configure文件應該被創建了。

編譯

可喜可喝,configure步驟已經完成了,真正的編譯安裝可以開始了。非常簡單:

make

現在如果一切順利的話,你應該的到了一個可工作的程序copy在你的源目錄下,你可以運行下面的命令來試用一下:

src/program_name

如果程序這一步失敗了,那麼就有可能是程序的bug,這時候你最好聯系一下作者,告訴他程序的問題。

安裝軟件包

如果一切進展順利的話,你可以鍵入下面的命令來安裝程序:

sudo checkinstall

使用CheckInstall可以創建一個.deb包,這貨稍後可以很容易被移除哦!

然而,由於某些原因,你不想使用CheckInstall,這是安裝的最後方法(不推薦):

sudo make install

注意:

1、如果程序是內核的一個組件,那麼還需要gcc-3.4(on breezy)和kernel-headers,他們稍後可以使用sudo apt-get install gcc-3.4 linux-headers-$(uname -r)來安裝。請注意,每內核升級後,那麼內核組件也必須重新編譯,而新的header也必須重新下載。要編譯完整內核,請參見KernelCompile。

2、如果你想重新編譯已經存在的debian的軟件包,可以使用dpkg-buildpackage -rfakeroot,如果個別包丟失了,build script會告訴你包的名字!

3、如果你從revision control (CVS, Bazaar, 等.)進行編譯,通常需要獲取revision control的源碼,之後增加一個步驟,運行autogen.sh腳本,為你生成configure腳本。

解釋語言

通常解釋語言在必須組件未安裝的情況下會運行失敗。

1、perl組建通常類似於foo::bar(例如xml::parser),然而,它的包為稱為ibfoo-bar-perl(libxml-parser-perl),通過apt-cache搜索可以幫助找到名稱稍許變化的文件,例如:

apt-cache search foo | grep bar apt-cache search xml | grep parser

2、python組件被稱作python-module,因此python mysql組建被稱作python-mysqldb,映射在這裡少有一致,apt-cache可以給一些幫助!像這樣搜索一下:

apt-cache search python | grep mysql

通常所需幫助文檔在被要求安裝的組件當中!

3、ruby組件的命名和perl有些類似,因為activesupport是libactivesuport-ruby[1.8|1.9](如果沒有特別要求,默認是1.8)。當然了,你也可以安裝ruby包管理平台rubygems,然而,debian/ubuntu關閉了一些升級功能,確保rubygems可以使用apt正常工作。如果你想保持ruby的最新版本,可以看一下RubyOnRails

apt-cache search ruby | grep activesupport

評論

為了找到更好的技巧,你可以考慮在CompilingEasyHowTo獲取更加有好的幫助。而且,你會發現CheckInstall也是很有幫助的

1checkinstall不是文檔中描述的默認方法?有些人剛開始編譯的時候不喜歡使用checkinstall,有原因嗎?

修改每一頁,我都是相當的謹慎,我希望大家都能同意!

2file-roller不能用來解壓文件?沒有人必須要記住“-jxvf”!請介紹一些盡可能簡單的操作工具,高級用戶可以在數百萬的網絡文檔裡找到命令行的捷徑,“this”文檔應該只提供明了的方法,這樣可以讓大家更注重其ubuntu來,而且也可以更容易的運行那些鮮為人知的軟件包!

實際上“tar xf file”已經足夠了,GNU tar已經可以自動探測並解壓縮它們了。如果用戶想要詳細的輸入信息,則可以使用"tar xvf file"要是shell中編譯的最後幾步在提供一個GUI步驟,可能導致更為嚴重的問題!

這則指導說明是給開發者的還是用戶的?

原文地址:點擊浏覽

更多Ubuntu相關信息見Ubuntu 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=2

Copyright © Linux教程網 All Rights Reserved