1. 程式人生 > >五、學習筆記-Linux軟體包管理(1)

五、學習筆記-Linux軟體包管理(1)

流行的兩種軟體包管理機制

(1)Debian Linux首先提出“軟體包”的管理機制—Deb軟體包
將應用程式的二進位制檔案、配置檔案、man/info幫助頁面等檔案合併打包在一個檔案中,使用者使用軟體包管理器直接操作軟體包,完成獲取、安裝、解除安裝、查詢等操作。
(2)Redhat Linux基於這個理念推出了自己的軟體包管理機制—Rpm軟體包
(3)隨著Linux作業系統規模不斷擴大,系統中軟體包間複雜的依賴關係,導致Linux使用者麻煩不斷
(4)Debian Linux開發出了APT軟體包管理器
1)檢查和修復軟體包依賴關係
2)利用Internet網路幫助使用者主動獲取軟體包
(5)APT工具再次促進了Deb軟體包更為廣泛地使用,成為Debian Linux的一個無法替代的亮點。

軟體包分類

Ubuntu有兩種型別的軟體包 :二進位制軟體包(deb)和原始碼包(deb-src)

  • 二進位制軟體包(Binary Packages):它包含可執行檔案、庫檔案、配置檔案、man/info頁面、版權宣告和其它文件。
  • 原始碼包(Source Packages):包含軟體原始碼、版本修改說明、構建指令以及編譯工具等。先由tar工具歸檔為.tar.gz檔案,然後再打包成.dsc檔案。
    在使用者不確定一個軟體包型別時,可以使用file命令檢視檔案型別。
    Ubuntu有兩種型別的軟體包:二進位制軟體包(deb)和原始碼包(deb-src)
    二進位制軟體包(Binary Packages):它包含可執行檔案、庫檔案、配置檔案、man/info頁面、版權宣告和其它文件。
    原始碼包(Source Packages):包含軟體原始碼、版本修改說明、構建指令以及編譯工具等。先由tar工具歸檔為.tar.gz檔案,然後再打包成.dsc檔案。

在使用者不確定一個軟體包型別時,可以使用file命令檢視檔案型別。

[email protected]:~$ file g++_4%3a4.6.3-1ubuntu5_i386.deb 
g++_4%3a4.6.3-1ubuntu5_i386.deb: Debian binary package (format 2.0)

軟體包命名

Filename_Version-Reversion_Architecture.deb

Filename :代表軟體的名稱
Version:代表軟體版本
Reversion:代表修訂版本
Architecture:代表體系結構

常用軟體包管理工具

類別 常用工具舉例 描述
命令列 dpkg-deb、dpkgapt 在命令列模式下完成軟體包管理任務。為完成軟體包的獲取、查詢、軟體包依賴性檢查、安裝、解除安裝等任務,需要使用各自不同的命令
文字視窗介面 dselest、aptitude、tasksel 在文字視窗模式中、使用視窗和選單可以完成軟體包管理任務
圖形介面 synaptic 在 X-Window圖形桌面環境中執行,具有更好的互動性、可讀性、易用性等特點

dpkg是最早的Deb包管理工具,它在Debian一提出包管理模式後就誕生了。使用dpkg可以實現軟體包的安裝、編譯、解除安裝、查詢,以及應用程式打包等功能。但是由於當時Linux系統規模和Internet網路條件的限制,開發人員沒有考慮到作業系統中軟體包存在如此複雜的依賴關係,以及幫助使用者獲取軟體包(獲取存在依賴關係的軟體包)。為了解決軟體包依賴性問題和獲取問題,就出現了APT工具。

dpkg相關命令

dpkg -i :安裝一個在本地檔案系統上存在的Debian軟體包。
dpkg -r :移除一個已經安裝的軟體包
dpkg -P :移除已安裝軟體包及配置檔案
dpkg -L :列出安裝的軟體包清單
dpkg -S :顯示軟體包的安裝狀態
dpkg -reconfigure :重新配置一個已經安裝的軟體包。

軟體包優先順序

類別 含義 補充說明
Required(必須) 該級別軟體包是保證系統正常執行所必須的 包含所有必要的系統工具。儘管Require級別的軟體不能滿足整個系統的服務,但至少能夠保證系統正常啟動。如果刪除其中一個軟體包,系統將受到損壞而無法恢復,例如bash、mount、upstart
Important(重要) 若缺少該級別軟體包,系統會執行困難或不好操作 該級別軟體包是一些實現系統底層功能的程式,例如aptitude、ubuntu-keyring、cpio
Standard(基本) 該級別軟體包是任何Linux系統的標準件 該級別的軟體包可以支撐命令列控制檯系統執行。通常作為預設安裝選項,例如 memtest86、telnet、pppconfig、ed
Optional(可選) 該級別軟體包是否安裝不影響系統的正常執行 該級別的軟體包用於滿足使用者特定的需求或服務。它們不會影響系統的正常執行,例如 X11、mysql、openoffic.org
Extra(額外) 該級別軟體包可能與其他高級別軟體包存在衝突

軟體包的狀態

(1)期望狀態:標記使用者希望將某個軟體包處於的狀態。
(2)當前狀態:標記使用者操作該軟體包後的最終狀態。

類別 狀態 狀態符 描述
期望狀態 未知(unknown) u 使用者並沒描述他想對軟體包進行什麼操作
已安裝(install) i 該軟體包已安裝或升級
刪除(remove) r 軟體包已刪除,但不想刪除任何配置檔案
清除(purge) p 使用者希望完全刪除軟體包,包括配置檔案
保持(hold) h 使用者希望軟體包保持現狀,例如,使用者希望保持當前的版本、當前的狀態
當前狀態 未安裝(Not) n 該軟體包描述資訊已知,但仍未在系統中安裝
已安裝(installed) i 已完全安裝和配置了該軟體包
僅存配置(config-file) c 軟體包已刪除,但配置檔案仍保留在系統中
僅解壓縮(Unpacked) U 已將軟體包中的所有檔案釋放,但尚未執行安裝和配置
配置失敗(Failed-config) F 曾嘗試安裝改軟體包,但由於錯誤沒有完成安裝
不完全安裝(Half-installed) H 已開始進行提取後的 配置工作,但由於錯誤沒有完全安裝

軟體包的依賴性關係

依賴關係 關係描述
依賴(depends) 要執行軟體包A必須安裝軟體包B,甚至還依賴於B的特定版本。通常版本依賴有最低版本限制
推薦(recommends) 軟體包維護者認為所有使用者都不會喜歡缺少軟體包A的某些功能,而這些功能需要B來提供
建議(suggests) 軟體包B能夠增強軟體包A的功能
替換( replaces) 軟體包B安裝的檔案被軟體包A中的檔案刪除或覆蓋了
衝突(conflicts) 如果系統中安裝了軟體包B,那麼軟體包A將無法執行。“Conflicts”常和“replaces”同時出現
提供(provides) 軟體包A中包含了軟體包B中的所有檔案和功能

獲取系統中已安裝軟體包的資訊

(1)檢視當前系統中已經安裝的軟體包資訊可使用dpkg-l命令。“dpkg-l”命令可以與less和grep命令配合使用。

sudo gpkg -l vim
sudo gpkg -l | less

(2)查詢系統已經安裝的指定軟體包的詳細資訊(dpkg -s)

sudo gpkg -s vim

在這裡插入圖片描述

(3)顯示指定名稱的軟體包安裝到系統中的檔案列表(dpkg -L)

sudo dpkg -L vim

在這裡插入圖片描述

(4)查詢系統中的某個檔案屬於哪個軟體包(dpkg -S)
(5)檢視Deb包中包含的檔案列表(dpkg -c)