使用 apt-cache 命令,你可以在本地 APT 緩存中搜索軟件包的詳細(xì)信息。在本教程中學(xué)習(xí)使用 apt-cache 命令。
apt-cache 命令是用來干什么的?
APT 包管理器工作在軟件包元數(shù)據(jù)的本地緩存上。元數(shù)據(jù)通常由包名、版本、描述、依賴關(guān)系、倉庫和開發(fā)者等信息組成。通過 apt-cache
命令,你可以查詢這個(gè)本地 APT 緩存并獲得相關(guān)信息。
你可以搜索一個(gè)包的可用性、它的版本號(hào)、它的依賴關(guān)系等等。我將通過實(shí)例告訴你如何使用 apt-cache
命令。
APT 緩存的位置是 /var/lib/apt/lists/
目錄。緩存哪些倉庫元數(shù)據(jù)取決于你的源列表中 /etc/apt/sources.list
文件中添加的倉庫,以及位于 /etc/apt/sources.list.d
目錄下的額外倉庫文件。
令人驚訝的是,apt-cache
并不能清除 APT 緩存。為此,你必須使用 apt-get clean 命令。
不用說,APT 打包系統(tǒng)是在 Debian 和基于 Debian 的 Linux 發(fā)行版上使用的,比如 Ubuntu、Linux Mint、Elementary OS 等。你不能在 Arch 或 Fedora 上使用它。
使用 apt-cache 命令
就像其他 Linux 命令一樣,apt-cache
也有一些可用的選項(xiàng),你可以隨時(shí)參考它的手冊(cè)頁來了解這些選項(xiàng)。
然而,你可能并不需要使用所有的選項(xiàng)。這就是為什么我在本教程中只向你展示 apt-cache
命令中最常見和最有用的例子。
始終更新
更新本地 APT 緩存以與遠(yuǎn)程倉庫同步是一個(gè)好主意。如何做到這一點(diǎn)呢?你可以使用命令:
sudo apt update
搜索軟件包
apt-cache
命令最常見的用途是查找軟件包。你可以使用一個(gè)正則表達(dá)式來搜索本地 APT 緩存中的包。
apt-cache search package_name
默認(rèn)情況下,它會(huì)在軟件包的名稱和描述中查找搜索關(guān)鍵詞。它按字母順序顯示匹配的軟件包及其簡(jiǎn)短的描述。
你也可以縮小搜索范圍,只在軟件包名稱中查找搜索詞。
apt-cache search --names-only package_name
如果你想知道所有匹配軟件包的完整細(xì)節(jié),你可以使用 --full
標(biāo)志。
獲取詳細(xì)的包裝信息
如果你知道確切的軟件包名稱(或者你已經(jīng)成功地通過搜索找到了它),你可以得到軟件包的詳細(xì)元數(shù)據(jù)信息。
apt-cache show package_name
你可以看到軟件包元數(shù)據(jù)中的所有細(xì)節(jié),比如名稱、版本、開發(fā)者、維護(hù)者、倉庫、長(zhǎng)短描述、軟件包大小甚至是校驗(yàn)和。
還有一個(gè)選項(xiàng) showpkg
可以顯示軟件包的名稱、版本、正向和反向依賴關(guān)系等信息。
apt-cache showpkg package_name
apt-cache ?的策略
這是 apt-cache
命令中很少使用的一個(gè)選項(xiàng)。policy
選項(xiàng)可以幫助你調(diào)試與 preference 文件相關(guān)的問題。
如果你指定了軟件包的名稱,它將顯示該軟件包是否已經(jīng)安裝,在哪個(gè)版本的倉庫中可用,以及它的優(yōu)先級(jí)。
默認(rèn)情況下,每個(gè)已安裝的軟件包版本的優(yōu)先級(jí)為 100,未安裝的軟件包的優(yōu)先級(jí)為 500。同一軟件包可能有多個(gè)不同優(yōu)先級(jí)的版本。APT 會(huì)安裝優(yōu)先級(jí)較高的版本,除非安裝的版本較新。
如果不理解這個(gè)部分,也沒關(guān)系。對(duì)于一個(gè)普通的 Linux 用戶來說,會(huì)極少糾結(jié)于這么深的軟件包管理知識(shí)。
檢查軟件包的依賴關(guān)系和反向依賴關(guān)系。
你可以在安裝之前(甚至在安裝之后)檢查一個(gè)包的依賴關(guān)系。它還會(huì)顯示所有可能滿足依賴關(guān)系的軟件包。
apt-cache depends package
你也可以通過 apt-cahce
檢查反向依賴關(guān)系來檢查哪些包是依賴于某個(gè)包的。
坦白說,看到 Ansible 這樣的 DevOps 工具對(duì) Cowsay 這樣有趣的 Linux 命令有依賴性,我也很驚訝。我想可能是因?yàn)樵?a class="ext" rel="external nofollow" target="_blank">安裝 Ansible之后,它會(huì)在節(jié)點(diǎn)上顯示一些信息。
檢查未滿足的依賴性
你可能會(huì)被 Ubuntu 中未滿足的依賴問題所困擾,其他 Linux 也有類似問題。apt-cache
命令提供了一個(gè)選項(xiàng)來檢查系統(tǒng)中各種可用軟件包的所有未滿足的依賴關(guān)系。
apt-cache unmet
結(jié)論
你可以用 apt-cache
命令列出所有可用的軟件包。輸出結(jié)果會(huì)很龐大,所以我建議將其與 wc 命令 結(jié)合起來,得到可用軟件包的總數(shù),就像這樣:
apt-cache pkgnames | wc -l
你是否注意到你不需要成為 root 用戶就可以使用 apt-cache
命令?
較新的 apt 命令也有一些與 apt-cache
命令相對(duì)應(yīng)的功能選項(xiàng)。由于 apt
比較新,所以在腳本中還是首選使用 apt-get
及其相關(guān)的 apt-cache
等命令。
希望你覺得本教程對(duì)你有幫助。