虽然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,你有两种选择:
你可以破坏portage系统,
a) 力
rsync
的行为,b) hack
emerge
以便文件列表将始终包含带校验和的 ebuild 以及c) 构建一些东西以确保所有校验和始终存在并且正常,包括文件列表的校验和
d) 提出一个一致的系统来保留您的特殊 ebuild,但删除旧的、已弃用的和有缺陷的 ebuild,以便您将拥有一个稳定且可维护的操作系统
您可以在 Portage 系统中进行操作,该系统允许您通过覆盖的方式修改 Portage 树。
你显然有一个xy问题。您声称您希望保留一些重要软件的电子版本。但您不是在问如何做到这一点,而是在问如何修改emerge 使用的工具的行为,emerge 是portage 的一个工具。
人们可以将这个图扩展到 wxyz 问题,w 是你的实际问题,你沿着 x (portage) 跑,通过 y (emerge),最后在 z (rsync) 处撞到墙上。是时候退后几步了。
其他人也有与您现在相同的意图(保留旧的 ebuild)。有一种有效且记录在案的方法可以实现该目标,而不会弄乱整个系统。我建议你走那条路。