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


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

  • 源碼:程序代碼,寫給人開的程序語言,但機器無法識別,所以無法執行;
  • 編譯程序:將程序代碼轉譯成為機器能看得懂的語言,相當與翻譯器;
  • 可執行文件:經過編譯程序變成二進制程序后機器可以識別的可執行二進制文件;

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

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

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

編譯成功后,使用sudo make install進行安裝軟件

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

正因為上訴源碼安裝時出現的各種麻煩,所以引入了軟件包管理系統。(不過在使用linux 時需要進行源碼編譯,也是比較常見的!)

2. dpkg安裝

為了解決上訴問題,很多廠商發布了針對各種 linxu distribution 編譯好的軟件。因為軟件已經編譯好了,所以我們只要像windows下一樣安裝就ok。

linux 開發商在固定的硬件平台和操作系統平台上將需要安裝的軟件編譯好,然后將這個軟件所有的相關文件打包成一個特殊格式的文件,這個文件還包括了預先檢測系統與依賴的腳本,並且提供記載該軟件提供的所有文件信息。客戶取得軟件包后,只要通過特定的命令來安裝,那么該軟件就會按照內部的腳本來檢測前驅軟件的存在,若安裝的環境符合滿足需求,按么就會開始安裝。安裝完成后還會將該軟件的信息寫入軟件管理機制中,以完成未來的升級,刪除等操作。

下面是dpkg一些基礎命令的簡介:

  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 解開軟件包到系統目錄,但不進行配置

下面幾個命令用於對軟件包進行查詢

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

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

3. apt安裝

雖然我們在使用dpkg時,已經解決掉了 軟件安裝過程中的大量問題,但是當依賴關系不滿足時,仍然需要手動解決,而apt這個工具解決了這樣的問題,linux distribution 先將軟件放置到對應的服務器中,然后分析軟件的依賴關系,並且記錄下來,然后當客戶端有安裝軟件需求時,通過清單列表與本地的dpkg以存在的軟件數據相比較,就能從網絡端獲取所有需要的具有依賴屬性的軟件了。

下面是apt的一些基礎命令簡介:

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

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



文/jockerMe(簡書作者)
原文鏈接:http://www.jianshu.com/p/45fa3d6b2e8d
著作權歸作者所有,轉載請聯系作者獲得授權,並標注“簡書作者”。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM