进一步阅读

进一步阅读

我使用的是 pfSense,它使用 FreeBSD 10 的定制基础。pkg -vv显示了以下相关定义:

PKG_DBDIR = "/var/db/pkg";
PKG_CACHEDIR = "/var/cache/pkg";
PORTSDIR = "/usr/ports";
REPOS_DIR [
    "/etc/pkg/",
    "/usr/local/etc/pkg/repos/",
]
Repositories:
    pfSense-core: {
      url             : "pkg+https://pkg.pfsense.org/pfSense_v2_3_2_amd64-core",
      enabled         : yes,
      priority        : 0,
      mirror_type     : "SRV"
    }
    pfSense: {
      url             : "pkg+https://pkg.pfsense.org/pfSense_v2_3_2_amd64-pfSense_v2_3_2",
      enabled         : yes,
      priority        : 0,
      mirror_type     : "SRV"
    }

查看中命名的两个目录REPOS_DIR

  • /etc/pkg包含看起来像默认 FreeBSD.conf 的内容(enabled=yes)。
  • /usr/local/etc/pkg/repos包含不同的 FreeBSD.conf (enabled=no) 以及 pfsense.conf,其中包含 报告的两个存储库定义pkg -vv
  • 还有/usr/local/share/pfSense/pkg/repos一个包含FreeBSD.conf与 pfsense.conf 相同的内容/usr/local/etc/pkg/repos(尽管后者的文件名不同:)pfSense-repo.conf,并且还有一个单独文件中进一步开发存储库的链接pfSense-repo-devel.conf

我正在尝试找出 pkg 选择其中哪一个覆盖其他哪一个的逻辑,特别是因为当给出优先级时,在每种情况下它都是相同的(= 0)。

如果两个文件都存在,文件是否会/usr/local/etc/pkg/*.conf自动覆盖 处的同名文件?/etc/pkg/*.conf如果没有,发生了什么事,pkg 如何选择要关注的存储库?

答案1

该行为实际上都记录在手册中(qv)。 REPOS_DIR从中获取pkg.conf并按给定的顺序处理其目录。每个目录中的文件按字母顺序处理。没有比较文件名的概念。相反,稍后处理的文件会覆盖之前与其冲突的任何内容。

进一步阅读

  • pkg.conf。 §5。 FreeBSD手册。 2015年。

相关内容