Linux 发行版已经发展了很多,包管理器是这一发展的一部分。这种维护一个用户可以下载软件的集中位置的想法或实践从其发展的早期阶段就已成为 Linux 的一部分,并且它仍在不断发展。 Linux 发行版在很多方面彼此不同,其中之一就是包管理器。从 Pacman 到 YUM 到 APT 或 Zypper,这些包管理器的主要功能是相同的,但它们确实存在差异。所以,今天我们将学习什么是包,什么是包管理器,以及我们为什么需要它们,我们还将了解不同的包格式和不同的包管理器。

什么是包?

Linux 中的包是一个文件,其中包含可执行的二进制文件和配置文件,还包括描述包的元数据。这些包由包维护者维护,他们负责所有必要的更新。他们从软件作者那里获取源代码并对其进行编译并创建包,并应用必要的修改将该包与 Linux 发行版的其他部分集成。

包装上的 SUSE 文档

包是在 Linux 系统上分发软件的一种方式。单个应用程序作为一个或多个包分发。通常,主包包含程序,此外还有一些可选或辅助包。

为什么我们甚至需要包?

Linux 发行版很久以前就了解对这些包和包管理器的需求。过去,为了安装软件,我们编译了源代码,同时我们自己处理了该特定软件所需的依赖项。为了让安装软件变得简单,Linux 发行版决定构建自己的打包格式,借助这种格式,最终用户可以轻松地安装带有元数据的软件。编译源代码仍然存在,仅在必要时使用,但很多时候它是可选的。

包管理器

一个包管理器负责管理你所有的包,听起来很简单,对吧。可以在包管理器的帮助下执行安装、删除、配置和更多任务。我们有时可能会非常轻视包管理器,但我们应该知道,包管理器使我们可以轻松执行许多与包相关的任务。

linux.png

软件包管理器上的 DEBIAN 文档

软件包管理器会跟踪您的计算机上安装了哪些软件,并允许您轻松安装新软件、将软件升级到较新版本或删除之前安装的软件。顾名思义,包管理器处理包。

软件仓库

软件存储库和手机上的应用商店背后的想法是相似的。可以安装软件的地方。软件可用于系统已配置为使用的任何存储库的中心位置。

好的,但是包管理器是如何工作的?

整个想法围绕软件存储库和包管理器展开。包管理器首先与存储库中的元数据文件进行交互,元数据文件包含有关包的全部信息,例如包的名称、版本号、描述等。包管理器在上创建这些元数据文件的本地缓存您的系统,并且每当您运行更新命令时,包管理器都会通过引用存储库中的元数据文件来更新此本地缓存。

安装这些软件包?

对于包管理器来说,这现在是一项简单的任务。每当您运行安装命令时,包管理器都会引用该本地缓存,如果有任何关于包的信息,包管理器将(在 Internet 的帮助下)连接到适当的存储库并下载包,然后再将其安装到你的系统。此外,我们知道许多软件都有依赖项(需要额外的包才能正常运行),所以包管理器会处理这些依赖项并自动安装这些依赖项。

同样,您可以使用包管理器来删除、配置、搜索包以及获取有关特定包的信息。

meme2.jpg

包格式

一些最常用的包格式是:

  • .deb - 被 Debian 家族、Ubuntu、MX Linux、Linux Mint 和其他几个发行版使用。这是第一个创建的包格式。

  • .rpm - 最初称为 RED HAT PACKAGE MANAGER。它被 Red Hat、Fedora、SUSE 和其他几个发行版使用。

  • pkg.tar.zst - 这种格式用于 Arch Linux,它只是一个压缩的 tarball。

最常用的包管理器

现在我们已经介绍了基础知识,让我们通过讨论不同类型的包管理器来更深入地探讨这个主题。

个基于 Debian 的软件包管理器

debian.pngDebian 提供了多种工具,来自基于图形或文本的界面,用于管理软件包。作为目前维护的最古老的 Linux 发行版之一,Debian 使用 .deb 包。名为 dpkg 的工具可用于管理这些包,dpkg 本身是一个低级工具,旨在管理本地可用的包。您不能使用 dpkg 从远程位置安装软件包。

历史(根据维基百科)

dpkg 是由 Ian Murdock 在 1994 年 1 月创建的一个 Shell 脚本。随后 Matt Welsh、Carl Streeter 和 Ian Murdock 用 Perl 重写了它,然后在 1994 年 Ian Jackson 用 C 重写了主要部分。dpkg 这个名字最初是“Debian 包”的缩写,但那个短语的意思由于 dpkg 软件与 deb 软件包格式以及定义 Debian 软件包在 Debian 中的行为方式的 Debian Policy Manual 正交,因此已经有了显着的发展。

但不久之后,Advanced Package Tool 或 APT 于 1998 年推出,包含它的第一个 Debian 版本是 Debian 2.1,于 1999 年 3 月 9 日发布。创建它的原因是为了改善用户体验和易用性。 APT 本身依赖 dpkg 来管理系统中的包。 APT 是一组工具,提供各种工具来执行与包相关的不同任务。

包括的工具有:

  • apt-get 用于从经过身份验证的源中检索包和有关它们的信息,以及用于安装、升级和删除包及其依赖项。

  • apt-cache 用于查询有关已安装和可用软件包的可用信息。

  • apt-cdrom 使用可移动媒体作为包的来源。

  • apt-config 作为配置设置的接口。

  • apt-key 作为管理身份验证密钥的接口。

  • apt-extracttemplates 供 debconf 用于在安装前提示配置问题。

  • apt-ftparchive 创建发布 deb 包存档所需的包和其他索引文件。

  • apt-sortpkgs 是一个包/源文件规范化器。

  • apt 是一个高级命令行界面,用于更好地交互使用。

另外,你应该知道 apt-get 和 apt 的区别,从 Debian Jessie(8.11) 开始,一些常用的 apt-get 和 apt-cache 命令也可以通过 apt 调用。大多数经常使用的命令都分散在 apt-get 和 apt-cache 中,这对最终用户来说并不是那么愉快。 apt 的主要目的是将所有最常用的命令集中到一个地方,并使最终用户的包管理变得愉快。

meme.jpg以下是旧命令和新命令的概述:

 apt-get update             ->  apt update
 apt-get upgrade            ->  apt upgrade
 apt-get dist-upgrade       ->  apt full-upgrade
 apt-get install package    ->  apt install package
 apt-get remove package     ->  apt remove package
 apt-get autoremove         ->  apt autoremove
 apt-cache search string    ->  apt search string
 apt-cache policy package   ->  apt list -a package
 apt-cache show package     ->  apt show package
 apt-cache showpkg package  ->  apt show -a package

基于 Arch 的包管理器

arch2.pngArch Linux 使用名为 pacman 的包管理器,它是“包管理器”的缩写,由 Judd Vinet 开发,用 C 语言编写,使用bsdtartar 格式进行打包。与其他形式的压缩档案相比,这使得 Arch Linux 软件包要小得多。

Archlinux 维基

pacman 包管理器是 Arch Linux 的主要特色之一。它结合了简单的二进制包格式和易于使用的构建系统。 pacman 的目标是使管理软件包成为可能,无论它们来自官方存储库还是用户的构建。

pacman 的主要优点是它支持Arch Build System或 ABS,这是一组用于将源代码编译成包的工具。构建系统提取一个名为PKGBUILD的文件,该文件是一个 shell 脚本,其中包含源代码的 URL 以及编译和打包指令。这催生了 Arch 用户存储库 (AUR),它是一个包含 PKGBUILD 文件的社区驱动存储库。由于它是社区驱动的,因此有无穷无尽的可用软件,如果开发人员必须在软件正式包含在 Arch 存储库之前将他的新软件提供给 Arch Linux 用户,那么将他的软件包添加到 AUR 将使有可能。

吃豆人

pacman 和其他包管理器的主要区别在于 pacman 使用标志而不是像“安装”这样的命令词。例如,要安装一个包,你可以使用sudo pacman -S package_name

这里有一些命令:

@078`

  • 更新软件包数据库并更新系统上的所有软件包。

sudo pacman -Syu

  • 搜索包含关键字 neovim 的包。

pacman -Qs neovim

  • 获取系统上所有已安装软件包的列表。

pacman -Ql

切勿在未先更新系统的情况下安装软件包。在滚动版本中,这可能会导致系统无法启动。

  • 用于安装软件包并确保系统是最新的。

sudo pacman -Syu emacs

移除包裹时,请务必先查看包裹清单,然后再进行确认。如果您不小心,由于依赖关系,您可以轻松删除整个桌面。

  • 用于删除软件包。

sudo pacman -R package_name

  • 列出所有孤儿和已安装的软件包,这些软件包没有被其他任何东西使用并且不再需要。

pacman -Qdt

  • 要清除不再安装的软件包的缓存,请输入以下命令。

sudo pacman -Sc

使用更多?

如前所述,Arch User Repository 是许多 Arch 用户查找软件包的常用工具,但不幸的是,我们无法使用 pacman 访问 AUR,就像我们访问官方存储库一样。我们需要一个 AUR 助手来访问 AUR,因为我们知道 AUR 包是 PKGBUILD 的形式,并且它们需要手动构建,因此为了自动化这个过程,我们使用 AUR 助手。 AUR 助手有很多,最著名的是 Yay、Paru、Pacaur、Trizen 和 Pamac。

基于 RPM 的包管理器

red_hat.pngDebian 的系统和基于 RPM 的系统非常相似。 RPM 中使用的文件格式是 .rpm 。 RPM 最初由 Erik Troan 和 Marc Ewing 于 1997 年编写,用于 Red Hat Linux,RPM 现在用于许多基于 Red Hat 的 Linux 发行版。在 Red Hat 最初的日子里,使用了一个名为 RPM 的包管理器,但就像 Debian 的 dpkg 一样,RPM 用于本地包,不能用于从远程存储库访问包。引入了另一个名为 up2date 的包管理器来解决有关远程存储库的问题,但存在一些问题。

百胜

Yellowdog Updater, Modified (YUM) 是 Red Hat Enterprise Linux (RHEL) 使用的命令行包管理实用程序。原始包管理器 Yellowdog Updater(YUP) 的修改版本,解决了 up2date 的许多缺点和限制。到 2005 年,yum 的受欢迎程度增长得如此之快,估计超过一半的 Linux 市场都在使用它。目前,在 RHEL 8 中,软件安装由基于 DNF 技术的新版 YUM(YUM v4)启用。

历史

Yellowdog Updater (YUP) 由 Terra Soft Solutions 的开发人员于 1999-2001 年开发,作为 Yellow Dog Linux 图形安装程序的后端引擎。杜克大学喜欢 YUP 的想法并决定对其进行改进。他们创建了 Yellowdog Updater, Modified (yum),最终被改编为帮助管理大学的 Red Hat Linux 系统

以下是一些 yum 命令:

  • 将所有软件包更新到最新版本。

sudo yum upgrade

  • 使用 yum 安装软件包。

sudo yum install firefox

  • 使用 yum 删除软件包。

sudo yum remove firefox

  • 使用 yum 更新包。

sudo yum update mysql

  • 使用 yum 获取有关软件包的信息。

yum info java

  • 使用 yum 列出所有已安装的软件包。

yum list installed

-使用 yum 更新系统。

sudo yum update

  • 使用 yum 检查可用更新。

yum check-update

  • 查看百胜历史。

yum history

DNF

Dandified YUM 或 DNF 包管理器是 YUM 的改进版本。 DNF 于 2013 年在 Fedora 18 中引入,但在 2015 年被 Fedora 采用为 Fedora 22 中的默认包管理器,从那时起它一直是 Fedora 的默认管理器,不仅是 Fedora,许多发行版都采用了 DNF。引入 DNF 是为了解决 YUM 中的许多缺陷,包括性能差、内存使用率高等等。大部分 DNF 命令与 yum 类似,只需将 yum 替换为 dnf 即可。

FEDORA 文档

DNF 是 Fedora 项目包管理器,它能够查询有关包的信息、从存储库中获取包、使用自动依赖解析安装和卸载包,以及将整个系统更新到最新的可用包。

meme3.jpg

这里介绍的所有包管理器都具有比这里介绍的更多的功能。我建议您阅读文档以获取更深入的信息。

Logo

更多推荐