ref:
https://www.debian.org/doc/manuals/debian-faq/ch-pkgtools.zh-cn.html
The Debian GNU/Linux FAQ
第 7 章 - Debian 的包管理工具
7.1 提供了哪些管理工具?
7.1.1 dpkg
這個主要的軟體包管理工具, 有很多參數, 常用的有:
- 參數查找: dpkg --help.
- 輸出指定軟體包的控制檔案(和其它資訊): dpkg --info foo_VVV-RRR.deb
- 安裝軟體包(包括解包和配置): dpkg --install foo_VVV-RRR.deb.
- 解包(但不配置): dpkg --unpack foo_VVV-RRR.deb. 注意, 此操作解開的包處于不可用狀态, 要正常運作, 一些檔案還需要進一步配置. 這個指令會删除這個程式的已安裝版本. 并運作相關聯的 preinst 腳本(詳見Debian 的 preinst, postinst, prerm, 和 postrm 腳本?, 第 6.6 節).
- 配置一個解開的包: dpkg --configure foo. 這個操作會運作相關聯的 postinst(詳見Debian 的 preinst, postinst, prerm, 和 postrm 腳本?, 第 6.6 節)腳本, 并更新 conffiles 中列舉的檔案. 注意,'配置'(configure)操作使用軟體包名(如 foo), 而不是Debian文檔檔案名(如, foo_VVV-RRR.deb).
- 從 Debian 包中釋放一個名為 "blurf" 檔案(或一組名為 "blurf" 的檔案): dpkg --fsys-tarfile foo_VVV-RRR.deb | tar -xf - blurf*
- 删除軟體包(不包括它的配置檔案): dpkg --remove foo.
- 删除軟體包(包括它的配置檔案): dpkg --purge foo.
- 列出包含 "foo*" 字元串的軟體包的狀态: dpkg --list 'foo*'.
7.1.2 dselect
Debian 包管理系統的菜單界面. 對第一次安裝和大範圍更新特别有用.
dselect
可以:
- 引導使用者選擇安裝或删除軟體包時, 確定要安裝的包不與其它包沖突, 使得每個(要安裝的軟體)包正常運作的所需的所有軟體包都被安裝.;
- 對使用者所作選擇的不一緻和不相容做出警告;
- 确定必須安裝的軟體包的安裝順序;
- 自動完成安裝或删除; 并
- 引導使用者完成每個軟體包的配置\.
進入
dselect
時, 有七個菜單項, 每項完成特定的功能, 使用者可以用上下鍵移動亮度條, 然後按 <回車> (<enter>) 鍵選擇加亮顯示的項.
接下來的顯示和使用者的選擇有關. 如果選的不是 Access 或 Select,
dselect
就會繼續執行指定的動作: 如, 選 Remove, dselect就會删除使用者在 Select 中的最後選擇的所有軟體包.
Access 和 Select 菜單項下有更多的菜單選項, 兩種選擇都會出現分屏, 上部給出選項的滾動清單, 部是對應選項的簡要解釋("info").
任何時候都可按下 "?" 鍵, 都可呼出幫助資訊, 使用線上幫助.
通常按照第一個界面裡菜單排列順序操作來完成軟體包安裝, 但, 使用者也可以根據自己的需要來做出選擇(但這和使用者的具體選擇有關)..
- 通過選擇一個 Access Method 開始. 這是指使用者通路 Debian 軟體包的方法; 如有些使用者從 CD-ROM 上擷取 Debian 軟體包, 有些打算通過匿名 FTP 擷取.
退出後所選的 "Access Method" 會被存儲下來, 是以如不再調用這個選項, 通路方式不會改變.dselect
- 接着 Update 可用軟體清單.
讀取位于 Debian 軟體包存儲目錄的頂層的 "Packages.gz" 檔案(如果不存在,dselect
會試圖生成一個).dselect
-
Select 欲安裝的軟體包, 選取此菜單項後, 首先顯示的是滿屏的幫助資訊(除非使用了 `--expert' 指令行參數), 退出幫助, 就會出現選擇軟體包的分屏菜單..
相對較窄的上半屏是 37400 個 Debian 軟體包的滾動清單; 下半屏是對應軟體包或包組的描述T.
用高亮條來標明軟體包名或者包組, 然後選擇操作:
可以使用不同的排序方式顯示軟體包清單, 使用 `o' 鍵在不同的排序方式間切換. 預設的排序方式是優先級排序, 同一優先級内, 按存儲目錄排序, 這種排序方式, 可能先顯示 A 目錄的軟體包, 然後是B, 接着是低一個優先級的 A.
你也可以使用 `v' (verbose) 鍵來展開螢幕頂部标簽的解釋. 這樣就可以在右邊顯示更多的内容, 通過左右箭頭來進行左右移動.
如果選了安裝或删除一個軟體包, 如
, 這個軟體包又依賴于(需要)另一個(軟體)包, 如foo.deb
,blurf.deb
就會在下一屏顯示出來, 可以對系統建議(安裝或不安裝)做出選擇, 接受或拒絕. 按 Shift-D 鍵稍後操作, Shift-U 傳回上一菜單. 任何時候都可以按 Shift-Q 儲存選擇,傳回主菜單.dselect
- 鎖定
- 使用 '=' 鍵, 告訴
dselect
即使這個包即使不是最新版本也不要更新.
可以通過 `:' 鍵來取消鎖定, 這是預設設定.
- 清除: 删除軟體包的所有檔案, 使用 '_' 鍵.
- 删除: 删除軟體包的大部分相關檔案, 但是不包括配置檔案(參閱 Debian 的配置檔案, 第 6.5 節)内列舉的需要保護的檔案和軟體包的配置資訊, 使用 '-' 鍵..
- 删除:
-
有兩種辦法删除:
注意,不可能删除 "所有" 的軟體包. 如果試圖這樣做, 系統就會回到最初的基本系統狀态.
- 安裝:
- 按下"+"鍵.
- 傳回主菜單, 選擇 "Install" 菜單進行對選擇的軟體包解包和配置. 或者選擇 "Remove" 菜單來删除. 選擇 "Quit" 退出
, 所作選擇會被dselect
儲存下來.dselect
7.1.3 dpkg-deb
用于 Debian 格式 (.deb) 檔案的操作. 常見操作:
- 檢視全部選項: dpkg-deb --help.
- 檢視 Debian 格式軟體包内的檔案: dpkg-deb --contents foo_VVV-RRR.deb)
- 釋放 Debian 格式軟體包内的檔案到指定目錄: dpkg-deb --extract foo_VVV-RRR.deb tmp 釋放 foo_VVV-RRR.deb 内的全部檔案到 tmp/ 目錄. 這是不需要安裝, 在本地目錄測試(軟體)包内容的簡單方法.
注意, 僅僅執行 dpkg-deb --extract 并不能正确的安裝軟體包, 應該執行 dpkg --install.
詳細參見手冊
dpkg-deb(1)
.
7.1.4 apt-get
apt-get
提供一個簡單的指令行安裝軟體包的方法. 和
dpkg
不同,
apt-get
不能識别 .deb 檔案, 它使用軟體包原來的名稱通過
/etc/apt/sources.list
指定的安裝源進行安裝.
更多資訊, 安裝
apt
軟體包參閱
apt-get(8)
,
sources.list(5)
和
/usr/share/doc/apt/guide.html/index.html
.
7.1.5 dpkg-split
這個程式用來将大軟體包分割成小檔案(如, 寫到軟碟上), 和将分割的檔案合并. 這個程式隻能在 Debian 系統上使用(或含
dpkg
包的系統), 因為它需要調用 dpkg-deb 程式分析這個 Debian 包的組成.
例如, 把一個大 .deb 分割成 N 部分,
- 執行指令 dpkg-split --split foo.deb. 就會在目前目錄出現分割出N個大小為 460KB 的檔案.
- 把這 N 個檔案考到軟碟上.
- 把軟碟上的内容考到其他機器上.
- 使用指令 dpkg-split --join "foo*" 合并.
7.2 Debian 可以對一個運作中的程式進行更新, 如何做到的?
Debian GNU/Linux 系統的核心支援運作中替換檔案.
我們另外提供可一個稱作
start-stop-daemon
的程式, 用于啟動時驅動程序或核心運作級别發生變化時停掉程序(如, 由多使用者到單使用者模式或到關機模式). 包含某個程序的軟體包安裝時, 安裝腳本停止和重起程序調用用的也是這個程式.
7.3 我的 Debian 系統上裝了哪些軟體包?
要檢視 Debian 系統上安裝的所有軟體包的狀态, 運作
dpkg --list
輸出每個軟體包的一行簡單介紹, 2字元的狀态标志, 包名, 所安裝版本, 和簡要描述.
檢視以 "foo" 開頭的軟體包的狀态, 執行:
dpkg --list 'foo*'
要得到某個軟體包的更詳細資訊, 執行:
dpkg --status packagename
7.4 如何找出一個檔案的歸屬包?
要查找出包含檔案 foo 的軟體包, 執行:
-
dpkg --search filename
在已安裝軟體包中搜尋 filename.(等同于搜尋 /var/lib/dpkg/info/ 目錄下擴充名為 .list 的檔案, 并輸出所有包含此檔案的軟體包名和版本号).
-
zgrep foo Contents-ARCH.gz
通過絕對路徑來搜尋含 foo 字元串的檔案, Contents-ARCH.gz 檔案(ARCH 指要查詢的平台)在 Debian FTP 的主軟體包目錄(main, non-free, contrib)下, 一個 Contents 檔案隻包含同一目錄下的軟體包,是以使用者查找含 foo 檔案的軟體包,需要搜尋多個 Contents 檔案.
相對于 dpkg --search 這種方法的優點是,它不僅僅搜尋系統已安裝軟體包.
轉載于:https://blog.51cto.com/2042617/1596874