Linux 中的存储库及其工作原理

Linux 中的存储库及其工作原理

我对 Linux 并不是那么陌生,我对它有很好的基本用法,并且我想更深入:我选择的主题是存储库。我知道我必须添加它们,以防我想安装某些软件。我知道它们与我的发行版有关。我知道它们就像远程站点,告诉我的计算机应该或不应该安装什么。但是有专家可以详细解释一下存储库吗?我该如何管理它们?我可以拥有带有自定义存储库的 Linux 系统吗?谁维护它们?谢谢

答案1

有专家可以吗...

咳咳...我从我的(缩短的)列表开始包管理器,称为吃豆人,使用pacman -Ss kernel( = 显示与正则表达式“kernel”匹配的所有包) 生成

core/iptables 1:1.8.3-1 [installed]
    Linux kernel packet control tool (using legacy interface)
core/iptables-nft 1:1.8.3-1
    Linux kernel packet control tool (using nft interface)
core/kmod 26-2 [installed]
    Linux kernel module management tools and library
core/linux 5.1.12.arch1-1 (base) [installed]
    The Linux kernel and modules

正如我的发行版(archlinux)所定义的那样,“core”是主存储库。当我安装软件包 ( pacman -S kmod) 时,我可以省略存储库的名称。

pacman -S还向我展示了来自“额外”和“社区”存储库的软件包。就是这样,只有三个重要性“级别”。您可以这样配置 pacman:显示所有三个存储库中的所有软件包,但仅同步/更新“核心”和“额外”...

我怎么能确定 archlinux 确实有存储库(并这样称呼它们):

pacman -Sh(= 有关 -S 或 --sync 的帮助) 包含以下行:

-s, --search <regex> search remote repositories for matching strings

[真正的ANSWER PART到此结束] [刚刚在底部完成,主题“systemd package”]


找出你的包管理器可以用存储库做什么,然后你很快就会知道它们是什么......它们有点抽象。包裹团体是一个更简单的概念。(base)上面最后一个条目中的 单词是一个组名。

我对 Linux 不太陌生,我对它有很好的基本用法,我想更深入:我选择的主题是......

Linux 和 Unix 有哪些不同类型?如何将发行版安装到我的磁盘上,以及如何启动它?我可以在我的另一个分区上安装另一个发行版吗?当我选择使用 archlinux、fedora、opensuse、gentoo 等发行版之一时,我该如何维护我的系统?如何安装附加软件包?我如何获得我的发行版中所有(实际上是所有)软件包的概述?那么这些图书馆、部门或者存储库?它们看起来很基础,我以某种方式访问​​它们,但是包管理器如何使用它们,以及如何配置它们?

我就停在这里。你说你想要更深入,我说继续吧。查泽拉斯曾经评论道:个人资料请勿猜测(我的帽子)。我补充一下:暂时忘记存储库。我想我理解你的情况,所以我根据我过去 6 个月的经验,给你一个计划(所有这些问题都在上面,按有意义的顺序)和关于存储库、发行版和包管理的解释......他们不喜欢这里的理论讨论,我也是,我发现可重复的测试结果比理论概念更有趣。不过没问题,是我觉得这个问题出奇的有趣。


我刚刚意识到pacman -S上面显示的输出中有多少信息。你有:

repository/ package-name pkg.vers.xy (group) [installed?] 
     A description you can search by string match even regex

我还没有使用任何 GUI 应用程序来管理我的包 - 他们当然在 archlinux 上使用较低级别的 pacman。 pacman 在本地使用数据库,在远程使用 archlinux 服务器。幸运的是,所有这些包管理器,如 rpm、apt、yum、pacman 等......我停止了,因为我刚刚用 google 搜索并注意到:很多文章rpm在控制台上与 GUI 前端进行比较。

从 opensource.com 上的“包管理器的演变”之类的内容开始您的研究。这看起来是一篇对您(和我)来说都很棒的文章。它以“什么是包管理器?”开头,然后解释道:什么是存储库?以技术历史的方式。信息非常丰富。

当我去的时候pacman -Qs systemd= 显示名称或描述中包含“systemd”的所有本地安装的软件包)我得到:

local/netctl 1.20-1 (base)
    Profile based systemd network management
local/systemd 242.29-2 (base-devel)
    system and service manager
local/systemd-libs 242.29-2
    systemd client libraries
local/systemd-sysvcompat 242.29-2 (base)
    sysvinit compat for systemd 

哦,所以我有一个“本地”存储库,在虚拟意义上,我安装的软件包将存放在其中。 (实际上它们作为文件落在我的根文件系统上 - 我的包管理器也可以向我显示文件列表)。

我在上面给出了“systemd”的例子来说明控制你的系统是多么重要。本地存储库(当某些东西损坏时),因为如果没有正确安装的 systemd 软件包,并且没有其他选择,您的系统将无法工作。为了解决这个问题,我首先要尝试一个简单的pacman -S systemd方法,将我的本地存储库与(默认)核心存储库同步。或者换句话说,这就是我从 archlinux 服务器获取并安装“新鲜”systemd 的方式。就像伸手去拿救援 CD 之类的东西一样。所以我弄乱了我的系统,然后我的 pacman 修复了它。

这当然不是针对systemd!我只是想展示单个软件包的决定性作用...必须能够稍微管理它们 - 您想要的和您需要的!

我找到了把它包起来的方法。突然间,这个man pacman选项 --sync 变得非常有意义(有点释义):

-S --同步

同步 ie 直接从远程存储库下载并安装软件包里斯,包括所有依赖的化学系...

答案2

有 Linux、Linux 和 Linux,但存储库的管理几乎相同;他们是一个机构或大企业,有很多通向 Intarwebz 的粗管道,这些管道在某处镜像主存储库,因此您可以拥有靠近您的本地存储库,并更快地获取内容。例如:波特兰州立大学托管多个发行版的存储库。 (向下滚动找到戴着维京头盔的企鹅:去维克斯吧!)

Joe User 通常不管理存储库;它已为我们完成,但您可以从存储库中挑选您想要下载的内容。如果你真的愿意,请做好准备,当新版本的发行版到来时,你的服务器会被点击量淹没,你的 Interweb 链接也会被淹没。

但是,本地存储库通常只是决定它们将托管哪些发行版,然后自动脚本刷新内容。你可能会猜到,当莱纳斯推出了一个新的内核,Beaverton(他的 Home 20)和波特兰市中心之间的线路以及 Intertubes 所到的其他地方都变得忙碌。

相关内容