我正在读一本关于 Linux 的书,这本书不太清楚地解释了当你使用 yum 安装软件包时 Linux 会做什么。
当您运行时yum install packagehere
,linux 做的第一件事是检查/etc/yum.conf
文件以查看软件存储库所在的位置。我/etc/yum.conf
新安装的系统上没有。
既然我没有/etc/yum.conf
,那么第一件事必须是检查/etc/yum.repos.d
文件夹。里面我有fedora.repo
,,,。fedora-cisco-openh264.repo
fedora-updates.repo
fedora-updates-testing-repo
每个文件都有一行以#baseurl 开头。
假设我运行yum install httpd
我如何知道(实际上Linux如何知道)哪个baseurl包含httpd包?它会扫描所有这些吗?
答案1
所有包管理器都以自己的方式执行此操作,但都共享软件存储库的基本通用概念。
通常,包管理器会找到基本 url,下载包及其版本的索引,有时还会包含其他信息(如文件列表、校验和、相对路径等),在索引中查找包,然后通过构造来自 baseurl 的正确 URL 以及它在索引中找到的信息。
答案2
您可以尝试该模式,控制台输出中verbose
最后提到的baseurl
或提到的文件就是所选的模式。*.repo
通常,如果存储库在 XML 元数据中包含所述程序,那么它会根据您的install
命令“找到”该程序。
您可以查看以下响应来了解 yum 内部是如何工作的: https://www.redhat.com/archives/rhl-list/2008-January/msg02246.html