使用 apt 進行 Linux 包管理
包管理器 可幫助你處理 Linux 系統的計算機上軟體的更新、卸載、故障排除等問題。Seth Kenlon 寫了 使用 dnf 進行 Linux 包管理 一文,介紹了如何使用 dnf
這款命令行包管理工具,在 RHEL、CentOS、Fedora、Mageia、OpenMandriva 等 Linux 發行版中安裝軟體。
Debian 和基於 Debian 的發行版(例如 MX Linux、Deepin、Ubuntu)以及基於 Ubuntu 的發行版(例如 Linux Mint 和 Pop!_OS)都有 apt
,這是一個「相似但不同」的工具。在本文中,我將按照 Seth 的示例(但使用 apt
)向你展示如何使用它。
在一開始,我想先提一下四個跟 apt
相關的軟體安裝工具:
- Synaptic 是為
apt
服務的一個基於 GTK+ 的圖形用戶界面(GUI)的前端工具。 - Aptitude 是為
apt
服務的一個基於 Ncurses 的全屏命令行前端工具。 apt
的前身有apt-get
、apt-cache
等工具。- Dpkg 是在
apt
包管理器背後處理繁雜事務的」幕後工作者「。
還有其他的包管理系統,例如 Flatpak 和 Snap,你可能會在 Debian 和基於 Debian 的系統上遇到它們,但我不打算在這裡討論。還有一些應用程序「商店」,例如 GNOME 「軟體」,與 apt
和其他打包技術重疊;我也不打算在這裡討論它們。最後,還有其他 Linux 發行版,例如 Arch 和 Gentoo 既不使用 dnf
也不使用 apt
,我也不打算在這裡討論它們!
上面我講了這麼多我不想提及的內容,你可能懷疑 apt
到底還能處理多少軟體。這麼說吧,在我的 Ubuntu 20.04 上,apt
可以讓我使用 69,371 個軟體包,從 0ad
(一款古代戰爭題材的即時戰略遊戲)到 zzuf
(一個透明的應用程序模糊測試工具),一點也不差。
使用 apt 搜索軟體
使用 apt
軟體包管理器的第一步是找到感興趣的軟體包。Seth 的 dnf
文章以 Cockpit 伺服器管理應用程序為例。用 apt
我會輸入如下命令:
$ 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
...
$
上面的第二個包就是你要的那個(以 cockpit/hirsute
開頭的那一行)。如果你決定要安裝它,輸入:
$ sudo apt install cockpit
apt
將負責安裝 Cockpit 以及使其工作所需的所有部件或 依賴。有時我們不太確定這是我們所需要的。了解更多的信息可能有助於你決定是否真的要安裝此應用程序。
包元數據
要了解有關軟體包的更多信息,使用 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
欄位,它會告訴你更多關於應用程序的信息。Depends
欄位說明還必須安裝什麼,而 Recommends
則顯示建議安裝的其他(如果有的話)合作組件。Homepage
欄位會提供一個網址,通過它你可以了解更多。
哪個包提供的這個文件?
有時你並不知道包名,但你知道包里一定包含著的某個文件。Seth 以 qmake-qt5
程序作為示例。使用 apt search
找不到它:
$ apt search qmake-qt5
Sorting... Done
Full Text Search... Done
$
但是,另一個有關聯的命令 apt-file
可以用來探索包內部:
$ apt-file search qmake-qt5
qt5-qmake-bin: /usr/share/man/man1/qmake-qt5.1.gz
$
這時會顯示一個 qmake-qt5
的手冊頁。它是一個名為 qt5-qmake-bin
的包的一部分。注意,此包名稱顛倒了字元串 qmake
和 qt5
的順序。
包里包含哪些文件?
方便的 apt-file
命令會列出給定的包中包含哪些文件。例如:
$ 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
命令提供的信息不同,後者列出了包的依賴(其他必須安裝的包)。
移除一個應用程序
你還可以使用 apt
移除軟體包。例如,要移除apt-file
應用程序:
$ sudo apt purge apt-file
注意必須由超級用戶運行 apt
才能安裝或移除應用程序。
移除一個包並不會自動移除 apt
在此過程中安裝的所有依賴項。不過,一點點的工作就很容易去除這些殘留:
$ sudo apt autoremove
認識一下 apt
正如 Seth 所寫的,「你對包管理器的工作方式了解得越多,在需要安裝和查詢應用程序時就會越容易。」
即便你不是 apt
的重度使用者,當你需要在命令行中安裝或刪除軟體包時(例如,在一台遠程伺服器上或遵循某些熱心腸發布的操作指南時),掌握一些 apt
的知識也會很有用。在某些軟體創作者僅提供了一個裸 .pkg
文件的情況下,可能還需要了解一些關於 dpkg 的知識(如上所述)。
我發現 Synaptic 包管理器在我的桌面上是一個非常有用的工具,但出於各種目的,我也在少數維護的伺服器上使用著 apt
。
下載我們的 apt 速查表 習慣該命令並嘗試一些新技巧。一旦你這樣做了,你可能會發現很難再使用其他任何東西。
via: https://opensource.com/article/21/6/apt-linux
作者:Chris Hermansen 選題:lujun9972 譯者:hanszhao80 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive