蚊章汇 - 软件包管理
type: channel
link: https://linuxcn.bwsl.wang/tag/%E8%BD%AF%E4%BB%B6%E5%8C%85%E7%AE%A1%E7%90%86/
items: 使用 apt 进行 Linux 包管理
items: 使用 dnf 进行 Linux 包管理

使用 apt 进行 Linux 包管理
type: item
date: 2022-05-07T18:42:00+08:00
description: 学习如何使用 apt 命令在基于 Debian 的 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 (>=…

使用 dnf 进行 Linux 包管理
type: item
date: 2022-05-04T18:15:39+08:00
description: 了解如何在 Linux 上使用 dnf 命令安装软件包，然后下载我们的速查表，让正确的命令触手可及。在计算机系统上安装应用程序非常简单：就是将档案（如 .zip 文件）中的文件复制到目标计算机上，放在操作系统预期放应用程序的位置。因为我们中的许多人习惯于使用花哨的安装“向导”来帮助我们在计算机上安装软件，所以这个过程似乎在技术上应该比实际更复杂。然而，复杂的是，是什么构成了一个程序？用户认为的单个应用程序实际上包含了分散在操作系统中的软件库的各种依赖代码（例如：Linux 上的 .so 文件、Windows 上的 .dll 文件和 macOS 上的 .dylib 文件）。为了让用户不必担心这些程序代码之间的复杂的互相依赖关系， Linux 使用 包管理系统 package management system 来跟踪哪些应用程序需要哪些库，哪些库或应用程序有安全或功能更新，以及每个软件会附带安装哪些额外的数据文件。包管理器本质上是一个安装向导。它们易于使用，提供了图形界面和基于终端的界面，让你的生活更轻松。你越了解你的发行版的包管理器，你的生活就会越轻松。在 Linux 上安装应用程序如果你在使用 Linux 桌面时，偶尔想要安装一个应用程序，那么你可能正在寻找 GNOME “软件”，它是一个桌面应用程序浏览器。它会按你的预期工作：点击它的界面，直到你找到一个看起来有用的应用程序，然后单击 “安装” 按钮。或者，你可以在 GNOME “软件” 中打开从网络下载的 .rpm 或 .flatpakref 软件包，以便它进行安装。但如果你更倾向于使用命令行，请继续阅读。用 dnf 搜索软件在安装应用程序之前，你可能需要确认它是否存在于你的发行版的服务器上。通常，使用 dnf 搜索应用程序的通用名称就足够了。例如，假设你最近阅读了 一篇关于 Cockpit 的文章，并决定尝试一下。你可以搜索 cockpit 验证该发行版是否包含它：$ dnf search cockpit Last metadata expiration check: 0:01:46 ago on Tue 18 May 2021 19:18:15 NZST. ==== Name Exactly Matched: cockpit ==== cockpit.x86_64 : Web Console for Linux servers ==== Name & Summary Matched: cockpit == cockpit-bridge.x86_64 : Cockpit bridge server-side component cockpit-composer.noarch : Composer GUI for use with Cockpit [...] 有一个精确的匹配。上面列出的匹配的软件包名为 cockpit.x86_64，但名称中的 .x86_64 部分仅表示它兼容该 CPU 架构。默认情况下，你的系统会安装适配当前 CPU 架构的软件包，因此你可以忽略该扩展名。所以你确认你要查找的软件包确实简称为 cockpit。现在你可以放心地使用 dnf install 安装它。 此步骤需要管理员权限：$ sudo dnf install cockpit 一般来说，这就是典型的 dnf 工作流：搜索并安装。然而，有时 dnf search 的结果并不清晰，或者你想要关于一个软件包的更多信息，而不仅仅是它的通用名称。有一些相关的 dnf 子命令，具体取决于你想要的信息。软件包的元数据如果你觉得你的搜索已 接近 想要的结果，但还不确定，查看软件包的元数据通常会有所帮助，例如项目的网址和描述。要获取此信息，请使用顾名思义的 dnf info 命令：$ dnf info terminator Available Packages Name : terminator Version : 1.92 Release : 2.el8 Architecture : noarch Size : 526 k Source : terminator-1.92-2.el8.src.rpm Repository : epel Summary : Store and run multiple GNOME terminals in one window URL : https://github.com/gnome-terminator License : GPLv2 Description : Multiple GNOME terminals in one window. This is a project to produce : an efficient way of filling a larg…