使用 apt 進(jìn)行 Linux 包管理
?包管理器? 可幫助你處理 Linux 系統(tǒng)的計(jì)算機(jī)上軟件的更新、卸載、故障排除等問(wèn)題。Seth Kenlon 寫(xiě)了 使用 dnf 進(jìn)行 Linux 包管理? 一文,介紹了如何使用 ??dnf?
? 這款命令行包管理工具,在 RHEL、CentOS、Fedora、Mageia、OpenMandriva 等 Linux 發(fā)行版中安裝軟件。
Debian 和基于 Debian 的發(fā)行版(例如 MX Linux、Deepin、Ubuntu)以及基于 Ubuntu 的發(fā)行版(例如 Linux Mint 和 Pop!_OS)都有 ??apt?
??,這是一個(gè)“相似但不同”的工具。在本文中,我將按照 Seth 的示例(但使用 ??apt?
?)向你展示如何使用它。
在一開(kāi)始,我想先提一下四個(gè)跟 ??apt?
? 相關(guān)的軟件安裝工具:
- ??Synaptic??? 是為 ?
?apt?
? 服務(wù)的一個(gè)基于 GTK+ 的圖形用戶界面(GUI)的前端工具。 - ??Aptitude??? 是為 ?
?apt?
? 服務(wù)的一個(gè)基于 Ncurses 的全屏命令行前端工具。 - ?
?apt?
?? 的前身有 ??apt-get?
??、??apt-cache?
? 等工具。 - ??Dpkg??? 是在 ?
?apt?
? 包管理器背后處理繁雜事務(wù)的”幕后工作者“。
還有其他的包管理系統(tǒng),例如 ??Flatpak??? 和 ??Snap???,你可能會(huì)在 Debian 和基于 Debian 的系統(tǒng)上遇到它們,但我不打算在這里討論。還有一些應(yīng)用程序“商店”,例如 ??GNOME “軟件”???,與 ??apt?
?? 和其他打包技術(shù)重疊;我也不打算在這里討論它們。最后,還有其他 Linux 發(fā)行版,例如 ??Arch??? 和 ??Gentoo??? 既不使用 ??dnf?
?? 也不使用 ??apt?
?,我也不打算在這里討論它們!
上面我講了這么多我不想提及的內(nèi)容,你可能懷疑 ??apt?
?? 到底還能處理多少軟件。這么說(shuō)吧,在我的 Ubuntu 20.04 上,??apt?
?? 可以讓我使用 69,371 個(gè)軟件包,從 ??0ad?
??(一款古代戰(zhàn)爭(zhēng)題材的即時(shí)戰(zhàn)略游戲)到 ??zzuf?
?(一個(gè)透明的應(yīng)用程序模糊測(cè)試工具),一點(diǎn)也不差。
使用 apt 搜索軟件
使用 ??apt?
?? 軟件包管理器的第一步是找到感興趣的軟件包。Seth 的 ??dnf?
?? 文章以 ??Cockpit??? 服務(wù)器管理應(yīng)用程序?yàn)槔?。?nbsp;??apt?
? 我會(huì)輸入如下命令:
$ apt search cockpit
Sorting... Done
Full Text Search... Done
389-ds/hirsute,hirsute 1.4.4.11-1 all
389 Directory Server suite - metapackage
cockpit/hirsute,hirsute 238-1 all
Web Console for Linux servers
...
$
上面的第二個(gè)包就是你要的那個(gè)(以 ??cockpit/hirsute?
? 開(kāi)頭的那一行)。如果你決定要安裝它,輸入:
$ sudo apt install cockpit
??apt?
? 將負(fù)責(zé)安裝 Cockpit 以及使其工作所需的所有部件或 依賴。有時(shí)我們不太確定這是我們所需要的。了解更多的信息可能有助于你決定是否真的要安裝此應(yīng)用程序。
包元數(shù)據(jù)
要了解有關(guān)軟件包的更多信息,使用 ??apt show?
? 命令:
$ apt show cockpit
Package: cockpit
Version: 238-1
Priority: optional
Section: universe/admin
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Utopia Maintenance Team <pkg-utopia-maintainers@lists.alioth.debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 88.1 kB
Depends: cockpit-bridge (>= 238-1), cockpit-ws (>= 238-1), cockpit-system (>= 238-1)
Recommends: cockpit-storaged (>= 238-1), cockpit-networkmanager (>= 238-1), cockpit-packagekit (>= 238-1)
Suggests: cockpit-doc (>= 238-1), cockpit-pcp (>= 238-1), cockpit-machines (>= 238-1), xdg-utils
Homepage: https://cockpit-project.org/
Download-Size: 21.3 kB
APT-Sources: http://ca.archive.ubuntu.com/ubuntu hirsute/universe amd64 Packages
Description: Web Console for Linux servers
The Cockpit Web Console enables users to administer GNU/Linux servers using a
web browser.
.
It offers network configuration, log inspection, diagnostic reports, SELinux
troubleshooting, interactive command-line sessions, and more.
$
特別要注意的是 ??Description?
?? 字段,它會(huì)告訴你更多關(guān)于應(yīng)用程序的信息。??Depends?
?? 字段說(shuō)明還必須安裝什么,而 ??Recommends?
?? 則顯示建議安裝的其他(如果有的話)合作組件。??Homepage?
? 字段會(huì)提供一個(gè)網(wǎng)址,通過(guò)它你可以了解更多。
哪個(gè)包提供的這個(gè)文件?
有時(shí)你并不知道包名,但你知道包里一定包含著的某個(gè)文件。Seth 以 ??qmake-qt5?
?? 程序作為示例。使用 ??apt search?
? 找不到它:
$ apt search qmake-qt5
Sorting... Done
Full Text Search... Done
$
但是,另一個(gè)有關(guān)聯(lián)的命令 ??apt-file?
? 可以用來(lái)探索包內(nèi)部:
$ apt-file search qmake-qt5
qt5-qmake-bin: /usr/share/man/man1/qmake-qt5.1.gz
$
這時(shí)會(huì)顯示一個(gè) ??qmake-qt5?
?? 的手冊(cè)頁(yè)。它是一個(gè)名為 ??qt5-qmake-bin?
?? 的包的一部分。注意,此包名稱顛倒了字符串 ??qmake?
?? 和 ??qt5?
? 的順序。
包里包含哪些文件?
方便的 ??apt-file?
? 命令會(huì)列出給定的包中包含哪些文件。例如:
$ apt-file list cockpit
cockpit: /usr/share/doc/cockpit/TODO.Debian
cockpit: /usr/share/doc/cockpit/changelog.Debian.gz
cockpit: /usr/share/doc/cockpit/copyright
cockpit: /usr/share/man/man1/cockpit.1.gz
cockpit: /usr/share/metainfo/cockpit.appdata.xml
cockpit: /usr/share/pixmaps/cockpit.png
$
注意,這與 ??apt show?
? 命令提供的信息不同,后者列出了包的依賴(其他必須安裝的包)。
移除一個(gè)應(yīng)用程序
你還可以使用 ??apt?
?? 移除軟件包。例如,要移除??apt-file?
? 應(yīng)用程序:
$ sudo apt purge apt-file
注意必須由超級(jí)用戶運(yùn)行 ??apt?
? 才能安裝或移除應(yīng)用程序。
移除一個(gè)包并不會(huì)自動(dòng)移除 ??apt?
? 在此過(guò)程中安裝的所有依賴項(xiàng)。不過(guò),一點(diǎn)點(diǎn)的工作就很容易去除這些殘留:
$ sudo apt autoremove
認(rèn)識(shí)一下 apt
正如 Seth 所寫(xiě)的,“你對(duì)包管理器的工作方式了解得越多,在需要安裝和查詢應(yīng)用程序時(shí)就會(huì)越容易?!?/p>
即便你不是 ??apt?
?? 的重度使用者,當(dāng)你需要在命令行中安裝或刪除軟件包時(shí)(例如,在一臺(tái)遠(yuǎn)程服務(wù)器上或遵循某些熱心腸發(fā)布的操作指南時(shí)),掌握一些 ??apt?
?? 的知識(shí)也會(huì)很有用。在某些軟件創(chuàng)作者僅提供了一個(gè)裸 ??.pkg?
? 文件的情況下,可能還需要了解一些關(guān)于 dpkg 的知識(shí)(如上所述)。
我發(fā)現(xiàn) Synaptic 包管理器在我的桌面上是一個(gè)非常有用的工具,但出于各種目的,我也在少數(shù)維護(hù)的服務(wù)器上使用著 ??apt?
?。
??下載我們的 apt 速查表?? 習(xí)慣該命令并嘗試一些新技巧。一旦你這樣做了,你可能會(huì)發(fā)現(xiàn)很難再使用其他任何東西。