新聞中心
目錄

成都網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、成都網(wǎng)站建設(shè)、微信開發(fā)、成都小程序開發(fā)、集團(tuán)企業(yè)網(wǎng)站制作等服務(wù)項(xiàng)目。核心團(tuán)隊(duì)均擁有互聯(lián)網(wǎng)行業(yè)多年經(jīng)驗(yàn),服務(wù)眾多知名企業(yè)客戶;涵蓋的客戶類型包括:成都餐廳設(shè)計等眾多領(lǐng)域,積累了大量豐富的經(jīng)驗(yàn),同時也獲得了客戶的一致表揚(yáng)!
- 2.1. Debian 軟件包管理的前提
-
- 2.1.1. 軟件包配置
- 2.1.2. 基本的注意事項(xiàng)
- 2.1.3. 持續(xù)升級的生活
- 2.1.4. Debian 檔案庫基礎(chǔ)
- 2.1.5. Debian 是100% 的自由軟件
- 2.1.6. 軟件包依賴關(guān)系
- 2.1.7. 包管理的事件流
- 2.1.8. 對包管理問題的第一個回應(yīng)
- 2.2. 基礎(chǔ)軟件包管理操作
-
-
2.2.1.
aptvs.apt-get/apt-cachevs.aptitude - 2.2.2. 命令行中的基礎(chǔ)軟件包管理操作
- 2.2.3. aptitude 的交互式使用
- 2.2.4. aptitude 的按鍵綁定
- 2.2.5. aptitude 軟件包視圖
- 2.2.6. aptitude 搜索方式選項(xiàng)
- 2.2.7. aptitude 正則表達(dá)式
- 2.2.8. aptitude 的依賴解決
- 2.2.9. 軟件包活動日志
-
2.2.1.
- 2.3. aptitude 操作范例
-
- 2.3.1. 通過正則表達(dá)式匹配軟件包名稱來列出軟件包
- 2.3.2. 使用正則表達(dá)式匹配瀏覽
- 2.3.3. 完整地清理已刪除軟件包
- 2.3.4. 調(diào)整自動/手動安裝狀態(tài)
- 2.3.5. 全面的系統(tǒng)升級
- 2.4. 高級軟件包管理操作
-
- 2.4.1. 命令行中的高級軟件包管理操作
- 2.4.2. 驗(yàn)證安裝的軟件包文件
- 2.4.3. 預(yù)防軟件包故障
- 2.4.4. 搜索軟件包元數(shù)據(jù)
- 2.5. Debian 軟件包內(nèi)部管理
-
- 2.5.1. 檔案庫元數(shù)據(jù)
- 2.5.2. 頂層“Release”文件及真實(shí)性
- 2.5.3. 檔案庫層的“Release”文件
- 2.5.4. 獲取用于軟件包的元數(shù)據(jù)
- 2.5.5. APT 的軟件包狀態(tài)
- 2.5.6. aptitude 的軟件包狀態(tài)
- 2.5.7. 獲取的軟件包的本地副本
- 2.5.8. Debian 軟件包文件名稱
- 2.5.9. dpkg 命令
- 2.5.10. update-alternatives 命令
- 2.5.11. dpkg-statoverride 命令
- 2.5.12. dpkg-divert 命令
- 2.6. 從損壞的系統(tǒng)中恢復(fù)
-
- 2.6.1. Failed installation due to missing dependencies
- 2.6.2. Caching errors of the package data
- 2.6.3. 不兼容舊的用戶配置
- 2.6.4. 具有相同文件的不同軟件包
- 2.6.5. 修復(fù)損壞的軟件包腳本
- 2.6.6. 使用 dpkg 命令進(jìn)行救援
- 2.6.7. 恢復(fù)軟件包選擇數(shù)據(jù)
- 2.7. 軟件包管理技巧
-
- 2.7.1. 如何挑選 Debian 軟件包
- 2.7.2. 混合源檔案庫中的軟件包
- 2.7.3. 調(diào)整候選版本
- 2.7.4. 更新和向后移植
- 2.7.5. 阻止推薦的軟件包的安裝
-
2.7.6. 使用帶有
unstable軟件包的testing版本 -
2.7.7. 使用帶有
experimental軟件包的unstable版本 - 2.7.8. 自動下載和升級軟件包
- 2.7.9. 限制 APT 的下載帶寬
- 2.7.10. 緊急降級
- 2.7.11. 上傳軟件包的是誰?
- 2.7.12. equivs 軟件包
- 2.7.13. 移植一個軟件包到 stable 系統(tǒng)
- 2.7.14. 用于 APT 的代理服務(wù)器
- 2.7.15. 更多關(guān)于軟件包管理的文檔
| 注意 | |
|---|---|
|
這一章假定最新的穩(wěn)定版的代號為: |
Debian 是一個志愿者組織,它建立一致的自由軟件的預(yù)編譯二進(jìn)制包并從檔案庫中分發(fā)它們。
許多遠(yuǎn)程鏡像站提供了 HTTP 和 FTP 的方式來訪問 Debian 檔案庫。也可以使用 CD-ROM/DVD 。
目前 Debian 的軟件包管理系統(tǒng)是 高級軟件包工具 (APT),它能夠使用所有這些資源。
Debian 軟件包管理系統(tǒng),當(dāng)使用適當(dāng)時,可以讓用戶從檔案庫安裝統(tǒng)一設(shè)置的二進(jìn)制軟件包 到系統(tǒng)中?,F(xiàn)在,有 66314 個可用于 amd64 架構(gòu)的軟件包。
Debian 軟件包管理系統(tǒng)有豐富的歷史,有許多可供選擇的前端用戶程序和后端訪問方式?,F(xiàn)在,我們推薦下列的這些。
-
apt(8) 用于所有的交互式命令行操作,包含軟件包的安裝、移除和版本升級。 -
apt-get(8) 用于從腳本中調(diào)用 Debian 軟件包管理系統(tǒng)。它在apt不可用時也可作為一個備選選項(xiàng)(常見于較舊的 Debian 系統(tǒng))。 -
aptitude(8) 使用一個交互式的文本界面來管理已安裝的軟件包和搜索可用的軟件包。
表 2.1. Debian 軟件包管理工具列表
| 軟件包 | 流行度 | 大小 | 說明 |
|---|---|---|---|
dpkg |
V:924, I:999 | 6900 | 用于 Debian 的底層軟件包管理系統(tǒng)(基于文件的) |
apt |
V:870, I:999 | 4351 | 使用命令行管理軟件包的 APT 前端: apt/apt-get/apt-cache |
aptitude |
V:66, I:359 | 4256 | 使用全屏控制臺交互式管理軟件包的 APT 前端: aptitude(8) |
tasksel |
V:34, I:978 | 395 | 用來安裝選擇的任務(wù)的 APT 前端: tasksel(8) |
unattended-upgrades |
V:314, I:465 | 326 | 用于 APT 的增強(qiáng)軟件包,會自動安裝安全更新 |
gnome-software |
V:130, I:232 | 2856 | GNOME 軟件中心(圖形化的 APT 前端) |
synaptic |
V:46, I:356 | 7874 | 圖形化的軟件包管理工具(GTK 的 APT 前端) |
apt-utils |
V:382, I:997 | 1167 | APT 實(shí)用程序:apt-extracttemplates(1) 、apt-ftparchive(1) 和 apt-sortpkgs(1) |
apt-listchanges |
V:358, I:855 | 423 | 軟件包歷史更改提醒工具 |
apt-listbugs |
V:7, I:11 | 465 | 在每次 APT 安裝前列出嚴(yán)重的 bug |
apt-file |
V:18, I:75 | 90 | APT 軟件包搜索工具 —— 命令行界面 |
apt-rdepends |
V:0, I:6 | 41 | 遞歸列出軟件包依賴 |
2.1. Debian 軟件包管理的前提
2.1.1. 軟件包配置
下面是 Debian 系統(tǒng)軟件包配置的一些要點(diǎn)。
-
Debian 尊重系統(tǒng)管理員的手動配置。換句話說,軟件包配置系統(tǒng)不會為了方便而去更改那些配置。
-
每個軟件包都帶有自己的配置腳本,它使用標(biāo)準(zhǔn)用戶接口
debconf(7) 來幫助軟件包初始化安裝過程。 -
Debian 開發(fā)者通過軟件包配置腳本,盡力使你能有一個完美的升級體驗(yàn)。
-
系統(tǒng)管理員可以使用軟件包工具的全部功能。但在默認(rèn)的安裝中會禁用那些具有安全風(fēng)險的。
-
如果你手動激活了一些具有安全隱患的服務(wù),你有責(zé)任遏制風(fēng)險。
-
高深的配置可以由系統(tǒng)管理員手動啟用。這可能會對用于系統(tǒng)配置的通用流行幫助程序造成干擾。
2.1.2. 基本的注意事項(xiàng)
| 警告 | |
|---|---|
|
不要從任何的混合套件中安裝軟件包。它可能會打破軟件包的一致性,這需要你要深厚的系統(tǒng)管理知識,例如 ABI 編譯器、庫版本和解釋器特性等等。 |
Debian 系統(tǒng)管理員中的新手應(yīng)該保持在只進(jìn)行安全更新的 stable 版本。我的意思是,最好避免下列的一些行為作為一項(xiàng)預(yù)防措施,直到你十分了解 Debian 系統(tǒng)。下面有一些提醒。
-
在 “
/etc/apt/sources.list” 中不要包含testing或unstable。 -
在 “
/etc/apt/sources.list” 里不要在標(biāo)準(zhǔn)的 Debian 中混合使用其它非 Debian 的檔案庫,例如 Ubuntu 。 -
不要建立 “
/etc/apt/preferences” 。 -
不了解會造成的全部影響,就不要通過配置文件改變軟件包管理工具的默認(rèn)行為。
-
不要使用 “
dpkg -i random_package” 安裝任何軟件包。 -
絕不使用 “
dpkg --force-all -i random_package” 安裝任何軟件包。 -
不要刪除或修改 “
/var/lib/dpkg/” 中的文件。 -
不要讓從源碼直接安裝的程序覆蓋系統(tǒng)文件。
-
如果需要的話,將它們安裝到 “
/usr/local” 或 “/opt” 中。
-
上述對 Debian 軟件包管理系統(tǒng)做的行為所導(dǎo)致的不兼容影響可能會使你的系統(tǒng)無法使用。
負(fù)責(zé)有關(guān)鍵任務(wù)的服務(wù)器的嚴(yán)謹(jǐn)?shù)?Debian 系統(tǒng)系統(tǒng)管理員,應(yīng)該使用額外的預(yù)防措施。
-
沒有在安全的條件下使用你特定的配置進(jìn)行徹底地測試,就不要從 Debian 安裝任何軟件包(包含安全更新)。
-
你作為系統(tǒng)管理員要對你的系統(tǒng)負(fù)責(zé)到底。
-
Debian 系統(tǒng)長久的穩(wěn)定史并無法保證什么。
-
2.1.3. 持續(xù)升級的生活
| 小心 | |
|---|---|
|
對于你的生產(chǎn)服務(wù)器,建議使用帶有安全更新的 |
盡管我在上面進(jìn)行了警告,我知道本文檔的許多讀者希望可以運(yùn)行更新的 testing 或 unstable 版。
菩薩使用下面的內(nèi)容拯救一個人,使他從掙扎于持續(xù)升級地獄的因果報應(yīng)中脫困,并讓他達(dá)到 Debian 的極樂世界。
這個列表面向 自己管理的 桌面環(huán)境。
-
使用
testing版,實(shí)際上,它是自動滾動發(fā)布的,由 Debian 檔案庫的 QA 質(zhì)量架構(gòu)來管理,比如:Debian 持續(xù)集成、只上傳源代碼實(shí)踐 和 庫轉(zhuǎn)換跟蹤。在testing版中的軟件包被更新得足夠頻繁來提供全部最新的特性。 -
在"
/etc/apt/sources.list"里面設(shè)置testing版相應(yīng)的代碼名(目前是 “bookworm”)。 -
大概在主版本發(fā)布一個月后,僅僅在你自己評估了形勢后,才手動更新"
/etc/apt/sources.list"里的這個代碼名到新的版本號。對于這個更新,Debian 用戶和開發(fā)者郵件列表也是好的信息來源。
使用 unstable 版是不推薦的。unstable 版對開發(fā)者 調(diào)試軟件包合適,但對普通的桌面使用而言,會有使你暴露在不必要的風(fēng)險中的傾向。 盡管 Debian 系統(tǒng)的 unstable 版在大多數(shù)時候看起來都非常穩(wěn)定,但會有一些軟件包問題,并且它們中的一部分是不容易解決的。
這里有一些基本預(yù)防措施意見,確保簡單快速地從 Debian 軟件包的 bug 中恢復(fù)。
-
通過將 Debian 系統(tǒng)的
stable版安裝到另一個分區(qū),可以使系統(tǒng)能夠進(jìn)行雙啟動 -
制作安裝 CD 便于用于 救援啟動
-
考慮安裝
apt-listbugs,這可以在升級之前檢查 Debian Bug 跟蹤系統(tǒng)(BTS) 的信息 -
對軟件包系統(tǒng)的基礎(chǔ)設(shè)施有足夠的了解來解決問題
-
在遇到問題的情況下,安裝上游相應(yīng)的沙盒化二進(jìn)制軟件包(參見 第 7.6 節(jié) “沙盒”)
-
建立一個 chroot 或類似的環(huán)境來提前運(yùn)行最新的系統(tǒng)(參見第 9.11 節(jié) “虛擬化系統(tǒng)”)
| 小心 | |
|---|---|
|
如果你無法做到這些預(yù)防措施中的任何一個,那你可能還沒做好使用 |
2.1.4. Debian 檔案庫基礎(chǔ)
讓我們從系統(tǒng)用戶的角度來看看 Debian 檔案庫。
| 提示 | |
|---|---|
|
Debian 檔案庫官方政策的定義參見 Debian 政策文檔,第2章 —— Debian 檔案庫。 |
對于典型的 HTTP 訪問,檔案庫在 “/etc/apt/sources.list” 文件中像下面那樣指定,例如,現(xiàn)在 stable = bullseye 系統(tǒng)。
deb http://deb.debian.org/debian/ bullseye main contrib non-free deb-src http://deb.debian.org/debian/ bullseye main contrib non-free deb http://security.debian.org/debian-security bullseye-security main contrib deb-src http://security.debian.org/debian-security bullseye-security main contrib
這里,我傾向于使用代號 “bullseye” 來代替套件名 “stable” ,以避免下一個 stable 版本發(fā)布時出現(xiàn)意外。
“/etc/apt/sources.list” 的含義在 sources.list(5) 中進(jìn)行了描述,下面是一些要點(diǎn)。
-
“
deb” 的那行定義了二進(jìn)制軟件包。 -
“
deb-src” 的那行定義了源代碼軟件包。 -
第一個參數(shù)是 Debian 檔案庫的根 URL 。
-
第二個參數(shù)是發(fā)行版名稱:可以使用套件名或代號。
-
第三個和之后的參數(shù)是 Debian 檔案庫的有效檔案庫范圍名稱。
如果只是用 aptitude(它不訪問源代碼相關(guān)的元數(shù)據(jù)),“deb-src”那行可以安全地刪掉(或者在文件開頭添加 “#” 來將它注釋掉)。這可以加速檔案庫元數(shù)據(jù)的更新。URL 可以是“http://” 、“ftp://” 、 “file://” ……
| 提示 | |
|---|---|
|
如果在上述的例子中,使用了 “ |
下面是配置文件所使用的 Debian 檔案庫站點(diǎn)的 URL 和套件名或代號的列表。
表 2.2. Debian 檔案庫站點(diǎn)列表
| 檔案庫 URL | 套件名(代號) | 目的 |
|---|---|---|
| http://deb.debian.org/debian/ | stable (bullseye) |
stable (bullseye) release 版本 |
| http://deb.debian.org/debian/ | testing (bookworm) |
testing (bookworm) release 版本 |
| http://deb.debian.org/debian/ | unstable (sid) |
unstable (sid) release 版本 |
| http://deb.debian.org/debian/ | experimental |
experimental pre-release 版本(可選,只適用于開發(fā)者) |
| http://deb.debian.org/debian/ | stable-proposed-updates (bullseye-proposed-updates) |
用于下一個穩(wěn)定版 (bullseye)點(diǎn)版本(小版本)發(fā)布的更新(可選) |
| http://deb.debian.org/debian/ | stable-updates(bullseye-updates) |
用于穩(wěn)定版( bullseye )的垃圾郵件過濾器、IM客戶端等的兼容更新 |
| http://deb.debian.org/debian/ | stable-backports (bullseye-backports) |
用于穩(wěn)定版(bullseye ) 的較新的向后移植的軟件包(可選) |
| http://security.debian.org/debian-security/ | stable-security (bullseye-security) |
用于穩(wěn)定版(bullseye) 發(fā)布的安全更新(重要) |
| http://security.debian.org/debian-security/ | testing-security (bookworm-security) |
用于測試版發(fā)布的安全更新(這個沒有安全團(tuán)隊(duì)的積極支持) |
| 小心 | |
|---|---|
|
只有帶有安全更新的純凈的 |
| 小心 | |
|---|---|
|
在 " |
| 提示 | |
|---|---|
|
對于使用 |
| 注意 | |
|---|---|
|
Debian 安全團(tuán)體將會修正 |
表 2.3. Debian 歸檔區(qū)域(area)列表
| 區(qū)域 | 軟件包數(shù)量 | 軟件包組件標(biāo)準(zhǔn) |
|---|---|---|
main |
65132 | 遵從 Debian 自由軟件指導(dǎo)方針(DFSG),并且不依賴于 non-free |
contrib |
372 | 遵從 Debian 自由軟件指導(dǎo)方針(DFSG),但依賴于 non-free |
non-free |
810 | 不遵從 Debian 自由軟件指導(dǎo)方針(DFSG) |
上述軟件包的數(shù)量是 amd64 架構(gòu)的。main 區(qū)域提供 Debian 系統(tǒng)(參見 第 2.1.5 節(jié) “Debian 是100% 的自由軟件”)。
通過把你的瀏覽器指向檔案庫 URL,這些 URL 在 dists 或 pool 之后是各不相同的,Debian 檔案庫能夠被有規(guī)劃的組織。
發(fā)行版可以用套件或代號來指定。發(fā)行版在許多文檔中也被當(dāng)做是套件的同義詞。套件和代號的關(guān)系總結(jié)如下。
表 2.4. 套件和代號的關(guān)系
| 時間 | suite = stable |
suite = testing |
suite = unstable |
|---|---|---|---|
在 bullseye 發(fā)布后 |
codename = bullseye |
codename = bookworm |
codename = sid |
在 bookworm 發(fā)布后 |
codename = bookworm |
codename = trixie |
codename = sid |
代號的歷史參見 Debian FAQ: 6.2.1 以前用過哪些代號名?
在較嚴(yán)格的 Debian 檔案術(shù)語,“部分 section”這一詞特指按應(yīng)用領(lǐng)域來分類的軟件包類別。(但是,主要部分 ("main section") 這一詞有時會用來描述 Debian 檔案區(qū)中,名為”main 主要"的區(qū)域 。)
Debian 開發(fā)者(DD)每次上傳軟件包到 unstable 檔案庫(通過 incoming 處理),都必須確保上傳的軟件包與最新的 unstable 檔案庫中的最新軟件包兼容。
如果 DD 故意打破重要的庫升級等的這種兼容性,這通常會在 Debian 開發(fā)者郵件列表等進(jìn)行公告。
在 Debian 檔案庫維護(hù)腳本將軟件包從 unstable 檔案庫移動到 testing 檔案庫前,檔案庫維護(hù)腳本不僅檢查時間(約10天)和軟件包的 RC bug 報告的狀態(tài),還嘗試確保它們可以和最新的 testing 檔案庫中的軟件兼容。這個過程使得testing 檔案庫非常正確可用。
通過由發(fā)布團(tuán)隊(duì)領(lǐng)導(dǎo)的逐步凍結(jié)檔案庫的過程,并進(jìn)行一些手動干預(yù),使 testing 檔案庫完全一致,無缺陷。然后,將舊的 testing 檔案庫的代碼名稱分配給新的 stable 檔案庫,并為新的 testing 檔案庫創(chuàng)建新的代碼名稱。新的 testing 檔案庫最初的內(nèi)容和新發(fā)布的 stable 檔案庫的內(nèi)容完全相同。
unstable 和 testing 檔案庫都可能會遭受由以下幾個因素導(dǎo)致的臨時的小故障。
-
損壞的軟件包被上傳到檔案庫(多見于
unstable) -
延遲接受新的軟件包到檔案庫(多見于
unstable) -
檔案庫時間同步問題(
testing和unstable) -
手動干預(yù)檔案庫,例如移除軟件包(多見于
testing)等。
因此,如果你決定使用這些檔案庫,你應(yīng)該能夠修復(fù)或忍受這些類型的小故障。
| 小心 | |
|---|---|
|
在新的 |
| 提示 | |
|---|---|
|
跟蹤 |
檔案庫的定義參見 Debian 政策文檔。
-
部分
-
"優(yōu)先級"
-
"基本系統(tǒng)"
-
"極重要的軟件包"
2.1.5. Debian 是100% 的自由軟件
Debian 是100%的自由軟件,因?yàn)椋?/p>
-
Debian 默認(rèn)只安裝自由軟件,這尊重了用戶的自由。
-
Debian 在
main中只提供自由軟件。 -
Debian 建議只運(yùn)行來自
main的自由軟件。 -
在
main中的軟件包沒有依賴于在non-free或contrib中的軟件包。
有人想知道下列的兩個事實(shí)是否互相矛盾。
-
“ Debian 將始終是 100% 的自由軟件”。( Debian 社群契約中的第一條)
-
Debian 服務(wù)器上有一些
non-free和contrib軟件包。
因?yàn)橄铝性?,這并不矛盾。
-
Debian 系統(tǒng)具有100%的自由,并且它的軟件包位于 Debian 服務(wù)器的
main區(qū)域。 -
Debian 系統(tǒng)之外的軟件包位于 Debian 服務(wù)器的
non-free和contrib區(qū)域。
在 Debian 社群契約的第4條和第5條對這進(jìn)行了明確的解釋:
-
我們將優(yōu)先考慮我們的用戶及自由軟件
-
我們由我們的用戶及自由軟件社群的需要所導(dǎo)向。我們將優(yōu)先考慮他們的利益。我們將在多種計算環(huán)境中支持我們的用戶的操作需要。我們不反對在 Debian 系統(tǒng)上使用非自由軟件,我們也不會嘗試向創(chuàng)建和使用這部分軟件的用戶索取費(fèi)用。我們允許他人,在沒有我們的資金的參與下,制造包括 Debian 以及商業(yè)軟件的增值套件。為了達(dá)成這些目標(biāo),我們將提供集成的、高質(zhì)量的、100%自由的軟件,而不附加任何可能阻止在這些方面使用的法律限制。
-
-
哪些作品不符合我們的自由軟件規(guī)范
-
我們明了,某些我們的用戶需要使用不符合 Debian 自由軟件指導(dǎo)方針的作品。 我們?yōu)檫@些作品,在我們的檔案庫中留出了 “
contrib" 以及 “non-free" 目錄。在這些目錄下的軟件包,并不屬于 Debian 系統(tǒng) 盡管它們已被配置成可以在 Debian 下使用。我們鼓勵光盤制造商閱讀這些目錄下的軟件的許可證,以判斷他們是否可以在光盤中發(fā)行這些軟件 。所以,盡管非自由軟件并非 Debian 系統(tǒng)的一部分,我們?nèi)灾С炙鼈兊氖褂?,并且我們?yōu)榉亲杂绍浖峁┝斯操Y源 (諸如我們的缺陷跟蹤系統(tǒng)以及郵件列表)。
-
用戶應(yīng)該了解使用 non-free 和 contrib 中的軟件包所需要冒的風(fēng)險:
-
使用類似的軟件包會失去自由
-
失去 Debian 對軟件包的支持(這些軟件包無法訪問源代碼,Debian 不能進(jìn)行完全的支持。)
-
污染你100%自由的 Debian 系統(tǒng)
Debian 自由軟件指導(dǎo)方針為 Debian 設(shè)立了自由軟件標(biāo)準(zhǔn)。Debian 對軟件包中的軟件做了最廣泛的解釋,包含文檔、固件、圖標(biāo)和圖形數(shù)據(jù)。這使得 Debian 的自由軟件標(biāo)準(zhǔn)非常嚴(yán)格。
典型的 non-free 和 contrib 軟件包包含了下列類型的自由分發(fā)的軟件包:
-
在GNU Free Documentation License下的文檔包 ,包含不變的部分 ,比如GCC 和 Make的。 (大多數(shù)都可以在
non-free/doc找到 .) -
包含沒有源代碼的二進(jìn)制數(shù)據(jù)的固件軟件包,例如在 第 9.10.5 節(jié) “硬件驅(qū)動和固件” 中列出的 non-free 軟件包。(多見于
non-free/kernel部分。) -
游戲和字體軟件包,對商業(yè)使用和/或內(nèi)容修改進(jìn)行了限制。
請注意,non-free 和 contrib 軟件包的數(shù)量少于 main 軟件包的2%。允許訪問 non-free 和 contrib 并不會模糊軟件包的來源。使用 aptitude(8) 的全屏交互式界面可以提供完全的可見性和完全的控制,可以讓你決定安裝來自某個部分的軟件包,來使你的系統(tǒng)保持自由。
2.1.6. 軟件包依賴關(guān)系
Debian 系統(tǒng)通過其控制文件字段中的版本化二進(jìn)制依賴聲明機(jī)制來提供一致的二進(jìn)制軟件包集合。下面有一些它們的簡單定義。
-
“依賴”
-
絕對的依賴,所有在這里列出的軟件包都必須同時或提前安裝。
-
-
"預(yù)依賴"
-
類似于 Depends,但列出的軟件包必須提前完成安裝。
-
-
"推薦"
-
這里表示一個強(qiáng),但不是絕對的依賴關(guān)系 。大多數(shù)用戶不會想要這個包,除非在這里列出的所有包都已經(jīng)安裝。
-
-
"建議"
-
較弱的依賴。這個軟件包的大多數(shù)用戶可能會從安裝所列的軟件包中受益,但沒有它們也可以有適當(dāng)?shù)墓δ堋?
-
-
"增強(qiáng)"
-
這里表明一個像建議的弱依賴關(guān)系,不裝也沒關(guān)系。
-
-
"破損"
-
表明一個軟件包不兼容一些版本規(guī)范。一般的解決方法就是升級列出的所有軟件包。
-
-
"沖突"
-
這表明了絕對的不兼容。為了安裝這個軟件包必須移除所有列出的軟件包。
-
-
"替代"
-
這表明這個文件安裝的文件會替代所列的軟件包的文件。
-
-
"提供"
-
表明這個軟件包會提供所列的軟件包所有的文件和功能。
-
| 注意 | |
|---|---|
|
請注意,同時將 “Provides” 、“Conflicts” 和 “Replaces” 定義到一個虛擬的軟件包是一個明智的配置。這確保了在任何一個時間只能安裝一個提供該虛擬包的真正軟件包。 |
包含源代碼依賴關(guān)系的官方定義位于 the Policy Manual: Chapter 7 - Declaring relationships between packages。
2.1.7. 包管理的事件流
這是 APT 提供的軟件包管理的簡單事件流摘要。
-
更新(“
apt update”、“aptitude update” 或 “apt-get update”):-
從遠(yuǎn)程檔案庫獲取檔案庫元數(shù)據(jù)
-
重建和更新 APT 使用的本地元數(shù)據(jù)
-
-
升級(“
apt upgrade” 和 “apt full-upgrade”,或 “aptitude safe-upgrade” 和 “aptitude full-upgrade”,或 “apt-get upgrade” 和 “apt-get dist-upgrade”):-
選擇候選版本,它所安裝的軟件包通常都是最新的可用版本(例外參見 第 2.7.3 節(jié) “調(diào)整候選版本” )
-
解決軟件包依賴關(guān)系
-
如果候選版本與已安裝的版本不同,會從遠(yuǎn)程檔案庫獲取所選擇的二進(jìn)制軟件包
-
解包所獲取的二進(jìn)制軟件包
-
運(yùn)行 preinst 腳本
-
安裝二進(jìn)制文件
-
運(yùn)行 postinst 腳本
-
-
安裝(“
apt install ...”、“aptitude install ..." 或者 "apt-get install …” ):-
選擇命令行中列出的包
-
解決軟件包依賴關(guān)系
-
從遠(yuǎn)程服務(wù)器獲取已選二進(jìn)制包
-
解包所獲取的二進(jìn)制軟件包
-
運(yùn)行 preinst 腳本
-
安裝二進(jìn)制文件
-
運(yùn)行 postinst 腳本
-
-
移除 ("
apt remove …", “aptitude remove …” 或 “apt-get remove …”):-
選擇命令行中列出的包
-
解決軟件包依賴關(guān)系
-
運(yùn)行 prerm 腳本
-
移除已安裝的文件,除了配置文件
-
運(yùn)行 postrm 腳本
-
-
清除 ("
apt purge",“aptitude purge …” 或 “apt-get purge …”):-
選擇命令行中列出的包
-
解決軟件包依賴關(guān)系
-
運(yùn)行 prerm 腳本
-
移除已安裝的文件,包含配置文件
-
運(yùn)行 postrm 腳本
-
這里,為了大局,我特意省略了技術(shù)細(xì)節(jié)。
2.1.8. 對包管理問題的第一個回應(yīng)
你應(yīng)該閱讀優(yōu)良的官方文檔。第一個閱讀的文檔是 Debian 特定的 “/usr/share/doc/package_name/README.Debian”。同時也應(yīng)該查詢 “/usr/share/doc/package_name/” 中的其它文檔。如果你設(shè)置 shell 為第 1.4.2 節(jié) “定制 bash”,輸入下列命令。
$ cd package_name $ pager README.Debian $ mc
你可能需要安裝以 “-doc” 后綴命名的對應(yīng)文檔軟件包來獲取詳細(xì)的信息。
如果你在使用一個特定的軟件包時出現(xiàn)了問題,一定要首先檢查 Debian bug 跟蹤系統(tǒng)(BTS) 網(wǎng)站。
表 2.5. 解決特定軟件包問題的主要網(wǎng)站
| 網(wǎng)站 | 命令 |
|---|---|
| Debian bug 跟蹤系統(tǒng)(BTS) 的主頁 | sensible-browser "http://bugs.debian.org/" |
| 軟件包名稱已知的 bug 報告 | sensible-browser "http://bugs.debian.org/package_name" |
| bug 編號已知的 bug 報告 | sensible-browser "http://bugs.debian.org/bug_number" |
使用 Google 搜索,在關(guān)鍵字中包含 “site:debian.org”,“site:wiki.debian.org”,“site:lists.debian.org” 等等。
當(dāng)你要發(fā)送一份 bug 報告時,請使用 reportbug(1) 命令。
2.2. 基礎(chǔ)軟件包管理操作
在 Debian 系統(tǒng)中有許多基于 APT 的軟件包管理工具可以在 Debian 系統(tǒng)上進(jìn)行基于倉庫的軟件包管理操作。在這里,我們將介紹 3 種基本的軟件包管理工具:apt,apt-get / apt-cache 和 aptitude 。
對于涉及軟件包安裝或更新軟件包元數(shù)據(jù)的軟件包管理操作,你必須有 root 權(quán)限。
2.2.1. apt vs. apt-get / apt-cache vs. aptitude
盡管 aptitude 是作者主要使用的一個非常好的可互動工具,但你應(yīng)該知道下列警示:
-
不建議在新版本發(fā)布后在
stableDebian 系統(tǒng)上使用aptitude命令來進(jìn)行跨版本的系統(tǒng)升級。-
建議使用"
apt full-upgrade"或“apt-get dist-upgrade” 來進(jìn)行這個操作。參見 Bug #411280。
-
-
aptitude命令有時候會為了testing或unstableDebian 系統(tǒng)升級清除大量軟件包。-
這個情況嚇壞了許多的系統(tǒng)管理員。請不要驚慌。
-
這似乎大多數(shù)是由元軟件包的依賴或推薦的軟件包版本偏差造成的,例如
gnome-core。 -
要解決這個問題,可以在
aptitude命令菜單中選擇 “取消待執(zhí)行的動作” ,退出aptitude,并使用 “apt full-upgrade”。
-
apt-get 和 apt-cache 是最基礎(chǔ) 的基于 APT 的軟件包管理工具。
-
apt-get和apt-cache只提供命令行用戶界面。 -
apt-get是進(jìn)行跨版本的主系統(tǒng)升級等操作的最合適工具。 -
apt-get提供了一個強(qiáng)大的軟件包依賴解析器。 -
apt-get對硬件資源的要求不高。它消耗更少的內(nèi)存并且運(yùn)行速度更快。 -
apt-cache提供了一個 標(biāo)準(zhǔn)的正則表達(dá)式來搜索軟件包名稱和描述。 -
apt-get和apt-cache可以使用/etc/apt/preferences來管理軟件包的多個版本,但這非常繁瑣。
apt 命令是一個用于軟件包管理的高級命令行界面。它基本上是 apt-get、apt-cache 和類似命令的一個封裝,被設(shè)計為針對終端用戶交互的界面,它默認(rèn)啟用了某些適合交互式使用的選項(xiàng)。
-
apt工具在用戶使用apt install安裝軟件包時提供了一個友好的進(jìn)度條。 -
在成功安裝下載的軟件包后,
apt將默認(rèn)刪除緩存的.deb軟件包。
| 提示 | |
|---|---|
|
建議用戶使用新的 |
aptitude 命令是最通用的基于 APT 的軟件包管理工具。
-
aptitude提供了一個全屏的交互式文本用戶界面。 -
aptitude同樣也提供了一個命令用戶界面。 -
aptitude是用于日常軟件包管理(例如檢查已安裝的軟件包和搜索可用的軟件包)的最合適工具。 -
aptitude對硬件資源的要求更高。它消耗更多的內(nèi)存并且運(yùn)行速度更慢。 -
aptitude提供一個增強(qiáng)的正則表達(dá)式來搜索所有的軟件包元數(shù)據(jù)。 -
aptitude可以管理軟件包的多個版本,并且不使用/etc/apt/preferences,這會十分直觀。
2.2.2. 命令行中的基礎(chǔ)軟件包管理操作
下面是使用 apt(8), aptitude(8) 和 apt-get(8) / apt-cache(8) 的命令行基本軟件包管理操作。
表 2.6. 使用 apt(8), aptitude(8) 和 apt-get(8) / apt-cache(8) 的命令行基本軟件包管理操作
apt 語法 |
aptitude 語法 |
apt-get / apt-cache 語法 |
說明 |
|---|---|---|---|
apt update |
aptitude update |
apt-get update |
更新軟件包檔案庫元數(shù)據(jù) |
apt install foo |
aptitude install foo |
apt-get install foo |
安裝 “foo” 軟件包的候選版本以及它的依賴 |
apt upgrade |
aptitude safe-upgrade |
apt-get upgrade |
安裝已安裝的軟件包的候選版本并且不移除任何其它的軟件包 |
apt full-upgrade |
aptitude full-upgrade |
apt-get dist-upgrade |
安裝已安裝的軟件包的候選版本,并且需要的話會移除其它的軟件包 |
apt remove foo |
aptitude remove foo |
apt-get remove foo |
移除 “foo” 軟件包,但留下配置文件 |
apt autoremove |
N/A | apt-get autoremove |
移除不再需要的自動安裝的軟件包 |
apt purge foo |
aptitude purge foo |
apt-get purge foo |
清除 “foo” 軟件包的配置文件 |
apt clean |
aptitude clean |
apt-get clean |
完全清除本地倉庫的軟件包檢索文件 |
apt autoclean |
aptitude autoclean |
apt-get autoclean |
清除本地倉庫中過時軟件包的軟件包檢索文件 |
apt show foo |
aptitude show foo |
apt-cache show foo |
顯示 “foo” 軟件包的詳細(xì)信息 |
apt search 正則表達(dá)式 |
aptitude search regex |
apt-cache search regex |
搜索匹配 regex 的軟件包 |
| N/A | aptitude why regex |
N/A | 解釋匹配 regex 的軟件包必須被安裝的原因 |
| N/A | aptitude why-not regex |
N/A | 解釋匹配 regex 的軟件包不必安裝的原因 |
| N/A | aptitude search '~i!~M' |
apt-mark showmanual |
列出手動安裝的軟件包 |
apt / apt-get 和 aptitude 能夠混用,沒有大問題。
“aptitude why regex” 可以通過 “aptitude -v why regex” 列出更多的信息。類似的信息可以通過"apt rdepends package" 或 “apt-cache rdepends package” 獲取。
當(dāng) aptitude 命令在命令行模式下啟動后遇到了一些問題(例如軟件包沖突),你可以在之后的提示中按下 “e” 鍵切換到全屏的交互模式。
| 注意 | |
|---|---|
|
雖然 |
你可以在 “aptitude” 后面使用的命令選項(xiàng)。
表 2.7. aptitude(8) 中重要的命令選項(xiàng)
| 命令選項(xiàng) | 說明 |
|---|---|
-s |
模擬命令的結(jié)果 |
-d |
僅下載,不進(jìn)行安裝/更新 |
-D |
在自動安裝和刪除前,顯示簡要的說明 |
更多內(nèi)容參見 aptitude(8) 和位于 “/usr/share/doc/aptitude/README” 的 “aptitude 用戶手冊”。
2.2.3. aptitude 的交互式使用
要使用交互式的軟件包管理,你可以像下面那樣以交互模式啟動 aptitude 。
$ sudo aptitude -u Password:
這將更新檔案庫信息的本地副本,并以菜單的形式全屏顯示軟件包列表。 aptitude 將它的配置放在 “~/.aptitude/config”。
| 提示 | |
|---|---|
|
如果你想用 root 的配置而非使用者的,可以在上面的例子中使用 “ |
| 提示 | |
|---|---|
|
當(dāng) |
2.2.4. aptitude 的按鍵綁定
在全屏模式下瀏覽軟件包狀態(tài)和設(shè)置動作的按鍵如下。
表 2.8. aptitude 的按鍵綁定
| 快捷鍵 | 鍵綁定功能 |
|---|---|
F10 或 Ctrl-t |
菜單 |
? |
顯示按鍵幫助(更加完整的清單) |
F10 → 幫助 → 用戶手冊 |
顯示用戶手冊 |
u |
更新軟件包檔案庫信息 |
+ |
標(biāo)記該軟件包以便升級或安裝 |
- |
標(biāo)記該軟件包以便移除(保留配置文件) |
_ |
標(biāo)記該軟件包以便清除(移除配置文件) |
= |
將軟件包設(shè)為保持狀態(tài) |
U |
標(biāo)記所有可升級包(動作如同 full-upgrade) |
g |
開始 下載 并 安裝 所選擇包 |
q |
退出該界面并保存變更 |
x |
退出該界面并清除變更 |
Enter |
查看軟件包的信息 |
C |
查看軟件包的變更記錄 |
l |
變更軟件包的顯示限制 |
/ |
搜尋匹配的第一個軟件包 |
\ |
重復(fù)上一個搜索 |
可以通過命令行指定文件名稱,也可以通過按 “l” 或 “/” 之后在菜單提示下輸入下列所述的 aptitude 正則表達(dá)式。aptitude 正則表達(dá)式可以使用 “~n” 開頭后接軟件包名稱的字符串來精確匹配軟件包名稱。
| 提示 | |
|---|---|
|
你需要在可視化界面中按下 “ |
2.2.5. aptitude 軟件包視圖
aptitude(8) 全屏交互模式下,軟件包列表里的軟件包會像下面的例子那樣顯示。
idA libsmbclient -2220kB 3.0.25a-1 3.0.25a-2
該行的從左到右的含義如下。
-
“狀態(tài)”標(biāo)簽 (第一個字母)
-
“動作”標(biāo)簽(第二個字母)
-
“自動”標(biāo)簽(第三個字母)
-
軟件包名稱
-
該“動作”對磁盤空間的變化
-
軟件包當(dāng)前版本
-
軟件包可用版本
| 提示 | |
|---|---|
|
您可以在幫助菜單中找到完整的標(biāo)簽列表,按“ |
可用版本 的選擇是依據(jù)當(dāng)前的本地首選項(xiàng)(參見 apt_preferences(5) 和 第 2.7.3 節(jié) “調(diào)整候選版本”)。
軟件包視圖的幾種類型都可以在“ 視圖 ”菜單下找到。
表 2.9. aptitude 視圖
| 視圖 | 視圖描述 |
|---|


咨詢
建站咨詢
