使用 apt 进行 Linux 软件包管理

了解如何在基于 Debian 的 Linux 发行版上使用 apt 命令安装软件包,然后下载我们的速查表,以便随时掌握正确的命令。
68 位读者喜欢这篇文章。
bash logo on green background

Opensource.com

在 Linux 上,软件包管理器可以帮助您处理计算机上软件的更新、卸载、故障排除等。Seth Kenlon 撰写了关于 dnf 的文章dnf 是用于在 RHEL、CentOS、Fedora、Mageia、OpenMandriva 和其他 Linux 发行版中安装软件的命令行软件包管理工具。

Debian 和基于 Debian 的发行版(如 MX Linux、Deepin、Ubuntu)以及基于 Ubuntu 的发行版(如 Linux Mint 和 Pop!_OS)都具有 apt,这是一个“类似但不同”的工具。在本文中,我将效仿 Seth 的示例,但使用 apt,向您展示如何使用它。

在开始之前,我想提及四种与 apt 相关的软件安装工具

  • Synaptic 是一个基于 GTK+ 的图形用户界面 (GUI) 前端,用于 apt
  • Aptitude 是一个基于 Ncurses 的全屏命令行前端,用于 apt
  • 还有 apt-getapt-cache 和其他 apt 的前身。
  • Dpkgapt 用于执行繁重工作的“幕后”软件包管理器。

还有其他打包系统,例如 FlatpakSnap,您可能会在 Debian 和基于 Debian 的系统上遇到它们,但在此我不打算讨论它们。还有一些应用程序“商店”,例如 GNOME Software,它们与 apt 和其他打包技术重叠;同样,在此我不打算讨论它们。最后,还有其他 Linux 发行版,例如 ArchGentoo,它们既不使用 dnf 也不使用 apt,我也不打算在此讨论这些!

考虑到所有我在此不打算讨论的内容,您可能会想知道 apt 处理的软件子集有多小。好吧,在我的 Ubuntu 20.04 上,apt 让我可以访问 69,371 个软件包,从古代战争的 0ad 实时战略游戏到 zzuf 透明应用程序模糊器。一点也不差。

使用 apt 查找软件

使用软件包管理器(如 apt)的第一步是找到感兴趣的软件包。Seth 的 dnf 文章使用了 Cockpit 服务器管理应用程序作为示例,因此我也会这样做

$ 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 字段提供了一个 URL,以防您需要更多信息。

哪个软件包提供了文件?

有时您不知道软件包名称,但您知道一个文件必须在软件包中。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 的 man 手册,它是名为 qt5-qmake-bin 的软件包的一部分。请注意,此软件包名称颠倒了 qmakeqt5 部分。

软件包中包含哪些文件?

方便的 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 的常用用户,当您需要在命令行中工作以安装或删除软件包时(例如,在远程服务器上或在遵循一些热心人士发布的指南时),了解它也可能很有用。您可能还需要了解一些关于 Dpkg(如上所述)的知识;例如,一些软件创建者提供裸 .pkg 文件。

我发现 Synaptic 软件包管理器是我桌面上非常有用的工具,但我也在我为各种目的维护的少量服务器上使用 apt

下载我们的 apt 速查表,以习惯该命令并尝试一些新技巧。一旦你这样做了,你可能会发现很难再使用其他任何东西。

接下来阅读什么
Chris Hermansen portrait Temuco Chile
自从 1978 年毕业于不列颠哥伦比亚大学以来,我几乎一直与计算机为伴。自 2005 年以来,我一直是全职 Linux 用户,1986 年至 2005 年是全职 Solaris 和 SunOS 用户,在此之前是 UNIX System V 用户。

1 条评论

很棒的文章,Chris。我是一个长期的 'apt' 用户,但我从你的文章中学到了更多。

© . All rights reserved.