使用apt的Linux软件包管理

731 阅读3分钟

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

蝶变和基于蝶变的发行版,如MX Linux、Deepin、Ubuntu--以及基于Ubuntu的发行版,如Linux Mint和Pop!_OS--有apt ,一个 "类似但不同 "的工具。在这篇文章中,我将按照Seth的例子--但用apt--来告诉你如何使用它。

在我开始之前,我想提到四个与apt 有关的安装软件的工具。

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

还有其他的打包系统,比如FlatpakSnap,你可能会在Debian和基于Debian的系统上遇到,但我不打算在这里讨论它们。还有一些应用程序 "商店",如GNOME软件,与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 
Original-Maintainer: Utopia Maintenance Team 
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,以防你需要更多信息。

什么软件包提供了一个文件?

有时你不知道软件包的名称,但你知道一个文件必须在一个软件包中。赛斯提供了一个例子,即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 的包的一部分。请注意,这个软件包的名称与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 ,当你在安装或删除软件包时需要在命令行下工作时,了解它也是很有用的(例如,在远程服务器上或在遵循一些有帮助的人发布的方法时)。你可能还需要了解一下Dkpg(上面提到的);例如,一些软件创建者提供了一个裸露的.pkg 文件。

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

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