Gentoo(2018)の以前のインストールをアップグレードしたいです。現在Portage Snapshotをインストールしようとしましたが、未解決のパッケージの競合が多すぎます。
だから私は、古いPortageのスナップショットを使用して2ヶ月間隔でより小さなステップにアップグレードすることが解決策になると思いました。このようにして、可能な競合を依然として制御できる必要があります。
古いPortageスナップショットが見つかりましたここところが一番年上の子供は生まれてから一ヶ月しかできませんでした。複数の検索エンジンとフォーラムでPortage Snapshotアーカイブを検索しましたが、何も見つかりませんでした。
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 - データチェックアウト
このフォーラムの投稿では、別のアプローチを提案します。Fortageの記録スナップショットの消失に関する2番目の記事
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リポジトリに閉じ込められています。これにより、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