在哪里可以找到用于 Gentoo 升级的旧 portage 快照?

在哪里可以找到用于 Gentoo 升级的旧 portage 快照?

我想升级 Gentoo 的旧安装(2018)。我尝试安装当前的 portage 快照,但我遇到了(太多)无法解决的包冲突。

因此,我认为解决方案可能是使用旧的 portage 快照以较小的步骤进行升级,例如以两个月为间隔。这样一来,可能发生的冲突应该还是可以控制的。

我发现了一些旧的 portage 快照这里但最大的只有一个月大。我在几个搜索引擎和论坛上搜索了portage快照档案,但我找不到任何东西。

Gentoo 是否维护这样的档案?如果有,我在哪里可以找到它?另外,据我所知,portage不包含包源。那么,包源也存档了吗?

答案1

如果您足够幸运,在更新损坏之前安装git在系统中,您可以:

cd /usr
mv portage portage-recent
git clone https://github.com/gentoo/gentoo portage
cd portage

然后找到最适合您的替代方案来回到过去:

通过回到历史git-log

git log

然后向下翻页或进行搜索(如果您使用 vim,正则表达式可能会有所帮助)并找到接近上次成功更新时间的提交。对我来说,时间大约是 2021 年 3 月,因此我进行了搜索,/Mar [0-9]+ [0-9:]+ 2021直到其相邻的提交也在 2021 年 3 月之前或接近 2021 年 3 月。

一旦找到您喜欢的提交,请使用以下命令检查它

git checkout <commit-hash>

就我而言是

git checkout 70b8ef2605acc363ea1a0347f9df23fa92590847

然后您可以继续升级软件包。然后提前一点提交,依此类推,直到您了解最新情况。

Git-签出数据

此论坛帖子中建议了另一种方法:Portage 历史快照消失的第二篇文章

git checkout $(git rev-list -n 1 --first-parent --before="2021-03-31" master)

那么它应该及时带您到达该部分。

分块返回

假设您发现将 200 次提交返回到 portage 当前点的当前位置是您获得合理工作更新阶段的最佳位置(不要太多,也不要太破坏,也许在主要配置文件升级之前)。然后,您可以首先返回该数量的提交:

git checkout master~200

一旦你全部升级(希望你能找到带有那些旧软件包的镜像!),那么你可以继续前进,比如:

git checkout master~180

检查哪些软件包愿意升级,然后继续。

不要同步!

现在你的 portage 已经被实际的 Gentoo repo 困住了,如果你这样做,emerge --sync它只会用当前数据替换所有数据。相反,假设您想走在前沿,

cd /usr/portage
git fetch
git checkout master #ensure you're back to the branch
git merge --ff-only

如果你从不运行 --sync,你不应该有问题,否则你可能需要重置整个存储库,通常git checkout -- .应该这样做。然后应该merge可以工作。

镜子不见了

大多数镜像不会长期存储旧包/ebuild,因此您可能需要祈祷。此外,在您的系统中,镜像列表应该已过时,并且某些/许多根本无法工作。

如果您不再拥有mirrorselect或不再有一些奇特的工具来为您进行更新,目前似乎可以使用http://distfiles.gentoo.org/.您想将其添加到GENTOO_MIRRORS=中的行中/etc/portage/make.conf

相关内容