《LINUX教學:Linux探索之旅 | 第四部分第五課:源碼編譯,安裝便利》要點:
本文介紹了LINUX教學:Linux探索之旅 | 第四部分第五課:源碼編譯,安裝便利,希望對您有用。如果有疑問,可以聯系我們。
?
《Linux摸索之旅》全系列
上一課 Linux探索之旅 | 第四部分第四課:分析網絡,隔離防火 比擬難.這一課比擬輕松.
之前的課程 Linux探索之旅 | 第二部分第七課:軟件安裝,如虎添翼 中,我們已經了解過在Ubuntu這個Linux的發行版下安裝軟件是何等便利,用apt-get這個工具可以輕松搞定.這種方式可以讓我們下載并安裝大部分的軟件.
其他Linux刊行版也類似,一通百通.
但是,有些軟件并沒有包括在軟件倉庫中,那么我們只能手動來安裝了,也就是只能下載軟件的源代碼,編譯以生成可執行文件.
這個方式有時候會比擬復雜.我們需要首先下載源代碼,下載下來的源碼通常是一個壓縮包,解壓壓縮包,然后配置,再編譯,再安裝.
希望這一課能讓年夜家把之前學的一些知識應用到實踐中,我們一步步來探究軟件的編譯.
首先,我們得聲明:
這一部分涉及到的軟件包安裝等知識點是基于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(deb是Debian的縮寫)的安裝包..deb的安裝包只能用于Debian一族的操作系統,包含Ubuntu.而Redhat一族(包含Fedora)用的則是后綴為.rpm(rpm是Redhat Package Manager的縮寫)的安裝包.
有個軟件可以協助將rpm安裝包轉換為deb安裝包.這個軟件是alien(就是“外星人”的意思,哈哈):
# alien默認沒有安裝,所以首先要安裝它.
sudo apt-get install alien
# 將rpm轉換為deb,完成后會生成一個同名的xxxx.deb.
sudo alien xxxx.rpm
# 安裝deb安裝包.注意,用alien轉換的deb包并不克不及保證100%順利安裝,所以可以找到deb最好直接用deb.
sudo dpkg -i xxxx.deb
如果你有幸直接在網上找到了軟件的deb安裝包,那么下載下來,雙擊安裝包(或者用上面的命令行的形式:sudo dpkg -i xxxx.deb)來安裝即可.
然后一個窗口會彈出,問你是否肯定安裝,選擇“安裝”.
如果安裝過程沒出錯,那很好.如果有差錯,一般可能是因為:
也許你下載的deb安裝包不符合你的電腦環境.可能位數搞錯了,32位和64位有區其余.
也許你沒有安裝那些依賴軟件.因為apt-get工具會幫我們自動下載各種依賴軟件,所以不需要我們親自動手.但現在你需要本身動手安裝缺失的依賴軟件,可以根據提示信息,缺什么就裝什么.
如果實在找不到deb安裝包,那么只能:獲取軟件的源代碼,然后“自行了斷”(哦,不是,是自行編譯).
那下面我們就來看看如何從源代碼動身直到編譯安裝完成咯.
如果你要安裝的軟件既不在軟件倉庫里,你在網上又找不到相應的deb安裝包的話,你就只能回到“石器時代”,用編譯源代碼的方式來安裝了.
簡單來說,編譯就是將程序的源代碼轉換成可執行文件的過程.就好比我們做糕點,用到的原料(如雞蛋,面粉等)等就是源代碼,而最終制成的蛋糕就是可執行文件.在這個比方中,編譯就是制作蛋糕的過程.
假如繁雜地說就說不完了.
大多數Linux的程序都是開放源碼的,我們可以比擬輕易地獲取它們的源代碼,然后將其編譯成適合我們的電腦和操作系統屬性的可執行文件.
編譯安裝軟件的步驟根據軟件的不同有所區別.有些軟件的編譯安裝非常復雜,可能會讓你抓狂(特別是一些非標準,非主流的軟件),必要很多準備工作.
小編以前在自學嵌入式的進程中對此深有體會.
不過一般安裝手冊(一般是下載下來源代碼時附帶的README文本文件,read是英語“閱讀”的意思,me是英語“我”的賓語形式.所以read me便是“閱讀我”的意思)都會說明詳細的安裝步驟.
即使如此,有時還是會讓你比較頭大,只能辦理一個個遇到的小錯誤.
沒方法,誰讓程序員愛折騰呢,不折騰的人生有什么意義,木啊哈哈.
在編譯之前,你需要安裝編譯的工具.在Ubuntu下有一個辦法可以一次性安裝跟編譯有關的工具,就是build-essential(build是“構建”或“編譯”的意思,essential是“必要的”的意思,顧名思義就是“進行構建/編譯所需的必要工具”),運行如下命令安裝:
sudo apt-get install build-essential
一句敕令搞定,Linux之威武帥氣展露無遺.
Windows君基本已經哭暈在茅廁~ (日常黑Windows任務又完成了,哈哈).
安裝完編譯必要的基本工具,我們就可以開工了.
我們就用一個小軟件作為例子來講解吧.這個軟件是htop.之前我們學過top命令,它可以查看電腦中運行的各種進程狀態,占用多少內存,cpu用量等等,有點類似Windows中的任務管理器.htop便是類似于top的一個小軟件.
雖然htop這個軟件從apt-get中也可以安裝.然則我們為了演示編譯安裝的過程,就拿它來“開刀”啦(可憐的htop).
之前寫這篇文章是htop最新版還是1.0.3版,本日(2016年12月17日)去官網看的時候最新版已經是2.0.2了,不過安裝過程是類似的.
點擊菜單中的 [Downloads],目前這個軟件的開發源代碼托管在Github上,Github的相關頁面:https://github.com/hishamhm/htop (可以上去看看,熟悉一下全球馳名的Github)
也可以閱讀我的以下三篇文章,順便學習一下Git和Github兩大超等厲害的生產力工具的使用:
GitHub 教程系列文章:?
通過GitHub創立個人技術博客圖文詳解?
GitHub 使用教程圖文詳解? ?
使用 GitHub / GitLab 的 Webhooks 進行網站自動化部署?
多個GitHub帳號的SSH key切換
如安在同一臺電腦上使用兩個GitHub賬戶
利用GitHub搭建小我Maven倉庫?
一分鐘熟悉GitHub
分享適用的GitHub 使用教程 ?
GitHub使用操作指南?
GitHub使用辦法入門基礎?
GitHub 的詳細先容:請點這里
GitHub 的下載地址:請點這里
雖然htop的源碼托管在Github上,但其穩定的發布版本不是放在Github上,而是以tar.gz的壓縮包格式寄存在:
http://hisham.hm/htop/releases
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
也沒差錯,編譯完成.
sudo make install
htop
下一課會比擬難,內容也會很多.我們來好好探究一下IP地址,域名和DNS域名解析系統的來龍去脈.
大多數Linux發行版的軟件都可以用擔保理工具apt-get來安裝(對于Debian一族).
有些軟件不克不及通過apt-get來安裝,因為沒有被收錄到Ubuntu的軟件倉庫中.在這種情況下,我們可以試著在網上找軟件的deb安裝包.
假如前兩種辦法都不行,我們只能選擇從源代碼編譯安裝的辦法.一般通用的步驟如下:
1 從網上下載法式的源代碼(通常被打包壓縮為 .tar.gz 的格式).
2 解壓緊縮包(tar zxvf xxx.tar.gz).
3 運行解壓之后的文件夾里的configure文件: ./configure.
4 運行make來編譯.
5 運行sudo make install完成安裝.
本日的課就到這里,一起加油吧!
本文永遠更新鏈接地址:
維易PHP培訓學院每天發布《LINUX教學:Linux探索之旅 | 第四部分第五課:源碼編譯,安裝便利》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。