1. 程式人生 > >ubuntu 原始碼編譯,dpkg,apt 安裝原理 及簡單使用

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 著作權歸作者所有,轉載請聯絡作者獲得授權,並標註“簡書作者”。