搜索
❏ 站外平台:

Linux 黑话解释:什么是包管理器?它是如何工作的?

作者: 译者: LCTT Xingyu.Wang

| 2020-10-13 09:49      

的要点之一是包管理。在这篇 Linux 黑话解释中,你将了解 Linux 中的打包和包管理器。你将了解什么是包,什么是包管理器,它们是如何工作的,以及有什么包管理器。

什么是包管理器?

简单来说,“包管理器package manager”(或“软件包管理器”)是一种工具,它允许用户在乐透游戏上、删除、升级、配置和管理软件包。软件包管理器可以是像“软件中心”这样的图形化应用,也可以是像  或  这样的letou行工具。

你会发现我经常在教程和文章中使用“包”这个词。要了解包管理器,你必须了解什么是包。

什么是包?

一个“package”(或“软件包”)通常指的是一个应用程序,它可以是一个 GUI 应用程序、letou行工具或(其他软件程序需要的)软件库。包本质上是一个存档文件,包含二进制可执行文件、配置文件,有时还包含依赖关系的信息。

在旧时代,。你会参考一个文件(通常命名为 README),看看它需要什么软件组件、二进制文件的位置。它通常包括一个配置脚本或 Makefile。你必须自己编译该软件或自己处理所有的依赖关系(有些软件需要其他软件)。

为了摆脱这种复杂性,Linux 发行版创建了自己的打包格式,为终端用户提供随时可用的二进制文件(预编译软件),以便软件,同时提供一些(版本号、描述)和依赖关系。

这就像烤蛋糕与买蛋糕一样。

大约在上世纪 90 年代中期,Debian 创建了 DEB 打包格式(.deb),Red Hat Linux 创建了 RPM(Red Hat Package Manager 的缩写)打包系统(.rpm)。编译源代码的方式仍然存在,但现在是可选的。

要与打包系统交互或使用打包系统,你需要一个包管理器。

包管理器是如何工作的?

请记住,包管理器是一个通用的概念,它并不是 Linux 独有的。你会经常发现各种软件或编程语言的包管理器。有。甚至 。

由于本文的重点是 Linux,所以我会从 Linux 的角度出发。不过,这里的大部分解释也可以应用于一般的包管理器。

我创建了这个图(基于 SUSE Wiki),这样你就可以很容易理解包管理器是如何工作的。

几乎所有的 Linux 发行版都有“软件仓库software repository”,它基本上是软件包的集合。是的,可以有不止一个软件库。软件库包含不同种类的软件包。

软件仓库也有元数据文件,其中包含了软件包的信息,如软件包的名称、版本号、软件包的描述和软件仓库名称等。这就是你在 Ubuntu/Debian 中使用 所看到的。

你的系统上的包管理器首先会与元数据进行交互。包管理器在你的系统上创建了一个元数据的本地缓存。当你运行包管理器的更新选项(例如 apt update)时,它会通过引用仓库中的元数据来更新本地元数据缓存。

当你运行软件包管理器的letou(例如 apt install package_name)时,软件包管理器会引用这个缓存。如果它在缓存中找到了包的信息,它就会使用互联网连接到相应的仓库,并在你的系统上之前先乐投letou包。

一个包可能有依赖关系。意思是说,它可能需要其他软件包。软件包管理器通常会处理这些依赖关系,并将其与你正在的软件包一起自动。

Linux 中包管理器会处理依赖关系

同样,当你使用包管理器删除一个包时,它要么自动删除,要么通知你系统有未使用的包可以清理。

除了、删除这些显而易见的任务外,你还可以使用包管理器对包进行配置,并根据自己的需要进行管理。例如,你可以在常规的系统更新中。你的包管理器可能还能做很多事情。

不同种类的包管理器

包管理器因打包系统而异,但同一打包系统却可能有多个包管理器。

例如,RPM 有  和  包管理器。对于 DEB,你有 apt-get、 等基于letou行的包管理器。

Synaptic 包管理器

软件包管理器不一定是基于letou行的,也有图形化的软件包管理工具,比如 。你的发行版的“软件中心”也是一个软件包管理器,即使它在底层运行的是 apt-get 或 DNF。

结论

我不想进一步详细介绍这个话题,虽然我可以继续说下去,但这将偏离本主题的目标 —— 即让你对 Linux 中的包管理器有一个基本的了解。

我暂时忽略了新的通用打包格式,比如 Snap 和 Flatpak。

我希望你对 Linux 中的包管理系统有更好的理解。如果你还有困惑,或者你对这个主题有一些问题,请发表评论。我会尽量回答你的问题,如果需要的话,我会在本文中更新新的内容。


via: 

作者: 选题: 译者: 校对:

本文由  原创编译,Linux中国 荣誉推出



最新评论

LCTT 译者
Xingyu.Wang 💎💎💎
共计翻译: 689.0 篇 | 共计贡献: 2590
贡献时间:2014-07-25 -> 2021-08-27
访问我的 LCTT 主页 |


返回顶部

分享到微信

打开微信,点击顶部的“╋”,
使用“扫一扫”将网页分享至微信。