ubuntu 源碼編譯,dpkg,apt 安裝原理 及簡單使用

荷蘭菊

1. 源碼編譯(源碼安裝通常安裝比較麻煩,特別是解決依賴經(jīng)常會(huì)出現(xiàn)問題,但是通常編譯可以獲得該軟件的最新版本)

  • 源碼:程序代碼,寫給人開的程序語言,但機(jī)器無法識(shí)別,所以無法執(zhí)行;
  • 編譯程序:將程序代碼轉(zhuǎn)譯成為機(jī)器能看得懂的語言,相當(dāng)與翻譯器;
  • 可執(zhí)行文件:經(jīng)過編譯程序變成二進(jìn)制程序后機(jī)器可以識(shí)別的可執(zhí)行二進(jìn)制文件;

而在整個(gè)編譯的過程,又需要設(shè)置軟件安裝路徑,確定鏈接庫位置,檢測(cè)庫依賴關(guān)系是否滿足,判斷目標(biāo)系統(tǒng)上是否有合適的編譯環(huán)境等復(fù)雜的過程。通常軟件開發(fā)商都會(huì)寫這樣一個(gè)檢測(cè)程序,來檢測(cè)用戶的操作環(huán)境,以及該操作環(huán)境是否滿足開發(fā)商所需的其他功能,替我們完成上訴的復(fù)雜過程。檢測(cè)完畢后,就會(huì)主動(dòng)新建一個(gè)Makefile的規(guī)則文件,而這個(gè)檢測(cè)程序的名字通常為configure(下載完軟件源碼會(huì)在源碼文件中找到)。

獲取源碼文件,解壓后,cd進(jìn)入源碼文件目錄,找到configure程序,使用./configure建立Makefile文件(必須保證Makefile文件正確建立,如果建立不成功的話,查看錯(cuò)誤,并依據(jù)錯(cuò)誤提示,解決后再次建立Makefile文件,直到正確建立Makefile文件)

成功生成 Makefile后 我們只需要使用sudo make命令進(jìn)行編譯

編譯成功后,使用sudo make install進(jìn)行安裝軟件

不過源碼安裝的話,盡量將源碼文件放在一個(gè)能找到的特定位置,一般的話Makefile也會(huì)提供uninstall,這樣的話,當(dāng)我們需要卸載軟件時(shí),可以到軟件包中輸入sudo make uninstall卸載軟件。
也可以使用 ./configure --prefix='File Path'命令,將軟件安裝在File Path位置,這樣可以方便刪除。關(guān)于configure的更多參數(shù)可以查看軟件包中列如ReadMe文件或INSTALL文件,一般有參數(shù)設(shè)置說明。

正因?yàn)樯显V源碼安裝時(shí)出現(xiàn)的各種麻煩,所以引入了軟件包管理系統(tǒng)。(不過在使用linux 時(shí)需要進(jìn)行源碼編譯,也是比較常見的?。?/p>

2. dpkg安裝

為了解決上訴問題,很多廠商發(fā)布了針對(duì)各種 linxu distribution 編譯好的軟件。因?yàn)檐浖呀?jīng)編譯好了,所以我們只要像windows下一樣安裝就ok。

linux 開發(fā)商在固定的硬件平臺(tái)和操作系統(tǒng)平臺(tái)上將需要安裝的軟件編譯好,然后將這個(gè)軟件所有的相關(guān)文件打包成一個(gè)特殊格式的文件,這個(gè)文件還包括了預(yù)先檢測(cè)系統(tǒng)與依賴的腳本,并且提供記載該軟件提供的所有文件信息??蛻羧〉密浖螅灰ㄟ^特定的命令來安裝,那么該軟件就會(huì)按照內(nèi)部的腳本來檢測(cè)前驅(qū)軟件的存在,若安裝的環(huán)境符合滿足需求,按么就會(huì)開始安裝。安裝完成后還會(huì)將該軟件的信息寫入軟件管理機(jī)制中,以完成未來的升級(jí),刪除等操作。

下面是dpkg一些基礎(chǔ)命令的簡介:

  1. dpkg -i package-name 安裝軟件包
  2. dpkg -r package-name 刪除軟件包(保留配置信息)
  3. dpkg -P package-name 刪除軟件包(包括配置信息)
  4. dpkg --configure package-name 配置軟件包,如果加上-a表示配置所有未配置的軟件包
  5. dpkg --unpack package-name 解開軟件包到系統(tǒng)目錄,但不進(jìn)行配置

下面幾個(gè)命令用于對(duì)軟件包進(jìn)行查詢

  1. dpkg -I filename 查看軟件說明(直接使用dpkg -l 查詢所有安裝的軟件包,filename可以使用正則,我通常用```dpkg -l | grep "filename"因?yàn)闀?huì)存在軟件名記不住的情況)
  2. dpkg -L filename 查看package-name對(duì)應(yīng)的軟件包安裝的文件及目錄
  3. dpkg -s filename 查看package-name對(duì)應(yīng)的軟件包信息
  4. dpkg -S filename-pattern 從已經(jīng)安裝的軟件包中查找包含filename的軟件包名稱

dpkg軟件包相關(guān)文件介紹
/etc/dpkg/dpkg.cfg dpkg包管理軟件的配置文件
/var/log/dpkg.log dpkg包管理軟件的日志文件
/var/lib/dpkg/available 存放系統(tǒng)所有安裝過的軟件包信息
/var/lib/dpkg/status 存放系統(tǒng)現(xiàn)在所有安裝軟件的狀態(tài)信息
/var/lib/dpkg/info 記安裝軟件包控制目錄的控制信息文件

3. apt安裝

雖然我們?cè)谑褂?strong>dpkg時(shí),已經(jīng)解決掉了 軟件安裝過程中的大量問題,但是當(dāng)依賴關(guān)系不滿足時(shí),仍然需要手動(dòng)解決,而apt這個(gè)工具解決了這樣的問題,linux distribution 先將軟件放置到對(duì)應(yīng)的服務(wù)器中,然后分析軟件的依賴關(guān)系,并且記錄下來,然后當(dāng)客戶端有安裝軟件需求時(shí),通過清單列表與本地的dpkg以存在的軟件數(shù)據(jù)相比較,就能從網(wǎng)絡(luò)端獲取所有需要的具有依賴屬性的軟件了。

下面是apt的一些基礎(chǔ)命令簡介:

  1. apt-get update 更新源
  2. apt-ge dist-upgrade 升級(jí)系統(tǒng)
  3. apt-get upgrade 更新所有已經(jīng)安裝的軟件包
  4. apt-get install package_name 安裝軟件包(加上 --reinstall重新安裝)
  5. apt-get remove 移除軟件包(保留配置信息)
  6. apt-get purge package_name 移除軟件包(刪除配置信息)
  7. apt show pack_name 獲取包的相關(guān)信息
  8. apt search page_name 搜索包的相關(guān)信息
  9. apt-cache depends package 了解使用依賴
  10. apt-get check 檢查是否有損壞的依賴

apt軟件包相關(guān)文件介紹:
/etc/apt/sources.list 記錄軟件源的地址
/var/cache/apt/archives 已經(jīng)下載到的軟件包都放在這里

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容