有没有办法防止emerge --sync从portage树中删除文件?

有没有办法防止emerge --sync从portage树中删除文件?

虽然PORTAGE_RSYNC_OPTS选项make.conf允许更改 rsync 选项,但从--delete中删除会导致emerge失败。我认为它评论了丢失的 md5 缓存条目等。

我想保留旧的 ebuild 文件比上游 portage 树保留的时间长一些。

答案1

这个 ebuild 从主树中删除是有原因的。如果您的目标是保留 ebuild,因为您希望在从主树中删除它们后能够构建它们,那么我建议您创建一个本地覆盖并从中提取已删除的 ebuild来源.gentoo.org

答案2

回到过去,会有 portage 树的存储库,您可以根据自己的喜好克隆/签出它们。在这些存储库中,您始终能够取出旧的 ebuild。由于 portage/gentoo 将清单和校验和放在各处,因此上游的 ebuild 不希望成为 portage 树的一部分。仅作为叠加层。

我为你用谷歌搜索并找到了关于超级用户 SE 的这个问题它告诉您如何进行覆盖,并且还包含指向 portage CVS 存储库的链接。

更多细节:

你没有使用rsync,你正在使用emerge前者被后者使用,这使得它一部分实际上,出现了一部分搬运,这是您真正用来管理(不仅仅是复制!)您的包和包信息的。通过查看,rsync您正在查看 portage 的相当深入的细节,并且您不能仅仅更改该细节。相反,你必须考虑整个系统。这就是为什么仅仅调整rsync的行为永远不会达到您想要的效果并会导致emerge.

portage您正在使用的系统的另一部分是校验和。每个文件都需要有一个校验和。当您运行时,emerge --sync您不仅复制和删除 ebuild,还同步 portage 树中的文件列表及其相应的校验和。在上游被删除并因此从 Portage 树中删除的文件也会从 Portage 树内的文件列表中删除(因为它们不再是 Portage 树的一部分)。

这就是失败的原因:通过删除,--delete您最终会在 portage 树中得到没有可用校验和的文件。但是,如上所述,校验和是系统的一部分,因此您需要它们。

文件列表上还有一个校验和,可能还有一个或另一个附加校验和,因此绕过它可能很乏味。

如果你想保留旧的 ebuild,那些维护者认为删除是个好主意的 ebuild,你有两种选择:

  1. 你可以破坏portage系统,

    a) 力rsync的行为,

    b) hackemerge以便文件列表将始终包含带校验和的 ebuild 以及

    c) 构建一些东西以确保所有校验和始终存在并且正常,包括文件列表的校验和

    d) 提出一个一致的系统来保留您的特殊 ebuild,但删除旧的、已弃用的和有缺陷的 ebuild,以便您将拥有一个稳定且可维护的操作系统

  2. 您可以在 Portage 系统中进行操作,该系统允许您通过覆盖的方式修改 Portage 树。

你显然有一个xy问题。您声称您希望保留一些重要软件的电子版本。但您不是在问如何做到这一点,而是在问如何修改emerge 使用的工具的行为,emerge 是portage 的一个工具。

人们可以将这个图扩展到 wxyz 问题,w 是你的实际问题,你沿着 x (portage) 跑,通过 y (emerge),最后在 z (rsync) 处撞到墙上。是时候退后几步了。

其他人也有与您现在相同的意图(保留旧的 ebuild)。有一种有效且记录在案的方法可以实现该目标,而不会弄乱整个系统。我建议你走那条路。

相关内容