让我们点评一些最好的 Arch Linux GUI 包管理器。选择最符合你需求的。由于其可定制性、灵活性和尖端功能，Arch Linux 是高级用户和开发人员中最受欢迎和使用最广泛的 Linux 发行版之一。由于其极简设计，在 Arch Linux 中安装软件的主要方式是使用终端通过命令行界面 （CLI）。但并不是每个人都喜欢使用终端。基于图形用户界面（GUI）的包管理器是这些人的必备程序。有几个可选的包管理器。让我们了解一些比较流行的。在 Arch Linux 上寻找基于 GUI 的包管理器要考虑什么？在为 Arch Linux 选择基于 GUI 的包管理器时，必须考虑几个因素：首先，它应该有一个干净易用的界面，对初学者来说很直观。其次，它应该支持所有包管理操作，例如安装、删除、更新和搜索包。第三，它应该具有高级功能，例如依赖项解析和对 AUR 包的支持。最后，它应该是轻量级的，不会占用太多的系统资源。Arch Linux 的最佳 GUI 包管理器1、Pamac此列表中的第一个 GUI 包管理器是 Pamac，它由 Manjaro Linux 团队开发。具有漂亮且用户友好的界面，使其超级易于使用。其直观的界面使用户可以轻松安装、删除和更新软件包。它建立在支持 AUR 的 libalpm 之上。Pamac 还支持 Snap 和 Flatpak 的 appstream:/// 协议。因此，你可以直接从 appstream 链接启动该应用安装程序。此外，它还具有高级功能，例如依赖项解析和对 AUR 包的支持。此外，Pamac 是轻量级的，不会占用太多系统资源。使用其 GUI，你可以浏览 Arch 仓库，还可以根据其功能查看应用。Pamac GUI 中有单独的部分，可以使你能够删除和卸载包，包括孤立的包。它是最好的 GUI 包管理器之一。Pamac 安装很容易。它在 Arch 用户仓库（AUR）中可用。你可以 安装 Yay AUR 助手或任何其他助手来安装它。这是使用 Yay 安装的命令。该软件包位于 此处。如果你正在运行 Manjaro Linux，它应该已经存在。yay -S pamac-aur-git 2、Octopi接下来的 GUI 包管理器是 Octopi，它是另一个漂亮的工具。它是使用 Qt 构建的，并带有一个高效的 GUI。在功能方面，它是一个非常先进的工具。使用 Octopi，你可以搜索包、安装它们，当然也可以删除它们。此外，你可以查看直接从 Arch 仓库中获取的每个包的详细信息。例如，包版本、最后更新日期、新闻和其他信息。此外，它允许你查看包的 PKGBUILD 信息。如果你想进一步调查包，这是一个很好的功能。最后，它是超轻量级的，不会占用大量系统资源。我认为 Octopi 完全被低估了，它是 Arch Linux 功能丰富的软件管理器之一。它在 AUR 中可用，你可以使用 Yay 或任何 AUR 助手安装它。yay -S --needed octopi 3、GNOME “软件”应用此列表中的第三个是你可能已经知道的 GNOME “ 软件 Software ”应用。它是 Ubuntu、Fedora 和许多其他发行版的默认软件管理器。基于 GTK4，它支持所有类型的包，如 .deb、.rpm、Flatpak 和 Snap。在 Arch Linux 中，它支持主 Arch 仓库，包括用户仓库（AUR）。但是，与此列表中的其他应用程序相比，它对系统资源的占用可能有点大。但它是一个现代的包管理器，可以很好地用于各种场景。安装很简单，因为它在主 Arch 仓库中可用。你可以从终端使用以下命令安装它。sudo pacman -S --needed gnome-software 4. KDE “发现”应用我个人最喜欢的是 KDE “ 发现 Discover ”应用 ，它是 KDE Plasma 团队中最好的软件管理器之一。如果你使用过 Kubuntu 或任何其他 KDE Plasma 桌面，那么你已经熟悉它了。“发现”应用支持所有主要的打包格式，包括 deb、rpm、Flatpak 和 Snap。它有一个定义明确的软件及其来源信息页面。你还可以按应用名称搜索或按应用类别浏览目录。对于 Arch Linux，它可以从主 Arch 仓库和 AUR 中获取包和信息。你可以在 Arch Linux 中使用以下命令安装它。sudo pacman -S --needed discover 5、BauhBauh 是一个相对较新的基于 GUI 的 Arch Linux 包管理器。它具有简单且用户友好的界面，使用户可以轻松管理他们的包。它的主窗口为你提供了在 Arch Linux 系统中管理应用程序的所有选项。主搜索框使你能够搜索应用程序。此外，你可以通过类型浏览，例如仅查看 Flatpak、AUR 等包。此外，使用 Bauh 的主 GUI，你可以逐个降级和更新软件包，查看软件包信息，甚至直接启动应用。良好设计的设置面板为你提供了所需的所有自定义选项。在系统中 设置 AUR 之后，你可以使用以下命令安装它。yay -S --needed bauh 还有几个还有一些其他的包管理器可以在 Arch Linux 中使用。这是其中的一小部分。这些不是那么流行。但它们也可以作为替代方案。Apper：使用 PackageKit 的应用和包管理器（来自 KDE 团队）tkPacman：使用 Tcl/Tk 构建的 pacman 轻量级 GUI最后，你可以在官方 Arch Wiki 中阅读更多相关信息。总结在本文中，我们讨论了一些适用于 Arch Linux 的最佳基于 GUI 的包管理器，包括 Pamac、Octopi、GNOME “软件”应用、KDE “发现”应用 和 Bauh。这些包管理器中的每一个都有自己的优点和缺点，因此你可以选择最适合你需求的那个。如果你要我推荐，我建议你试试这些：Pamac、Octopi 和 Bauh。它们都是很好的。（题图：MJ:software package manager hd, abstract）via: https://www.debugpoint.com/arch-linux-gui-package-managers/作者：Arindam 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
安装 Arch Linux 有一些挑战性。这就是为什么 有几个基于 Arch 的发行版 通过提供图形化的安装程序使事情变得简单。即使你设法安装了 Arch Linux，你也会注意到它严重依赖命令行。如果你需要安装应用或更新系统，那么必须打开终端。是的！Arch Linux 没有软件中心。我知道，这让很多人感到震惊。如果你对使用命令行管理应用感到不舒服，你可以安装一个 GUI 工具。这有助于在舒适的图形化界面中搜索包以及安装和删除它们。想知道你应该使用 pacman 命令 的哪个图形前端？我有一些建议可以帮助你。请注意，某些软件管理器是特定于桌面环境的。1、ApperApper 是一个精简的 Qt5 应用，它使用 PackageKit 进行包管理，它还支持 AppStream 和自动更新。但是，没有 AUR 支持。要从官方仓库安装它，请使用以下命令：sudo pacman -Syu apper GitLab 上的 Apper2、深度应用商店深度应用商店是使用 DTK（QT5）构建的深度桌面环境的应用商店，它使用 PackageKit 进行包管理，支持 AppStream，同时提供系统更新通知。 没有 AUR 支持。要安装它，请使用以下命令：sudo pacman -Syu deepin-store Github 上的深度商店3、KDE 发现应用 发现 Discover 应用不需要为 KDE Plasma 用户介绍。它是一个使用 PackageKit 的基于 Qt 的应用管理器，支持 AppStream、Flatpak 和固件更新。要在发现应用中安装 Flatpak 和固件更新，需要分别安装 flatpak 和 fwupd 包。它没有 AUR 支持。sudo pacman -Syu discover packagekit-qt5 GitLab 上的 Discover4、GNOME PackageKitGNOME PackageKit 是一个使用 PackageKit 技术的 GTK3 包管理器，支持 AppStream。不幸的是，没有 AUR 支持。要从官方仓库安装它，请使用以下命令：sudo pacman -Syu gnome-packagekit freedesktop 上的 PackageKit5、GNOME 软件应用GNOME 软件 Software 应用不需要向 GNOME 桌面用户介绍。它是使用 PackageKit 技术的 GTK4 应用管理器，支持 AppStream、Flatpak 和固件更新。它没有 AUR 支持。要安装来自 GNOME 软件应用的 Flatpak 和固件更新，需要分别安装 flatpak 和 fwupd 包。安装它使用：sudo pacman -Syu gnome-software-packagekit-plugin gnome-software GitLab 上的 GNOME 软件6、tkPacman它是用 Tcl 编写的 Tk pacman 封装。界面类似于 Synaptic 包管理器。由于没有 GTK/Qt 依赖，它非常轻量级，因为它使用 Tcl/Tk GUI 工具包。它不支持 AUR，这很讽刺，因为你需要从 AUR 安装它。你需要事先安装一个 AUR 助手，如 yay。yay -Syu tkpacman Sourceforge 上的 tkPacman7、Octopi可以认为它是 tkPacman 的更好看的表亲。它使用 Qt5 和 Alpm，还支持 Appstream 和 AUR（通过 yay）。你还可以获得桌面通知、仓库编辑器和缓存清理器。它的界面类似于 Synaptic 包管理器。要从 AUR 安装它，请使用以下命令。yay -Syu octopi GitHub 上的 Octopi8、PamacPamac 是 Manjaro Linux 的图形包管理器。它基于 GTK3 和 Alpm，支持 AUR、Appstream、Flatpak 和 Snap。Pamac 还支持自动下载更新和降级软件包。它是 Arch Linux 衍生版中使用最广泛的应用。但因为 DDoS AUR 网页 而臭名昭著。在 Arch Linux 上安装 Pamac 有几种方法。最简单的方法是使用 AUR 助手。yay -Syu pamac-aur GitLab 上的 Pamac总结要删除任何上面图形化包管理器以及依赖项和配置文件，请使用以下命令将 packagename 替换为要删除的包的名称。sudo pacman -Rns packagename 这样看来，Arch Linux 也可以在不接触终端的情况下使用合适的工具。还有一些其他应用程序也使用终端用户界面（TUI）。一些例子是 pcurses、cylon、pacseek 和 yup。但是，这篇文章只讨论那些有适当的 GUI 的软件。注意： PackageKit 默认打开系统权限，因而 不推荐 用于一般用途。因为如果用户属于 wheel 组，更新或安装任何软件都不需要密码。你看到了在 Arch Linux 上使用图形化软件中心的几种选择。现在是时候决定使用其中一个了。你会选择哪一个？Pamac 或 OctoPi 还是其他？现在就在下面留言吧。via: https://itsfoss.com/arch-linux-gui-package-managers/作者：Anuj Sharma 选题：lkxed 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux 中国 荣誉推出
包管理器提供大致相同的功能：安装、管理和移除应用，但是它们还是有一些不一样的地方。在 Linux 系统上获取一个应用 有多种方式。例如，有新的 Flatpak 和容器方式，也有 DEB 和 RPM 这样一直以来经过考验的方式。并没有一种通用的可以用于所有的操作系统的应用安装程序。如今，因为有无数的开发者发布软件，这导致了大部分的操作系统使用了应用商店（包括第一方和第三方）、拖放式安装，还有安装向导。不同的开发者对于他们发布的代码有不同的需求，这直接导致了他们所选择的安装方式的不同。Linux 开创了一种通过命令行安装、管理、移除应用的包管理器的概念。apt 和 dnf 就是两种较为常见的包管理器。apt 命令是用来管理 DEB 格式的包，dnf 命令是用来管理 RPM 格式的包。这两种包管理器在理论上并不是完全互斥的，尽管在实际的实践中，Linux 发行版通常只会使用到其中的一种。理论上，这两种命令可以运行在同一个系统上，但是会造成安装包的重叠，版本控制也会更加困难，命令也会是冗余的。然而，如果你是在一个混合的 Linux 环境下工作，比如你的工作站运行的是一个发行版，同时需要与运行另外一种发行版的服务器进行交互，那么你最好同时掌握这两种包管理器。搜索应用当你通过包管理器安装一个应用时，你需要先知道包的名称。通常，应用的名称和包的名称是一样的。dnf 和 apt 验证要安装的包名的过程是完全相同的。$ sudo dnf search zsh ====== Name Exactly Matched: zsh ====== zsh.x86_64 : Powerful interactive shell [...] 使用 apt:$ sudo apt search zsh Sorting... Done Full Text Search... Done csh/stable 20110502-4+deb10u1 amd64 Shell with C-like syntax ddgr/stable 1.6-1 all DuckDuckGo from the terminal direnv/stable 2.18.2-2 amd64 Utility to set directory specific environment variables draai/stable 20180521-1 all Command-line music player for MPD [...] 如果想通过 apt 更快的获取相关的搜索结果，你可以使用 正则表达式：apt search ^zsh Sorting... Done Full Text Search... Done zsh/stable 5.7.1-1 amd64 shell with lots of features [...] 查找应用程序包有一些命令是与其它命令捆绑在一起的，都在一个包中。在这种情况下，你可以通过包管理器去了解哪个包提供了你需要的命令。dnf 和 apt 命令在如何搜索这类元数据上是有区别的。使用 dnf：$ sudo dnf provides pgrep procps-ng-3.3.15-6.el8.x86_64 : System and process monitoring utilities Repo : baseos Matched from: Filename : /usr/bin/pgrep apt 命令使用子命令 apt-file。要使用 apt-file，你必须先安装它，然后提示它更新缓存：$ sudo apt install apt-file Reading package lists... Done Building dependency tree Reading state information... Done The following additional packages will be installed: libapt-pkg-perl libexporter-tiny-perl liblist-moreutils-perl libregexp-assemble-perl The following NEW packages will be installed: apt-file libapt-pkg-perl libexporter-tiny-perl liblist-moreutils-perl libregexp-assemble-perl 0 upgraded, 5 newly installed, 0 to remove and 14 not upgraded. Need to get 297 kB of archives. After this operation, 825 kB of additional disk space will be used. Do you want to continue? [Y/n] y $ sudo apt-file update [...] 你可以通过 apt-file 搜索命令。你可以使用此命令进行广泛的全局搜索，但假如你知道命令的执行路径，它会更准确：$ sudo apt-file search /usr/bin/pgrep pgreplay: /usr/bin/pgreplay procps: /usr/bin/pgrep 安装应用程序使用apt 和 dnf 安装应用程序基本上是相同的：$ sudo apt install zsh 使用 dnf，你可以使用同样的方式来安装一个包：$ sudo dnf install zsh 许多基于 RPM 的发行版都具有组包安装的特性，它会将有时表面相关的应用程序收集到一个易于安装的目标中。例如，Fedora 中的 Design Suite 组包就包含流行的创意应用程序。那些想要某一个创意应用程序的艺术家可能也想要类似的应用程序，选择安装一整个组包一个简单而快速的方法，可以合理地开始建立一个数字工作室。你可以通过 group list 来查看可用的组包（使用 -v 来查看不带空格的组名）：$ sudo dnf group list -v [...] Available Groups: Container Management (container-management) RPM Development Tools (rpm-development-tools) Design Suite (design-suite) Development Tools (development) [...] 使用 group install 子命令安装 RPM 组包：$ sudo dnf group install design-suite 你可以使用 @ 符号来减少输入：$ sudo dnf install @design-suite 更新应用程序使用包管理器的一个优点是，它知道所有已经安装的应用。这样你不必去寻找应用程序的更新版本。相反，你可以通过包管理器去获取更新的版本。dnf 和 apt 使用的子命令略有不同。因为 apt 保存了一个需要定期更新的缓存信息，它使用 upgrade 子命令来更新应用程序：$ sudo apt upgrade 相比之下，dnf 命令在你每次使用时都会更新元信息，所以 update 和 upgrade 子命令是可以互换的：$ sudo dnf upgrade 这等同于：$ sudo dnf update 移除应用程序如果你曾经尝试在任何一个平台上手动删除一个应用程序，你就会知道，应用程序删除后，在硬盘上会残留各种文件，比如首选项文件、数据或图标。所以包管理器的另一个优点是，包管理器管理着包中安装的每一个文件，可以很方便的删除：$ sudo dnf remove zsh remove 子命令也适用于 apt：$ sudo apt remove zsh 使用 apt 命令删除一个包并不会删除已修改的用户配置文件，以防你意外删除了包。如果你想通过 apt 命令删除一个应用及其配置文件，请在你之前删除过的应用程序上使用 purge 子命令：$ sudo apt purge zsh apt 和 dnf 都不会删除家目录中的数据和配置文件（即使使用 purge 子命令）。如果想要从家目录中删除数据，你必须手动操作（通常你可以在 ~/.config 和 ~/.local 文件中找到）。了解包管理无论你选择的发行版支持的是 apt 还是 dnf，这些命令的用途大致相同。它们可以帮助你安装、更新和移除包。这两种包管理器是目前最通用的包管理器。它们的语法元素在很大程度上是相同的，所以在两者之间切换非常容易。apt 和 dnf 还有一些高级功能，例如仓库管理，但这些功能并不像你使用 search 和 install 那样频繁。无论你更经常使用哪种包管理器，你都可以下载我们的 apt 备忘单 和 dnf 备忘单，以便你在最需要的时候可以查询使用语法。via: https://opensource.com/article/21/7/dnf-vs-apt作者：Seth Kenlon 选题：lujun9972 译者：perfiffer 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
包管理器可以跟踪你安装的软件的所有组件，使得更新、重装和故障排除更加容易。在 2021 年，人们喜欢 Linux 的理由比以往任何时候都多。在这个系列中，我将分享 21 个使用 Linux 的不同理由。今天，我将谈谈软件仓库。在我使用 Linux 之前，我认为在计算机上安装的应用是理所当然的。我会根据需要安装应用，如果我最后没有使用它们，我就会把它们忘掉，让它们占用我的硬盘空间。终于有一天，我的硬盘空间会变得稀缺，我就会疯狂地删除应用，为更重要的数据腾出空间。但不可避免的是，应用只能释放出有限的空间，所以我将注意力转移到与这些应用一起安装的所有其他零碎内容上，无论是媒体内容还是配置文件和文档。这不是一个管理电脑的好方法。我知道这一点，但我并没有想过要有其他的选择，因为正如人们所说，你不知道自己不知道什么。当我改用 Linux 时，我发现安装应用的方式有些不同。在 Linux 上，会建议你不要去网站上找应用的安装程序。取而代之的是，运行一个命令，应用就会被安装到系统上，并记录每个单独的文件、库、配置文件、文档和媒体资产。什么是软件仓库？在 Linux 上安装应用的默认方法是从发行版软件仓库中安装。这可能听起来像应用商店，那是因为现代应用商店借鉴了很多软件仓库的概念。Linux 也有应用商店，但软件仓库是独一无二的。你通过一个包管理器从软件仓库中获得一个应用，它使你的 Linux 系统能够记录和跟踪你所安装的每一个组件。这里有五个原因可以让你确切地知道你的系统上有什么东西，可以说是非常有用。1、移除旧应用当你的计算机知道应用安装的每一个文件时，卸载你不再需要的文件真的很容易。在 Linux 上，安装 31 个不同的文本编辑器，然后卸载 30 个你不喜欢的文本编辑器是没有问题的。当你在 Linux 上卸载的时候，你就真的卸载了。2、按你的意思重新安装不仅卸载要彻底，重装也很有意义。在许多平台上，如果一个应用出了问题，有时会建议你重新安装它。通常情况下，谁也说不清为什么要重装一个应用。不过，人们还是经常会隐隐约约地怀疑某个地方的文件已经损坏了（换句话说，数据写入错误），所以希望重装可以覆盖坏的文件以让软件重新工作。这是个不错的建议，但对于任何技术人员来说，不知道是什么地方出了问题都是令人沮丧的。更糟糕的是，如果不仔细跟踪，就不能保证所有的文件都会在重装过程中被刷新，因为通常没有办法知道与应用程序一起安装的所有文件在第一时间就删除了。有了软件包管理器，你可以强制彻底删除旧文件，以确保新文件的全新安装。同样重要的是，你可以研究每个文件并可能找出导致问题的文件，但这是开源和 Linux 的一个特点，而不是包管理。3、保持你应用的更新不要听别人告诉你的 Linux 比其他操作系统“更安全”。计算机是由代码组成的，而我们人类每天都会以新的、有趣的方式找到利用这些代码的方法。因为 Linux 上的绝大多数应用都是开源的，所以许多漏洞都会以“ 常见漏洞和暴露 Common Vulnerability and Exposures ”（CVE）的形式公开。大量涌入的安全漏洞报告似乎是一件坏事，但这绝对是一个知道远比不知道好的案例。毕竟，没有人告诉你有问题，并不意味着没有问题。漏洞报告是好的。它们对每个人都有好处。而且，当开发人员修复安全漏洞时，对你而言，及时获得这些修复程序很重要，最好不用自己记着动手修复。包管理器正是为了实现这一点而设计的。当应用收到更新时，无论是修补潜在的安全问题还是引入令人兴奋的新功能，你的包管理器应用都会提醒你可用的更新。4、保持轻便假设你有应用 A 和应用 B，这两个应用都需要库 C。在某些操作系统上，通过得到 A 和 B，就会得到了两个 C 的副本。这显然是多余的，所以想象一下，每个应用都会发生几次。冗余的库很快就会增加，而且由于对一个给定的库没有单一的“正确”来源，所以几乎不可能确保你使用的是最新的甚至是一致的版本。我承认我不会整天坐在这里琢磨软件库，但我确实记得我琢磨的日子，尽管我不知道这就是困扰我的原因。在我还没有改用 Linux 之前，我在处理工作用的媒体文件时遇到错误，或者在玩不同的游戏时出现故障，或者在阅读 PDF 时出现怪异的现象，等等，这些都不是什么稀奇的事情。当时我花了很多时间去调查这些错误。我仍然记得，我的系统上有两个主要的应用分别捆绑了相同（但有区别）的图形后端技术。当一个程序的输出导入到另一个程序时，这种不匹配会导致错误。它本来是可以工作的，但是由于同一个库文件集合的旧版本中的一个错误，一个应用的热修复程序并没有给另一个应用带来好处。包管理器知道每个应用需要哪些后端（被称为依赖关系），并且避免重新安装已经在你系统上的软件。5、保持简单作为一个 Linux 用户，我要感谢包管理器，因为它帮助我的生活变得简单。我不必考虑我安装的软件，我需要更新的东西，也不必考虑完成后是否真的将其卸载了。我毫不犹豫地试用软件。而当我在安装一台新电脑时，我运行 一个简单的 Ansible 脚本 来自动安装我所依赖的所有软件的最新版本。这很简单，很智能，也是一种独特的解放。更好的包管理Linux 从整体看待应用和操作系统。毕竟，开源是建立在其他开源工作基础上的，所以发行版维护者理解依赖栈的概念。Linux 上的包管理了解你的整个系统、系统上的库和支持文件以及你安装的应用。这些不同的部分协调工作，为你提供了一套高效、优化和强大的应用。via: https://opensource.com/article/21/2/linux-package-management作者：Seth Kenlon 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
Linux 黑话解释：什么是包管理器？它是如何工作的？
Linux 发行版之间有什么不同的要点之一是包管理。在这篇 Linux 黑话解释中，你将了解 Linux 中的打包和包管理器。你将了解什么是包，什么是包管理器，它们是如何工作的，以及有什么包管理器。什么是包管理器？简单来说，“ 包管理器 package manager ”（或“软件包管理器”）是一种工具，它允许用户在操作系统上安装、删除、升级、配置和管理软件包。软件包管理器可以是像“软件中心”这样的图形化应用，也可以是像 apt-get 或 pacman 这样的命令行工具。你会发现我经常在教程和文章中使用“包”这个词。要了解包管理器，你必须了解什么是包。什么是包？一个“ 包 package ”（或“软件包”）通常指的是一个应用程序，它可以是一个 GUI 应用程序、命令行工具或（其他软件程序需要的）软件库。包本质上是一个存档文件，包含二进制可执行文件、配置文件，有时还包含依赖关系的信息。在旧时代，软件曾经是从它的源代码安装的。你会参考一个文件（通常命名为 README），看看它需要什么软件组件、二进制文件的位置。它通常包括一个配置脚本或 Makefile。你必须自己编译该软件或自己处理所有的依赖关系（有些软件需要安装其他软件）。为了摆脱这种复杂性，Linux 发行版创建了自己的打包格式，为终端用户提供随时可用的二进制文件（预编译软件），以便安装软件，同时提供一些元数据（版本号、描述）和依赖关系。这就像烤蛋糕与买蛋糕一样。大约在上世纪 90 年代中期，Debian 创建了 DEB 打包格式（.deb），Red Hat Linux 创建了 RPM（Red Hat Package Manager 的缩写）打包系统（.rpm）。编译源代码的方式仍然存在，但现在是可选的。要与打包系统交互或使用打包系统，你需要一个包管理器。包管理器是如何工作的？请记住，包管理器是一个通用的概念，它并不是 Linux 独有的。你会经常发现各种软件或编程语言的包管理器。有只是针对 Python 包的 PIP 包管理器。甚至 Atom 编辑器也有自己的包管理器。由于本文的重点是 Linux，所以我会从 Linux 的角度出发。不过，这里的大部分解释也可以应用于一般的包管理器。我创建了这个图（基于 SUSE Wiki），这样你就可以很容易理解包管理器是如何工作的。几乎所有的 Linux 发行版都有“ 软件仓库 software repository ”，它基本上是软件包的集合。是的，可以有不止一个软件库。软件库包含不同种类的软件包。软件仓库也有元数据文件，其中包含了软件包的信息，如软件包的名称、版本号、软件包的描述和软件仓库名称等。这就是你在 Ubuntu/Debian 中使用 apt show 命令所看到的。你的系统上的包管理器首先会与元数据进行交互。包管理器在你的系统上创建了一个元数据的本地缓存。当你运行包管理器的更新选项（例如 apt update）时，它会通过引用仓库中的元数据来更新本地元数据缓存。当你运行软件包管理器的安装命令（例如 apt install package_name）时，软件包管理器会引用这个缓存。如果它在缓存中找到了包的信息，它就会使用互联网连接到相应的仓库，并在你的系统上安装之前先下载包。一个包可能有依赖关系。意思是说，它可能需要安装其他软件包。软件包管理器通常会处理这些依赖关系，并将其与你正在安装的软件包一起自动安装。同样，当你使用包管理器删除一个包时，它要么自动删除，要么通知你系统有未使用的包可以清理。除了安装、删除这些显而易见的任务外，你还可以使用包管理器对包进行配置，并根据自己的需要进行管理。例如，你可以在常规的系统更新中防止升级某个包的版本。你的包管理器可能还能做很多事情。不同种类的包管理器包管理器因打包系统而异，但同一打包系统却可能有多个包管理器。例如，RPM 有 Yum 和 DNF 包管理器。对于 DEB，你有 apt-get、aptitude 等基于命令行的包管理器。软件包管理器不一定是基于命令行的，也有图形化的软件包管理工具，比如 Synaptic。你的发行版的“软件中心”也是一个软件包管理器，即使它在底层运行的是 apt-get 或 DNF。结论我不想进一步详细介绍这个话题，虽然我可以继续说下去，但这将偏离本主题的目标 —— 即让你对 Linux 中的包管理器有一个基本的了解。我暂时忽略了新的通用打包格式，比如 Snap 和 Flatpak。我希望你对 Linux 中的包管理系统有更好的理解。如果你还有困惑，或者你对这个主题有一些问题，请发表评论。我会尽量回答你的问题，如果需要的话，我会在本文中更新新的内容。via: https://itsfoss.com/package-manager/作者：Abhishek Prakash 选题：lujun9972 译者：wxy 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
如何搜索一个包是否在你的 Linux 发行版中
如果你知道包名称，那么你可以直接安装所需的包。在某些情况下，如果你不知道确切的包名称或者你想搜索某些包，那么你可以在发行版的包管理器的帮助下轻松搜索该包。搜索会自动包括已安装和可用的包。结果的格式取决于选项。如果你的查询没有输出任何信息，那么意味着没有匹配条件的包。这可以通过发行版的包管理器的各种选项来完成。我已经在本文中添加了所有可能的选项，你可以选择最好的和最合适你的选项。或者，我们可以通过 whohas 命令实现这一点。它会从所有的主流发行版（例如 Debian、Ubuntu、 Fedora 等）中搜索，而不仅仅是你自己的系统发行版。建议阅读：适用于 Linux 的命令行包管理器列表以及用法Linux 包管理器的图形前端工具如何在 Debian/Ubuntu 中搜索一个包我们可以使用 apt、apt-cache 和 aptitude 包管理器在基于 Debian 的发行版上查找给定的包。我为这个包管理器中包括了大量的选项。我们可以在基于 Debian 的系统中使用三种方式完成此操作。apt 命令apt-cache 命令aptitude 命令如何使用 apt 命令搜索一个包APT 代表 高级包管理工具 Advanced Packaging Tool （APT），它取代了 apt-get。它有功能丰富的命令行工具，包括所有功能包含在一个命令（apt）里，包括 apt-cache、apt-search、dpkg、apt-cdrom、apt-config、apt-key 等，还有其他几个独特的功能。APT 是一个强大的命令行工具，它可以访问 libapt-pkg 底层库的所有特性，它可以用于安装、下载、删除、搜索和管理以及查询包的信息，另外它还包含一些较少使用的与包管理相关的命令行实用程序。$ apt -q list nano vlc Listing... nano/artful,now 2.8.6-3 amd64 [installed] vlc/artful 2.2.6-6 amd64或者，我们可以使用以下格式搜索指定的包。$ apt search ^vlc Sorting... Done Full Text Search... Done vlc/artful 2.2.6-6 amd64 multimedia player and streamer vlc-bin/artful 2.2.6-6 amd64 binaries from VLC vlc-data/artful,artful 2.2.6-6 all Common data for VLC vlc-l10n/artful,artful 2.2.6-6 all Translations for VLC vlc-plugin-access-extra/artful 2.2.6-6 amd64 multimedia player and streamer (extra access plugins) vlc-plugin-base/artful 2.2.6-6 amd64 multimedia player and streamer (base plugins)如何使用 apt-cache 命令搜索一个包apt-cache 会在 APT 的包缓存上执行各种操作。它会显示有关指定包的信息。apt-cache 不会改变系统的状态，但提供了从包的元数据中搜索和生成有趣输出的操作。$ apt-cache search nano | grep ^nano nano - small, friendly text editor inspired by Pico nano-tiny - small, friendly text editor inspired by Pico - tiny build nanoblogger - Small weblog engine for the command line nanoblogger-extra - Nanoblogger plugins nanoc - static site generator written in Ruby nanoc-doc - static site generator written in Ruby - documentation nanomsg-utils - nanomsg utilities nanopolish - consensus caller for nanopore sequencing data或者，我们可以使用以下格式搜索指定的包。$ apt-cache policy vlc vlc: Installed: (none) Candidate: 2.2.6-6 Version table: 2.2.6-6 500 500 http://in.archive.ubuntu.com/ubuntu artful/universe amd64 Packages或者，我们可以使用以下格式搜索给定的包。$ apt-cache pkgnames vlc vlc-bin vlc-plugin-video-output vlc-plugin-sdl vlc-plugin-svg vlc-plugin-samba vlc-plugin-fluidsynth vlc-plugin-qt vlc-plugin-skins2 vlc-plugin-visualization vlc-l10n vlc-plugin-notify vlc-plugin-zvbi vlc-plugin-vlsub vlc-plugin-jack vlc-plugin-access-extra vlc vlc-data vlc-plugin-video-splitter vlc-plugin-base如何使用 aptitude 命令搜索一个包aptitude 是一个基于文本的 Debian GNU/Linux 软件包系统的命令行界面。它允许用户查看包列表，并执行包管理任务，例如安装、升级和删除包，它可以从可视化界面或命令行执行操作。$ aptitude search ^vlc p vlc - multimedia player and streamer p vlc:i386 - multimedia player and streamer p vlc-bin - binaries from VLC p vlc-bin:i386 - binaries from VLC p vlc-data - Common data for VLC v vlc-data:i386 - p vlc-l10n - Translations for VLC v vlc-l10n:i386 - p vlc-plugin-access-extra - multimedia player and streamer (extra access plugins) p vlc-plugin-access-extra:i386 - multimedia player and streamer (extra access plugins) p vlc-plugin-base - multimedia player and streamer (base plugins) p vlc-plugin-base:i386 - multimedia player and streamer (base plugins) p vlc-plugin-fluidsynth - FluidSynth plugin for VLC p vlc-plugin-fluidsynth:i386 - FluidSynth plugin for VLC p vlc-plugin-jack - Jack audio plugins for VLC p vlc-plugin-jack:i386 - Jack audio plugins for VLC p vlc-plugin-notify - LibNotify plugin for VLC p vlc-plugin-notify:i386 - LibNotify plugin for VLC p vlc-plugin-qt - multimedia player and streamer (Qt plugin) p vlc-plugin-qt:i386 - multimedia player and streamer (Qt plugin) p vlc-plugin-samba - Samba plugin for VLC p vlc-plugin-samba:i386 - Samba plugin for VLC p vlc-plugin-sdl - SDL video and audio output plugin for VLC p vlc-plugin-sdl:i386 - SDL video and audio output plugin for VLC p vlc-plugin-skins2 - multimedia player and streamer (Skins2 plugin) p vlc-plugin-skins2:i386 - multimedia player and streamer (Skins2 plugin) p vlc-plugin-svg - SVG plugin for VLC p vlc-plugin-svg:i386 - SVG plugin for VLC p vlc-plugin-video-output - multimedia player and streamer (video output plugins) p vlc-plugin-video-output:i386 - multimedia player and streamer (video output plugins) p vlc-plugin-video-splitter - multimedia player and streamer (video splitter plugins) p vlc-plugin-video-splitter:i386 - multimedia player and streamer (video splitter plugins) p vlc-plugin-visualization - multimedia player and streamer (visualization plugins) p vlc-plugin-visualization:i386 - multimedia player and streamer (visualization plugins) p vlc-plugin-vlsub - VLC extension to download subtitles from opensubtitles.org p vlc-plugin-zvbi - VBI teletext plugin for VLC p vlc-plugin-zvbi:i386 如何在 RHEL/CentOS 中搜索一个包Yum（Yellowdog Updater Modified）是 Linux 操作系统中的包管理器实用程序之一。Yum 命令用于在一些基于 RedHat 的 Linux 发行版上，它用来安装、更新、搜索和删除软件包。# yum search ftpd Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached hostfile * base: centos.hyve.com * epel: mirrors.coreix.net * extras: centos.hyve.com * rpmforge: www.mirrorservice.org * updates: mirror.sov.uk.goscomb.net ============================================================== N/S Matched: ftpd =============================================================== nordugrid-arc-gridftpd.x86_64 : ARC gridftp server pure-ftpd.x86_64 : Lightweight, fast and secure FTP server vsftpd.x86_64 : Very Secure Ftp Daemon Name and summary matches only, use "search all" for everything.或者，我们可以使用以下命令搜索相同内容。# yum list ftpd如何在 Fedora 中搜索一个包DNF 代表 Dandified yum。我们可以说 DNF 是下一代 yum 包管理器（Yum 的衍生品），它使用 hawkey/libsolv 库作为底层。Aleš Kozumplík 从 Fedora 18 开始开发 DNF，最终在 Fedora 22 中发布。# dnf search ftpd Last metadata expiration check performed 0:42:28 ago on Tue Jun 9 22:52:44 2018. ============================== N/S Matched: ftpd =============================== proftpd-utils.x86_64 : ProFTPD - Additional utilities pure-ftpd-selinux.x86_64 : SELinux support for Pure-FTPD proftpd-devel.i686 : ProFTPD - Tools and header files for developers proftpd-devel.x86_64 : ProFTPD - Tools and header files for developers proftpd-ldap.x86_64 : Module to add LDAP support to the ProFTPD FTP server proftpd-mysql.x86_64 : Module to add MySQL support to the ProFTPD FTP server proftpd-postgresql.x86_64 : Module to add PostgreSQL support to the ProFTPD FTP : server vsftpd.x86_64 : Very Secure Ftp Daemon proftpd.x86_64 : Flexible, stable and highly-configurable FTP server owfs-ftpd.x86_64 : FTP daemon providing access to 1-Wire networks perl-ftpd.noarch : Secure, extensible and configurable Perl FTP server pure-ftpd.x86_64 : Lightweight, fast and secure FTP server pyftpdlib.noarch : Python FTP server library nordugrid-arc-gridftpd.x86_64 : ARC gridftp server或者，我们可以使用以下命令搜索相同的内容。# dnf list proftpd Failed to synchronize cache for repo 'heikoada-terminix', disabling. Last metadata expiration check: 0:08:02 ago on Tue 26 Jun 2018 04:30:05 PM IST. Available Packages proftpd.x86_64如何在 Arch Linux 中搜索一个包pacman 代表包管理实用程序（pacman）。它是一个用于安装、构建、删除和管理 Arch Linux 软件包的命令行实用程序。pacman 使用 libalpm（Arch Linux Package Management（ALPM）库）作为底层来执行所有操作。在本例中，我将要搜索 chromium 包。# pacman -Ss chromium extra/chromium 48.0.2564.116-1 The open-source project behind Google Chrome, an attempt at creating a safer, faster, and more stable browser extra/qt5-webengine 5.5.1-9 (qt qt5) Provides support for web applications using the Chromium browser project community/chromium-bsu 0.9.15.1-2 A fast paced top scrolling shooter community/chromium-chromevox latest-1 Causes the Chromium web browser to automatically install and update the ChromeVox screen reader extention. Note: This package does not contain the extension code. community/fcitx-mozc 2.17.2313.102-1 Fcitx Module of A Japanese Input Method for Chromium OS, Windows, Mac and Linux (the Open Source Edition of Google Japanese Input)默认情况下，-s 选项内置 ERE（扩展正则表达式）会导致很多不需要的结果。使用以下格式会仅匹配包名称。# pacman -Ss '^chromium-'pkgfile 是一个用于在 Arch Linux 官方仓库的包中搜索文件的工具。# pkgfile chromium如何在 openSUSE 中搜索一个包Zypper 是 SUSE 和 openSUSE 发行版的命令行包管理器。它用于安装、更新、搜索和删除包以及管理仓库，执行各种查询等。Zypper 命令行对接到 ZYpp 系统管理库（libzypp）。# zypper search ftp or # zypper se ftp Loading repository data... Reading installed packages... S | Name | Summary | Type --+----------------+-----------------------------------------+-------- | proftpd | Highly configurable GPL-licensed FTP -> | package | proftpd-devel | Development files for ProFTPD | package | proftpd-doc | Documentation for ProFTPD | package | proftpd-lang | Languages for package proftpd | package | proftpd-ldap | LDAP Module for ProFTPD | package | proftpd-mysql | MySQL Module for ProFTPD | package | proftpd-pgsql | PostgreSQL Module for ProFTPD | package | proftpd-radius | Radius Module for ProFTPD | package | proftpd-sqlite | SQLite Module for ProFTPD | package | pure-ftpd | A Lightweight, Fast, and Secure FTP S-> | package | vsftpd | Very Secure FTP Daemon - Written from-> | package如何使用 whohas 命令搜索一个包whohas 命令是一个智能工具，从所有主流发行版中搜索指定包，如 Debian、Ubuntu、Gentoo、Arch、AUR、Mandriva、Fedora、Fink、FreeBSD 和 NetBSD。$ whohas nano Mandriva nano-debug 2.3.1-1mdv2010.2.x http://sophie.zarb.org/rpms/0b33dc73bca710749ad14bbc3a67e15a Mandriva nano-debug 2.2.4-1mdv2010.1.i http://sophie.zarb.org/rpms/d9dfb2567681e09287b27e7ac6cdbc05 Mandriva nano-debug 2.2.4-1mdv2010.1.x http://sophie.zarb.org/rpms/3299516dbc1538cd27a876895f45aee4 Mandriva nano 2.3.1-1mdv2010.2.x http://sophie.zarb.org/rpms/98421c894ee30a27d9bd578264625220 Mandriva nano 2.3.1-1mdv2010.2.i http://sophie.zarb.org/rpms/cea07b5ef9aa05bac262fc7844dbd223 Mandriva nano 2.2.4-1mdv2010.1.s http://sophie.zarb.org/rpms/d61f9341b8981e80424c39c3951067fa Mandriva spring-mod-nanoblobs 0.65-2mdv2010.0.sr http://sophie.zarb.org/rpms/74bb369d4cbb4c8cfe6f6028e8562460 Mandriva nanoxml-lite 2.2.3-4.1.4mdv2010 http://sophie.zarb.org/rpms/287a4c37bc2a39c0f277b0020df47502 Mandriva nanoxml-manual-lite 2.2.3-4.1.4mdv2010 http://sophie.zarb.org/rpms/17dc4f638e5e9964038d4d26c53cc9c6 Mandriva nanoxml-manual 2.2.3-4.1.4mdv2010 http://sophie.zarb.org/rpms/a1b5092cd01fc8bb78a0f3ca9b90370b Gentoo nano 9999 http://packages.gentoo.org/package/app-editors/nano Gentoo nano 9999 http://packages.gentoo.org/package/app-editors/nano Gentoo nano 2.9.8 http://packages.gentoo.org/package/app-editors/nano Gentoo nano 2.9.7如果你希望只从当前发行版仓库中搜索指定包，使用以下格式：$ whohas -d Ubuntu vlc Ubuntu vlc 2.1.6-0ubuntu14.04 1M all http://packages.ubuntu.com/trusty/vlc Ubuntu vlc 2.1.6-0ubuntu14.04 1M all http://packages.ubuntu.com/trusty-updates/vlc Ubuntu vlc 2.2.2-5ubuntu0.16. 1M all http://packages.ubuntu.com/xenial/vlc Ubuntu vlc 2.2.2-5ubuntu0.16. 1M all http://packages.ubuntu.com/xenial-updates/vlc Ubuntu vlc 2.2.6-6 40K all http://packages.ubuntu.com/artful/vlc Ubuntu vlc 3.0.1-3build1 32K all http://packages.ubuntu.com/bionic/vlc Ubuntu vlc 3.0.2-0ubuntu0.1 32K all http://packages.ubuntu.com/bionic-updates/vlc Ubuntu vlc 3.0.3-1 33K all http://packages.ubuntu.com/cosmic/vlc Ubuntu browser-plugin-vlc 2.0.6-2 55K all http://packages.ubuntu.com/trusty/browser-plugin-vlc Ubuntu browser-plugin-vlc 2.0.6-4 47K all http://packages.ubuntu.com/xenial/browser-plugin-vlc Ubuntu browser-plugin-vlc 2.0.6-4 47K all http://packages.ubuntu.com/artful/browser-plugin-vlc Ubuntu browser-plugin-vlc 2.0.6-4 47K all http://packages.ubuntu.com/bionic/browser-plugin-vlc Ubuntu browser-plugin-vlc 2.0.6-4 47K all http://packages.ubuntu.com/cosmic/browser-plugin-vlc Ubuntu libvlc-bin 2.2.6-6 27K all http://packages.ubuntu.com/artful/libvlc-bin Ubuntu libvlc-bin 3.0.1-3build1 17K all http://packages.ubuntu.com/bionic/libvlc-bin Ubuntu libvlc-bin 3.0.2-0ubuntu0.1 17K allvia: https://www.2daygeek.com/how-to-search-if-a-package-is-available-on-your-linux-distribution-or-not/作者：Prakash Subramanian 选题：lujun9972 译者：MjSeven 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
zypper 是 Suse Linux 系统的包和补丁管理器，你可以根据下面的 12 条附带输出示例的实用范例来学习 zypper 命令的使用。Suse Linux 使用 zypper 进行包管理，其是一个由 ZYpp 包管理引擎提供的包管理系统。在此篇文章中我们将分享 12 条附带输出示例的实用 zypper 命令，能帮助你处理日常的系统管理任务。不带参数的 zypper 命令将列出所有可用的选项，这比参考详细的 man 手册要容易上手得多。root@kerneltalks # zypper 用法： zypper [--global-options] <command> [--command-options] [arguments] zypper <subcommand> [--command-options] [arguments] 全局选项： --help, -h 帮助 --version, -V 输出版本号 --promptids 输出 zypper 用户提示符列表 --config, -c <file> 使用指定的配置文件来替代默认的 --userdata <string> 在历史和插件中使用的用户自定义事务 id --quiet, -q 忽略正常输出，只打印错误信息 --verbose, -v 增加冗长程度 --color --no-color 是否启用彩色模式，如果 tty 支持的话 --no-abbrev, -A 表格中的文字不使用缩写 --table-style, -s 表格样式（整型） --non-interactive, -n 不询问任何选项，自动使用默认答案 --non-interactive-include-reboot-patches 针对带有重启标志的补丁，不使用交互模式 --xmlout, -x 切换至 XML 输出 --ignore-unknown, -i 忽略未知的包 --reposd-dir, -D 使用自定义仓库文件目录 --cache-dir, -C 为所有缓存启用可选路径 --raw-cache-dir 启用可选 raw 元数据缓存路径 --solv-cache-dir 启用可选 solv 文件缓存路径 --pkg-cache-dir 启用可选包缓存路径 仓库选项： --no-gpg-checks 忽略 GPG 检查失败并跳过 --gpg-auto-import-keys 自动信任并导入新仓库的签名密钥 --plus-repo, -p <URI> 使用附加仓库 --plus-content <tag> 另外使用禁用的仓库来提供特定的关键词 尝试使用 '--plus-content debug' 选项来启用仓库 --disable-repositories 不从仓库中读取元数据 --no-refresh 不刷新仓库 --no-cd 忽略 CD/DVD 中的仓库 --no-remote 忽略远程仓库 --releasever 设置所有 .repo 文件中的 $releasever 变量（默认值：发行版版本） Target Options: --root, -R 在另一个根路径下进行操作 --disable-system-resolvables 不读取已安装包 命令： help, ? 打印帮助 shell, sh 允许多命令 仓库管理： repos, lr 列出所有自定义仓库 addrepo, ar 添加一个新仓库 removerepo, rr 移除指定仓库 renamerepo, nr 重命名指定仓库 modifyrepo, mr 修改指定仓库 refresh, ref 刷新所有仓库 clean 清除本地缓存 服务管理： services, ls 列出所有自定义服务 addservice, as 添加一个新服务 modifyservice, ms 修改指定服务 removeservice, rs 移除指定服务 refresh-services, refs 刷新所有服务 软件管理： install, in 安装包 remove, rm 移除包 verify, ve 确认包依赖的完整性 source-install, si 安装源码包及其构建依赖 install-new-recommends, inr 安装由已安装包建议一并安装的新包 更新管理： update, up 更新已安装包至更新版本 list-updates, lu 列出可用更新 patch 安装必要的补丁 list-patches, lp 列出必要的补丁 dist-upgrade, dup 进行发行版更新 patch-check, pchk 检查补丁 查询： search, se 查找符合匹配模式的包 info, if 展示特定包的完全信息 patch-info 展示特定补丁的完全信息 pattern-info 展示特定模式的完全信息 product-info 展示特定产品的完全信息 patches, pch 列出所有可用的补丁 packages, pa 列出所有可用的包 patterns, pt 列出所有可用的模式 products, pd 列出所有可用的产品 what-provides, wp 列出提供特定功能的包 包锁定： addlock, al 添加一个包锁定 removelock, rl 移除一个包锁定 locks, ll 列出当前的包锁定 cleanlocks, cl 移除无用的锁定 其他命令： versioncmp, vcmp 比较两个版本字符串 targetos, tos 打印目标操作系统 ID 字符串 licenses 打印已安装包的证书和 EULAs 报告 download 使用命令行下载指定 rpm 包到本地目录 source-download 下载所有已安装包的源码 rpm 包到本地目录 子命令： subcommand 列出可用子命令 输入 'zypper help <command>' 来获得特定命令的帮助。如何使用 zypper 安装包zypper 通过 in 或 install 子命令来在你的系统上安装包。它的用法与 yum 软件包安装 相同。你只需要提供包名作为参数，包管理器（此处是 zypper）就会处理所有的依赖并与你指定的包一并安装。# zypper install telnet Refreshing service 'SMT-http_smt-ec2_susecloud_net'. Refreshing service 'cloud_update'. Loading repository data... Reading installed packages... Resolving package dependencies... The following NEW package is going to be installed: telnet 1 new package to install. Overall download size: 51.8 KiB. Already cached: 0 B. After the operation, additional 113.3 KiB will be used. Continue? [y/n/...? shows all options] (y): y Retrieving package telnet-1.2-165.63.x86_64 (1/1), 51.8 KiB (113.3 KiB unpacked) Retrieving: telnet-1.2-165.63.x86_64.rpm .........................................................................................................................[done] Checking for file conflicts: .....................................................................................................................................[done] (1/1) Installing: telnet-1.2-165.63.x86_64 .......................................................................................................................[done]以上是我们安装 telnet 包时的输出，供你参考。推荐阅读：在 YUM 和 APT 系统中安装包如何使用 zypper 移除包要在 Suse Linux 中擦除或移除包，使用 zypper 附带 remove 或 rm 子命令。root@kerneltalks # zypper rm telnet Loading repository data... Reading installed packages... Resolving package dependencies... The following package is going to be REMOVED: telnet 1 package to remove. After the operation, 113.3 KiB will be freed. Continue? [y/n/...? shows all options] (y): y (1/1) Removing telnet-1.2-165.63.x86_64 ..........................................................................................................................[done]我们在此处移除了先前安装的 telnet 包。使用 zypper 检查依赖或者认证已安装包的完整性有时可以通过强制忽略依赖关系来安装软件包。zypper 使你能够扫描所有已安装的软件包并检查其依赖性。如果缺少任何依赖项，它将提供你安装或重新安装它的机会，从而保持已安装软件包的完整性。使用附带 verify 或 ve 子命令的 zypper 命令来检查已安装包的完整性。root@kerneltalks # zypper ve Refreshing service 'SMT-http_smt-ec2_susecloud_net'. Refreshing service 'cloud_update'. Loading repository data... Reading installed packages... Dependencies of all installed packages are satisfied.在上面的输出中，你能够看到最后一行说明已安装包的所有依赖都已安装完全，并且无需更多操作。如何在 Suse Linux 中使用 zypper 下载包zypper 提供了一种方法使得你能够将包下载到本地目录而不去安装它。你可以在其他具有同样配置的系统上使用这个已下载的软件包。包会被下载至 /var/cache/zypp/packages/<repo>/<arch>/ 目录。root@kerneltalks # zypper download telnet Refreshing service 'SMT-http_smt-ec2_susecloud_net'. Refreshing service 'cloud_update'. Loading repository data... Reading installed packages... Retrieving package telnet-1.2-165.63.x86_64 (1/1), 51.8 KiB (113.3 KiB unpacked) (1/1) /var/cache/zypp/packages/SMT-http_smt-ec2_susecloud_net:SLES12-SP3-Pool/x86_64/telnet-1.2-165.63.x86_64.rpm ................................................[done] download: Done. # ls -lrt /var/cache/zypp/packages/SMT-http_smt-ec2_susecloud_net:SLES12-SP3-Pool/x86_64/ total 52 -rw-r--r-- 1 root root 53025 Feb 21 03:17 telnet-1.2-165.63.x86_64.rpm 你能看到我们使用 zypper 将 telnet 包下载到了本地。推荐阅读：在 YUM 和 APT 系统中只下载包而不安装如何使用 zypper 列出可用包更新zypper 允许你浏览已安装包的所有可用更新，以便你可以提前计划更新活动。使用 list-updates 或 lu 子命令来显示已安装包的所有可用更新。root@kerneltalks # zypper lu Refreshing service 'SMT-http_smt-ec2_susecloud_net'. Refreshing service 'cloud_update'. Loading repository data... Reading installed packages... S | Repository | Name | Current Version | Available Version | Arch --|-----------------------------------|----------------------------|-------------------------------|------------------------------------|------- v | SLES12-SP3-Updates | at-spi2-core | 2.20.2-12.3 | 2.20.2-14.3.1 | x86_64 v | SLES12-SP3-Updates | bash | 4.3-82.1 | 4.3-83.5.2 | x86_64 v | SLES12-SP3-Updates | ca-certificates-mozilla | 2.7-11.1 | 2.22-12.3.1 | noarch v | SLE-Module-Containers12-Updates | containerd | 0.2.5+gitr639_422e31c-20.2 | 0.2.9+gitr706_06b9cb351610-16.8.1 | x86_64 v | SLES12-SP3-Updates | crash | 7.1.8-4.3.1 | 7.1.8-4.6.2 | x86_64 v | SLES12-SP3-Updates | rsync | 3.1.0-12.1 | 3.1.0-13.10.1 | x86_64输出特意被格式化以便于阅读。每一列分别代表包所属仓库名称、包名、已安装版本、可用的更新版本和架构。在 Suse Linux 中列出和安装补丁使用 list-patches 或 lp 子命令来显示你的 Suse Linux 系统需要被应用的所有可用补丁。root@kerneltalks # zypper lp Refreshing service 'SMT-http_smt-ec2_susecloud_net'. Refreshing service 'cloud_update'. Loading repository data... Reading installed packages... Repository | Name | Category | Severity | Interactive | Status | Summary ----------------------------------|------------------------------------------|-------------|-----------|-------------|--------|------------------------------------------------------------------------------------ SLE-Module-Containers12-Updates | SUSE-SLE-Module-Containers-12-2018-273 | security | important | --- | needed | Version update for docker, docker-runc, containerd, golang-github-docker-libnetwork SLE-Module-Containers12-Updates | SUSE-SLE-Module-Containers-12-2018-62 | recommended | low | --- | needed | Recommended update for sle2docker SLE-Module-Public-Cloud12-Updates | SUSE-SLE-Module-Public-Cloud-12-2018-268 | recommended | low | --- | needed | Recommended update for python-ecdsa SLES12-SP3-Updates | SUSE-SLE-SERVER-12-SP3-2018-116 | security | moderate | --- | needed | Security update for rsync ---- output clipped ---- SLES12-SP3-Updates | SUSE-SLE-SERVER-12-SP3-2018-89 | security | moderate | --- | needed | Security update for perl-XML-LibXML SLES12-SP3-Updates | SUSE-SLE-SERVER-12-SP3-2018-90 | recommended | low | --- | needed | Recommended update for lvm2 Found 37 applicable patches: 37 patches needed (18 security patches)使用相应的表头可以很好地组织输出。你可以轻松地找出并根据情况计划你的补丁更新。我们能看到在我们的系统中，37 个可用补丁中有 18 个是安全补丁，需要被高优先级应用！你可以通过发出 zypper patch 命令安装所有需要的补丁。如何使用 zypper 更新包要使用 zypper 更新包，使用 update 或 up 子命令后接包名。在上述列出的更新命令中，我们知道在我们的服务器上 rsync 包更新可用。让我们现在来更新它吧！root@kerneltalks # zypper update rsync Refreshing service 'SMT-http_smt-ec2_susecloud_net'. Refreshing service 'cloud_update'. Loading repository data... Reading installed packages... Resolving package dependencies... The following package is going to be upgraded: rsync 1 package to upgrade. Overall download size: 325.2 KiB. Already cached: 0 B. After the operation, additional 64.0 B will be used. Continue? [y/n/...? shows all options] (y): y Retrieving package rsync-3.1.0-13.10.1.x86_64 (1/1), 325.2 KiB (625.5 KiB unpacked) Retrieving: rsync-3.1.0-13.10.1.x86_64.rpm .......................................................................................................................[done] Checking for file conflicts: .....................................................................................................................................[done] (1/1) Installing: rsync-3.1.0-13.10.1.x86_64 .....................................................................................................................[done]在 Suse Linux 上使用 zypper 查找包如果你不确定包的全名也不要担心。你可以使用 zypper 附带的 se 或 search 子命令并提供查找字符串来查找包。root@kerneltalks # zypper se lvm Refreshing service 'SMT-http_smt-ec2_susecloud_net'. Refreshing service 'cloud_update'. Loading repository data... Reading installed packages... S | Name | Summary | Type ---|---------------|------------------------------|----------- | libLLVM | Libraries for LLVM | package | libLLVM-32bit | Libraries for LLVM | package | llvm | Low Level Virtual Machine | package | llvm-devel | Header Files for LLVM | package | lvm2 | Logical Volume Manager Tools | srcpackage i+ | lvm2 | Logical Volume Manager Tools | package | lvm2-devel | Development files for LVM2 | package 在上述示例中我们查找了 lvm 字符串并得到了如上输出列表。你能在 zypper install/remove/update 命令中使用 Name 字段的名字。使用 zypper 检查已安装包信息你能够使用 zypper 检查已安装包的详细信息。info 或 if 子命令将列出已安装包的信息。它也可以显示未安装包的详细信息，在该情况下，Installed 参数将返回 No 值。root@kerneltalks # zypper info rsync Refreshing service 'SMT-http_smt-ec2_susecloud_net'. Refreshing service 'cloud_update'. Loading repository data... Reading installed packages... Information for package rsync: ------------------------------ Repository : SLES12-SP3-Updates Name : rsync Version : 3.1.0-13.10.1 Arch : x86_64 Vendor : SUSE LLC <https://www.suse.com/> Support Level : Level 3 Installed Size : 625.5 KiB Installed : Yes Status : up-to-date Source package : rsync-3.1.0-13.10.1.src Summary : Versatile tool for fast incremental file transfer Description : Rsync is a fast and extraordinarily versatile file copying tool. It can copy locally, to/from another host over any remote shell, or to/from a remote rsync daemon. It offers a large number of options that control every aspect of its behavior and permit very flexible specification of the set of files to be copied. It is famous for its delta-transfer algorithm, which reduces the amount of data sent over the network by sending only the differences between the source files and the existing files in the destination. Rsync is widely used for backups and mirroring and as an improved copy command for everyday use.使用 zypper 列出仓库使用 zypper 命令附带 lr 或 repos 子命令列出仓库。root@kerneltalks # zypper lr Refreshing service 'cloud_update'. Repository priorities are without effect. All enabled repositories share the same priority. # | Alias | Name | Enabled | GPG Check | Refresh ---|--------------------------------------------------------------------------------------|-------------------------------------------------------|---------|-----------|-------- 1 | SMT-http_smt-ec2_susecloud_net:SLE-Module-Adv-Systems-Management12-Debuginfo-Pool | SLE-Module-Adv-Systems-Management12-Debuginfo-Pool | No | ---- | ---- 2 | SMT-http_smt-ec2_susecloud_net:SLE-Module-Adv-Systems-Management12-Debuginfo-Updates | SLE-Module-Adv-Systems-Management12-Debuginfo-Updates | No | ---- | ---- 3 | SMT-http_smt-ec2_susecloud_net:SLE-Module-Adv-Systems-Management12-Pool | SLE-Module-Adv-Systems-Management12-Pool | Yes | (r ) Yes | No 4 | SMT-http_smt-ec2_susecloud_net:SLE-Module-Adv-Systems-Management12-Updates | SLE-Module-Adv-Systems-Management12-Updates | Yes | (r ) Yes | Yes 5 | SMT-http_smt-ec2_susecloud_net:SLE-Module-Containers12-Debuginfo-Pool | SLE-Module-Containers12-Debuginfo-Pool | No | ---- | ---- 6 | SMT-http_smt-ec2_susecloud_net:SLE-Module-Containers12-Debuginfo-Updates | SLE-Module-Containers12-Debuginfo-Updates | No | ---- | ----此处你需要检查 enabled 列来确定哪些仓库是已被启用的而哪些没有。在 Suse Linux 中使用 zypper 添加或移除仓库要添加仓库你需要仓库或 .repo 文件的 URI，否则你会遇到如下错误。root@kerneltalks # zypper addrepo -c SLES12-SP3-Updates If only one argument is used, it must be a URI pointing to a .repo file.使用 URI，你可以像如下方式添加仓库：root@kerneltalks # zypper addrepo -c http://smt-ec2.susecloud.net/repo/SUSE/Products/SLE-SDK/12-SP3/x86_64/product?credentials=SMT-http_smt-ec2_susecloud_net SLE-SDK12-SP3-Pool Adding repository 'SLE-SDK12-SP3-Pool' ...........................................................................................................................[done] Repository 'SLE-SDK12-SP3-Pool' successfully added URI : http://smt-ec2.susecloud.net/repo/SUSE/Products/SLE-SDK/12-SP3/x86_64/product?credentials=SMT-http_smt-ec2_susecloud_net Enabled : Yes GPG Check : Yes Autorefresh : No Priority : 99 (default priority) Repository priorities are without effect. All enabled repositories share the same priority.在 Suse 中使用附带 addrepo 或 ar 子命令的 zypper 命令添加仓库，后接 URI 以及你需要提供一个别名。要在 Suse 中移除一个仓库，使用附带 removerepo 或 rr 子命令的 zypper 命令。root@kerneltalks # zypper removerepo nVidia-Driver-SLE12-SP3 Removing repository 'nVidia-Driver-SLE12-SP3' ....................................................................................................................[done] Repository 'nVidia-Driver-SLE12-SP3' has been removed.清除 zypper 本地缓存使用 zypper clean 命令清除 zypper 本地缓存。root@kerneltalks # zypper clean All repositories have been cleaned up.via: https://kerneltalks.com/commands/12-useful-zypper-command-examples/作者：KernelTalks 译者：cycoe 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
你是一个喜欢每隔几天尝试 Linux 操作系统的新发行版的发行版收割机吗？如果是这样，我有一些东西对你有用。 尝试 Sysget，这是一个类 Unix 操作系统中的流行软件包管理器的前端。 你不需要学习每个包管理器来执行基本的操作，例如安装、更新、升级和删除包。 你只需要对每个运行在类 Unix 操作系统上的包管理器记住一种语法即可。 Sysget 是包管理器的包装脚本，它是用 C++ 编写的。 源代码可在 GitHub 上免费获得。使用 Sysget，你可以执行各种基本的包管理操作，包括：安装包，更新包，升级包，搜索包，删除包，删除弃用包，更新数据库，升级系统，清除包管理器缓存。给 Linux 学习者的一个重要提示：Sysget 不会取代软件包管理器，绝对不适合所有人。如果你是经常切换到新 Linux 操作系统的新手，Sysget 可能会有所帮助。当在不同的 Linux 发行版中使用不同的软件包管理器时，就必须学习安装、更新、升级、搜索和删除软件包的新命令，这时 Sysget 就是帮助 发行版收割机 distro hopper （或新 Linux 用户）的包装脚本。如果你是 Linux 管理员或想要学习 Linux 深层的爱好者，你应该坚持使用你的发行版的软件包管理器并学习如何使用它。安装 Sysget安装 Sysget 很简单。 转到发布页面并下载最新的 Sysget 二进制文件并按如下所示进行安装。 在编写本指南时，Sysget 最新版本为1.2。$ sudo wget -O /usr/local/bin/sysget https://github.com/emilengler/sysget/releases/download/v1.2/sysget $ sudo mkdir -p /usr/local/share/sysget $ sudo chmod a+x /usr/local/bin/sysget用法Sysget 命令与 APT 包管理器大致相同，因此它应该适合新手使用。当你第一次运行 Sysget 时，系统会要求你选择要使用的包管理器。 由于我在 Ubuntu，我选择了 apt-get。你必须根据正在运行的发行版选择正确的包管理器。 例如，如果你使用的是 Arch Linux，请选择 pacman。 对于 CentOS，请选择 yum。 对于 FreeBSD，请选择 pkg。 当前支持的包管理器列表是：apt-get (Debian)xbps (Void)dnf (Fedora)yum (Enterprise Linux/Legacy Fedora)zypper (OpenSUSE)eopkg (Solus)pacman (Arch)emerge (Gentoo)pkg (FreeBSD)chromebrew (ChromeOS)homebrew (Mac OS)nix (Nix OS)snap (Independent)npm (Javascript, Global)如果你分配了错误的包管理器，则可以使用以下命令设置新的包管理器：$ sudo sysget set yum Package manager changed to yum只需确保你选择了本地包管理器。现在，你可以像使用本机包管理器一样执行包管理操作。要安装软件包，例如 Emacs，只需运行：$ sudo sysget install emacs上面的命令将调用本机包管理器（在我的例子中是 “apt-get”）并安装给定的包。同样，要删除包，只需运行：$ sudo sysget remove emacs更新软件仓库（数据库）：$ sudo sysget update搜索特定包：$ sudo sysget search emacs升级单个包：$ sudo sysget upgrade emacs升级所有包：$ sudo sysget upgrade移除废弃的包：$ sudo sysget autoremove清理包管理器的缓存：$ sudo sysget clean有关更多详细信息，请参阅帮助部分：$ sysget help Help of sysget sysget [OPTION] [ARGUMENT] search [query] search for a package in the resporitories install [package] install a package from the repos remove [package] removes a package autoremove removes not needed packages (orphans) update update the database upgrade do a system upgrade upgrade [package] upgrade a specific package clean clean the download cache set [NEW MANAGER] set a new package manager请记住，不同 Linux 发行版中的所有包管理器的 Sysget 语法都是相同的。 你不需要记住每个包管理器的命令。同样，我必须告诉你 Sysget 不是包管理器的替代品。 它只是类 Unix 系统中流行的包管理器的包装器，它只执行基本的包管理操作。Sysget 对于不想去学习不同包管理器的新命令的新手和发行版收割机用户可能有些用处。 如果你有兴趣，试一试，看看它是否有帮助。而且，这就是本次所有的内容了。 更多干货即将到来。 敬请关注！祝快乐！via: https://www.ostechnix.com/sysget-a-front-end-for-popular-package-managers/作者：SK 选题：lujun9972 译者：Flowsnow 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
如何在 Linux 上检查一个软件包的详细信息
我们可以就这个已经被广泛讨论的话题写出大量的文章，大多数情况下，因为各种各样的原因，我们都愿意让 包管理器 package manager 来帮我们做这些事情。每个 Linux 发行版都有自己的包管理器，并且每个都有各自有不同的特性，这些特性包括允许用户执行安装新软件包，删除无用的软件包，更新现存的软件包，搜索某些具体的软件包，以及更新整个系统到其最新的状态之类的操作。习惯于命令行的用户大多数时间都会使用基于命令行方式的包管理器。对于 Linux 而言，这些基于命令行的包管理器有 yum、dnf、rpm、apt、apt-get、dpkg、pacman 和 zypper。推荐阅读Linux 命令行包管理器列表及其用法一个图形化的 Linux 包管理器前端工具如何搜索知道一个软件包是否存在于你的 Linux 发行版如何使用 dnf/yum 配置包管理器在 Linux 上来添加、启用和禁用软件仓库作为一个系统管理员你应该清楚地知道：安装包来自何方，具体来自哪个软件仓库，包的具体版本，包的大小，版本，包的源代码 URL，包的许可证信息，等等。这篇短文将用尽可能简单的方式帮你从随包自带的总结和描述中了解该包的用法。按你所使用的 Linux 发行版的不同，运行下面相应的命令，你能得到你所使用的发行版下的包的详细信息。YUM 命令：在 RHEL 和 CentOS 系统上获得包的信息YUM 英文直译是“ 黄狗更新器–修改版 Yellowdog Updater, Modified ”，它是一个开源的基于命令行的包管理器前端实用工具。它被广泛应用在基于 RPM 的系统上，例如：RHEL 和 CentOS。Yum 是用于在官方发行版仓库以及其他第三方发行版仓库下获取、安装、删除、查询 RPM 包的主要工具。（LCTT 译注：用 yum info 获取 python 包的信息）# yum info python Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * epel: epel.mirror.constant.com Installed Packages Name : python Arch : x86_64 Version : 2.6.6 Release : 66.el6_8 Size : 78 k Repo : installed From repo : updates Summary : An interpreted, interactive, object-oriented programming language URL : http://www.python.org/ License : Python Description : Python is an interpreted, interactive, object-oriented programming : language often compared to Tcl, Perl, Scheme or Java. Python includes : modules, classes, exceptions, very high level dynamic data types and : dynamic typing. Python supports interfaces to many system calls and : libraries, as well as to various windowing systems (X11, Motif, Tk, : Mac and MFC). : : Programmers can write new built-in modules for Python in C or C++. : Python can be used as an extension language for applications that need : a programmable interface. : : Note that documentation for Python is provided in the python-docs : package. : : This package provides the "python" executable; most of the actual : implementation is within the "python-libs" package. YUMDB 命令：查看 RHEL 和 CentOS 系统上的包信息yumdb info 这个命令提供与 yum info 相类似的的信息，不过它还额外提供了诸如包校验值、包类型、用户信息（由何人安装）。从 yum 3.2.26 版本后，yum 开始在 rpm 数据库外储存额外的信息了（此处如显示 user 表明该包由用户安装，而 dep 说明该包是被作为被依赖的包而被安装的）。（LCTT 译注：用 yumdb info 来获取 python 包的信息）# yumdb info python Loaded plugins: fastestmirror python-2.6.6-66.el6_8.x86_64 changed_by = 4294967295 checksum_data = 53c75a1756e5b4f6564c5229a37948c9b4561e0bf58076bd7dab7aff85a417f2 checksum_type = sha256 command_line = update -y from_repo = updates from_repo_revision = 1488370672 from_repo_timestamp = 1488371100 installed_by = 4294967295 reason = dep releasever = 6RPM 命令：在 RHEL/CentOS/Fedora 系统上查看包的信息RPM 英文直译为“ 红帽包管理器 Red Hat Package Manager ”，这是一个在 RedHat 以及其变种发行版（如RHEL、CentOS、Fedora、openSUSE、Megeia）下的功能强大的命令行包管理工具。它能让你轻松的安装、升级、删除、查询以及校验你的系统或服务器上的软件。RPM 文件以 .rpm 结尾。RPM 包由它所依赖的软件库以及其他依赖构成，它不会与系统上已经安装的包冲突。（LCTT 译注：用 rpm -qi 查询 nano 包的具体信息）# rpm -qi nano Name : nano Relocations: (not relocatable) Version : 2.0.9 Vendor: CentOS Release : 7.el6 Build Date: Fri 12 Nov 2010 02:18:36 AM EST Install Date: Fri 03 Mar 2017 08:57:47 AM EST Build Host: c5b2.bsys.dev.centos.org Group : Applications/Editors Source RPM: nano-2.0.9-7.el6.src.rpm Size : 1588347 License: GPLv3+ Signature : RSA/8, Sun 03 Jul 2011 12:46:50 AM EDT, Key ID 0946fca2c105b9de Packager : CentOS BuildSystem URL : http://www.nano-editor.org Summary : A small text editor Description : GNU nano is a small and friendly text editor.DNF 命令：在 Fedora 系统上查看包信息DNF 指“ 时髦版的 Yum Dandified yum ”，我们也可以认为 DNF 是下一代的 yum 包管理器（Yum 的一个分支），它在后台使用了 hawkey/libsolv 库。Aleš Kozumplík 在Fedora 18 上开始开发 DNF，在 Fedora 22 上正式最后发布。 dnf 命令用来在 Fedora 22 及以后的系统上安装、更新、搜索以及删除包。它能自动的解决包安装过程中的包依赖问题。（LCTT 译注： 用 dnf info 查看 tilix 包信息）$ dnf info tilix Last metadata expiration check: 27 days, 10:00:23 ago on Wed 04 Oct 2017 06:43:27 AM IST. Installed Packages Name : tilix Version : 1.6.4 Release : 1.fc26 Arch : x86_64 Size : 3.6 M Source : tilix-1.6.4-1.fc26.src.rpm Repo : @System From repo : @commandline Summary : Tiling terminal emulator URL : https://github.com/gnunn1/tilix License : MPLv2.0 and GPLv3+ and CC-BY-SA Description : Tilix is a tiling terminal emulator with the following features: : : - Layout terminals in any fashion by splitting them horizontally or vertically : - Terminals can be re-arranged using drag and drop both within and between : windows : - Terminals can be detached into a new window via drag and drop : - Input can be synchronized between terminals so commands typed in one : terminal are replicated to the others : - The grouping of terminals can be saved and loaded from disk : - Terminals support custom titles : - Color schemes are stored in files and custom color schemes can be created by : simply creating a new file : - Transparent background : - Supports notifications when processes are completed out of view : : The application was written using GTK 3 and an effort was made to conform to : GNOME Human Interface Guidelines (HIG).Zypper 命令：在 openSUSE 系统上查看包信息zypper 是一个使用 libzypp 库的命令行包管理器。zypper 提供诸如软件仓库访问，安装依赖解决，软件包安装等等功能。（LCTT 译注： 用 zypper info 查询 nano 包的信息）$ zypper info nano Loading repository data... Reading installed packages... Information for package nano: ----------------------------- Repository : Main Repository (OSS) Name : nano Version : 2.4.2-5.3 Arch : x86_64 Vendor : openSUSE Installed Size : 1017.8 KiB Installed : No Status : not installed Source package : nano-2.4.2-5.3.src Summary : Pico editor clone with enhancements Description : GNU nano is a small and friendly text editor. It aims to emulate the Pico text editor while also offering a few enhancements.Pacman 命令：在 ArchLinux 及 Manjaro 系统上查看包信息Pacman 意即 包管理器 package manager 实用工具。pacman 是一个用于安装、构建、删除、管理 Arch Linux 上包的命令行工具。它后端使用 libalpm（Arch Linux package Manager（ALPM）库）来完成所有功能。（LCTT 译注： 用 pacman -Qi 来查询 bash 包信息）$ pacman -Qi bash Name : bash Version : 4.4.012-2 Description : The GNU Bourne Again shell Architecture : x86_64 URL : http://www.gnu.org/software/bash/bash.html Licenses : GPL Groups : base Provides : sh Depends On : readline>=7.0 glibc ncurses Optional Deps : bash-completion: for tab completion Required By : autoconf automake bison bzip2 ca-certificates-utils db dhcpcd diffutils e2fsprogs fakeroot figlet findutils flex freetype2 gawk gdbm gettext gmp grub gzip icu iptables keyutils libgpg-error libksba libpcap libpng libtool lvm2 m4 man-db mkinitcpio nano neofetch nspr nss openresolv os-prober pacman pcre pcre2 shadow systemd texinfo vte-common which xdg-user-dirs xdg-utils xfsprogs xorg-mkfontdir xorg-xpr xz Optional For : None Conflicts With : None Replaces : None Installed Size : 7.13 MiB Packager : Jan Alexander Steffens (heftig) Build Date : Tue 14 Feb 2017 01:16:51 PM UTC Install Date : Thu 24 Aug 2017 06:08:12 AM UTC Install Reason : Explicitly installed Install Script : No Validated By : Signatureapt-cache 命令：在 Debian/Ubuntu/Mint 系统上查看包信息apt-cache 命令能显示 apt 内部数据库中的大量信息。这些信息是从 sources.list 中的不同的软件源中搜集而来，因此从某种意义上这些信息也可以被认为是某种缓存。这些信息搜集工作是在运行 apt update 命令时执行的。（LCTT 译注：用管理员权限查询 apache2 包的信息）$ sudo apt-cache show apache2 Package: apache2 Priority: optional Section: web Installed-Size: 473 Maintainer: Ubuntu Developers Original-Maintainer: Debian Apache Maintainers Architecture: amd64 Version: 2.4.12-2ubuntu2 Replaces: apache2.2-common Provides: httpd, httpd-cgi Depends: lsb-base, procps, perl, mime-support, apache2-bin (= 2.4.12-2ubuntu2), apache2-utils (>= 2.4), apache2-data (= 2.4.12-2ubuntu2) Pre-Depends: dpkg (>= 1.17.14) Recommends: ssl-cert Suggests: www-browser, apache2-doc, apache2-suexec-pristine | apache2-suexec-custom, ufw Conflicts: apache2.2-common (<< 2.3~) Filename: pool/main/a/apache2/apache2_2.4.12-2ubuntu2_amd64.deb Size: 91348 MD5sum: ab0ee0b0d1c6b3d19bd87aa2a9537125 SHA1: 350c9a1a954906088ed032aebb77de3d5bb24004 SHA256: 03f515f7ebc3b67b050b06e82ebca34b5e83e34a528868498fce020bf1dbbe34 Description-en: Apache HTTP Server The Apache HTTP Server Project's goal is to build a secure, efficient and extensible HTTP server as standards-compliant open source software. The result has long been the number one web server on the Internet. . Installing this package results in a full installation, including the configuration files, init scripts and support scripts. Description-md5: d02426bc360345e5acd45367716dc35c Homepage: http://httpd.apache.org/ Bugs: https://bugs.launchpad.net/ubuntu/+filebug Origin: Ubuntu Supported: 9m Task: lamp-server, mythbuntu-frontend, mythbuntu-desktop, mythbuntu-backend-slave, mythbuntu-backend-master, mythbuntu-backend-masterAPT 命令：查看 Debian/Ubuntu/Mint 系统上的包信息APT 意为 高级打包工具 Advanced Packaging Tool ，就像 DNF 将如何替代 YUM 一样，APT 是 apt-get 的替代物。它功能丰富的命令行工具包括了如下所有命令的功能如 apt-cache、apt-search、dpkg、apt-cdrom、apt-config、apt-key 等等，我们可以方便的通过 apt 来安装 .dpkg 包，但是我们却不能通过 apt-get 来完成这一点，还有一些其他的类似的功能也不能用 apt-get 来完成，所以 apt-get 因为没有解决上述功能缺乏的原因而被 apt 所取代。（LCTT 译注： 用 apt show 查看 nano 包信息）$ apt show nano Package: nano Version: 2.8.6-3 Priority: standard Section: editors Origin: Ubuntu Maintainer: Ubuntu Developers Original-Maintainer: Jordi Mallach Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 766 kB Depends: libc6 (>= 2.14), libncursesw5 (>= 6), libtinfo5 (>= 6) Suggests: spell Conflicts: pico Breaks: nano-tiny (<< 2.8.6-2) Replaces: nano-tiny (<< 2.8.6-2), pico Homepage: https://www.nano-editor.org/ Task: standard, ubuntu-touch-core, ubuntu-touch Supported: 9m Download-Size: 222 kB APT-Manual-Installed: yes APT-Sources: http://in.archive.ubuntu.com/ubuntu artful/main amd64 Packages Description: small, friendly text editor inspired by Pico GNU nano is an easy-to-use text editor originally designed as a replacement for Pico, the ncurses-based editor from the non-free mailer package Pine (itself now available under the Apache License as Alpine). . However, GNU nano also implements many features missing in pico, including: - undo/redo - line numbering - syntax coloring - soft-wrapping of overlong lines - selecting text by holding Shift - interactive search and replace (with regular expression support) - a go-to line (and column) command - support for multiple file buffers - auto-indentation - tab completion of filenames and search terms - toggling features while running - and full internationalization supportdpkg 命令：查看Debian/Ubuntu/Mint系统上的包信息dpkg 意指 Debian 包管理器 Debian package manager 。dpkg 是用于 Debian 系统上安装、构建、移除以及管理 Debian 包的命令行工具。dpkg 使用 aptitude（因为它更为主流及用户友好）作为前端工具来完成所有的功能。其他的工具如dpkg-deb 和 dpkg-query 使用 dpkg 做为前端来实现功能。尽管系统管理员还是时不时会在必要时使用 dpkg 来完成一些软件安装的任务，他大多数情况下还是会因为 apt、apt-get 以及 aptitude 的健壮性而使用后者。（LCTT 译注： 用 dpkg -s 查看 python 包的信息）$ dpkg -s python Package: python Status: install ok installed Priority: optional Section: python Installed-Size: 626 Maintainer: Ubuntu Developers Architecture: amd64 Multi-Arch: allowed Source: python-defaults Version: 2.7.14-2ubuntu1 Replaces: python-dev (<< 2.6.5-2) Provides: python-ctypes, python-email, python-importlib, python-profiler, python-wsgiref Depends: python2.7 (>= 2.7.14-1~), libpython-stdlib (= 2.7.14-2ubuntu1) Pre-Depends: python-minimal (= 2.7.14-2ubuntu1) Suggests: python-doc (= 2.7.14-2ubuntu1), python-tk (>= 2.7.14-1~) Breaks: update-manager-core (<< 0.200.5-2) Conflicts: python-central (<< 0.5.5) Description: interactive high-level object-oriented language (default version) Python, the high-level, interactive object oriented language, includes an extensive class library with lots of goodies for network programming, system administration, sounds and graphics. . This package is a dependency package, which depends on Debian's default Python version (currently v2.7). Homepage: http://www.python.org/ Original-Maintainer: Matthias Klose 我们也可使用 dpkg 的 -p 选项，这个选项提供和 dpkg -s 相类似的信息，但是它还提供了包的校验值和包类型。（LCTT 译注： 用 dpkg -p 查看 python3 包的信息）$ dpkg -p python3 Package: python3 Priority: important Section: python Installed-Size: 67 Origin: Ubuntu Maintainer: Ubuntu Developers Bugs: https://bugs.launchpad.net/ubuntu/+filebug Architecture: amd64 Multi-Arch: allowed Source: python3-defaults Version: 3.6.3-0ubuntu2 Replaces: python3-minimal (<< 3.1.2-2) Provides: python3-profiler Depends: python3.6 (>= 3.6.3-1~), libpython3-stdlib (= 3.6.3-0ubuntu2), dh-python Pre-Depends: python3-minimal (= 3.6.3-0ubuntu2) Suggests: python3-doc (>= 3.6.3-0ubuntu2), python3-tk (>= 3.6.3-1~), python3-venv (>= 3.6.3-0ubuntu2) Filename: pool/main/p/python3-defaults/python3_3.6.3-0ubuntu2_amd64.deb Size: 8712 MD5sum: a8bae494c6e5d1896287675faf40d373 Description: interactive high-level object-oriented language (default python3 version) Original-Maintainer: Matthias Klose SHA1: 2daec885cea7d4dc83c284301c3bebf42b23e095 SHA256: 865e509c91d2504a16c4b573dbe27e260c36fceec2add3fa43a30c1751d7e9bb Homepage: http://www.python.org/ Task: minimal, ubuntu-core, ubuntu-core Description-md5: 950ebd8122c0a7340f0a740c295b9eab Supported: 9maptitude 命令：查看 Debian/Ubuntu/Mint 系统上的包信息aptitude 是 Debian GNU/Linux 包管理系统的文本界面。它允许用户查看已安装的包的列表，以及完成诸如安装、升级、删除包之类的包管理任务。这些管理行为也能从图形接口来执行。（LCTT 译注： 用 aptitude show 查看 htop 包信息）$ aptitude show htop Package: htop Version: 2.0.2-1 State: installed Automatically installed: no Priority: optional Section: universe/utils Maintainer: Ubuntu Developers Architecture: amd64 Uncompressed Size: 216 k Depends: libc6 (>= 2.15), libncursesw5 (>= 6), libtinfo5 (>= 6) Suggests: lsof, strace Conflicts: htop:i386 Description: interactive processes viewer Htop is an ncursed-based process viewer similar to top, but it allows one to scroll the list vertically and horizontally to see all processes and their full command lines. Tasks related to processes (killing, renicing) can be done without entering their PIDs. Homepage: http://hisham.hm/htop/via: https://www.2daygeek.com/how-to-view-detailed-information-about-a-package-in-linux/作者：Prakash Subramanian 选题：lujun9972 译者：DavidChenLiang 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出
学习一种不同的包管理器和怎么使用它。如果你在一直在使用 Linux，你很快就会发现做同样的事情有很多不同的方法。这包括通过命令行在 Linux 上安装应用。我已经是大约 25 年的 Linux 用户，我一次又一次地回到命令行来安装我的应用。从命令行安装应用程序最常用的方法是使用称为包管理器通过软件库（存储软件的地方）安装。所有 Linux 应用都作为软件包分发，这些软件包只不过是与软件包管理系统相关的文件。每个 Linux 发行版都附带一个包管理系统，但它们并不完全相同。什么是包管理系统？包管理系统由一组工具和文件格式组成，它们一起用于安装、更新和卸载 Linux 应用。两种最常见的包管理系统来自 Red Hat 和 Debian。 Red Hat、CentOS 和 Fedora 都使用 rpm 系统（.rpm 文件），而 Debian、Ubuntu、Mint 和 Ubuntu 都使用 dpkg（.deb 文件）。Gentoo Linux 使用名为 Portage 的系统，Arch Linux 只使用 tarball（.tar 文件）。这些系统之间的主要区别在于它们如何安装和维护应用。你可能想知道 .rpm、.deb 或 .tar 文件中的内容。你可能会惊讶地发现，所有这些都只是普通的老式归档文件（如 .zip），其中包含应用的代码，如何安装它的说明，依赖项（它可能依赖的其他应用），以及配置文件的位置。读取和执行所有这些指令的软件称为包管理器。Debian、Ubuntu、Mint 等Debian、Ubuntu、Mint 和其它基于 Debian 的发行版都使用 .deb 文件和 dpkg 包管理系统。有两种方法可以通过此系统安装应用。你可以使用 apt 程序从仓库进行安装，也可以使用 dpkg 程序从 .deb 文件安装应用。我们来看看如何做到这两点。使用 apt 安装应用非常简单：$ sudo apt install app_name通过 apt 卸载应用也非常简单：$ sudo apt remove app_name要升级已安装的应用，首先需要更新应用仓库：$ sudo apt update完成后，你可以使用以下命令更新任何程序：$ sudo apt upgrade如果你只想更新一个应用，该怎么办？没问题。$ sudo apt update app_name最后，假设你要安装的应用不存在于 Debian 仓库中，但有 .deb 下载。$ sudo dpkg -i app_name.debRed Hat、CentOS 和 Fedora默认情况下，Red Hat 使用多个包管理系统。这些系统在使用自己的命令时，互相仍然非常相似，而且与 Debian 中使用的也相似。例如，我们可以使用 yum 或 dnf 管理器来安装应用。$ sudo yum install app_name $ sudo dnf install app_name.rpm 格式的应用也可以使用 rpm 命令安装。$ sudo rpm -i app_name.rpm删除不需要的应用同样容易。$ sudo yum remove app_name $ sudo dnf remove app_name更新应用同样容易。$ yum update $ sudo dnf upgrade --refresh如你所见，从命令行安装、卸载和更新 Linux 应用并不难。事实上，一旦你习惯它，你会发现它比使用基于桌面 GUI 的管理工具更快！有关从命令行安装应用程序的更多信息，请访问 Debian Apt wiki、Yum 速查表 和 DNF wiki。via: https://opensource.com/article/18/8/how-install-software-linux-command-line作者：Patrick H.Mullins 选题：lujun9972 译者：geekpi 校对：wxy本文由 LCTT 原创编译，Linux中国 荣誉推出