web-dev-qa-db-ja.com

実行中のシステムでFuntooからGentooに移行する

私は今Funtooシステムを持っていますが、Gentooに移行(戻る)したいと思っています。可能であれば、インストール中に使用可能なシステムを維持します(ライブCDを使用して最初から再構築しないでください)。両方のシステムは~AMD64である必要があります。

私はそれを逆にした誰かの古い 説明 を見つけました。私には、手順は次のように聞こえます。

  1. /usr/portage/をgentooportageスナップショットに置き換えます。
  2. Portageのebuildのマニフェストを再生成します。
  3. Portageを再出現させ、emerge --syncを実行します
  4. システムを再構築します(emerge -e @system)。
  5. 必要に応じて残りを再構築します(emerge -uND @world

私は何かが恋しいですか?

プロファイルはどうですか? initスクリプト(ネットワークインターフェイスや構成など)に非互換性がある可能性はありますか? (grubを使用して)起動中にUEFIから問題が発生することを予期する必要がありますか? genkernelに違いはありますか?

4
Tim

さて、まず第一に、あなたは何を失う必要がありますか?それがうまくいかない場合でも、新規インストールを行うことができます。

バックアップ

言うまでもなく、重要なアイテムをバックアップする必要があります。振り返りたい場合に備えて、/etcのアーカイブを作成することもできます。

個人的には、急進的なことを試みるときはいつでも、事前にルートファイルシステムを別のディスクにrsyncします。何かがひどくうまくいかないときはいつでも、私はただrsyncそれを元に戻します;)。マウントされたすべてのパーティションへの再帰を防ぐために、ルートパーティションを別のマウントポイントにマウントします。そして、次のようなものを実行します。

rsync -av --delete /mnt/root/ /mnt/backup

復元するには:

rsync -av --delete /mnt/backup/ /mnt/root

権限、シンボリックリンク、およびファイルの所有権を上下に正しく転送するには、バックアップファイルシステムがLinuxタイプ(FATまたはNTFSではない)であることを確認してください。


個人的に行うことはありませんが、ガイドラインとして以下のオプションを試すことができます。上記のいくつかのコメントは、異なるコンパイラプロファイルを示唆していますが、そのほとんどはmake.confのgccとCFLAGSへのフラグを使用しているだけで、実際の問題は見当たりません。

オプション1

あなたが試すことができるが、個人的な経験はありませんが、それをrepo.confの方法で行うことです。 /usr/gentooのような別のディレクトリを作成し、そこにVanillaGentooポーテージツリーを配置します。

ファイル/etc/portage/repos.conf/gentoo.conf

[DEFAULT]
main-repo = gentoo

[gentoo]
location = /usr/gentoo
sync-type = rsync
sync-uri = rsync://rsync.gentoo.org/gentoo-portage
auto-sync = yes
priority 10

また、Funtooにも同様の何かが存在し、低い優先度である必要があります。 emerge --syncを実行すると、両方のツリーが隣り合って存在します。同じバージョンのパッケージが存在する場合、 優先度 の高いリポジトリが優先されます(理論上)。次のように目的のリポジトリに接尾辞を付けることで、パッケージの選択を強制できます。

emerge sys-devel/gcc::gentoo

この設定を使用すると、Gentooに段階的に移行できます。両方のリポジトリのプロファイルを選択できるので、Gentooプロファイルを選択するときにいくつかのemerge --pretendコマンドを試したり、useflagsなどを試してみたりできます。gccの出現、Gentooツリーからのポーテージなど。 GCCが同じuseflagsで再出現し(make.confを好みに合わせて編集)、同じCFLAGSを維持しているので、おそらくシステムツリーを空にする必要さえありません。

GCCアップグレードガイド 、および/usr/share/portage/config/make.conf.exampleを読みたいと思うかもしれません。

最後に、funtooのrepo.confエントリを削除して、emerge -uND --newrepo @worldを実行できます。

オプション#2

以前、大きなプロファイル変更を行っていたときは、この方法を使用していました。

  1. システムが完全に最新であることを確認し(emerge -uND @world)、@ reserved-rebuildセットを処理し、depclean
  2. エントリを/var/lib/portage/worldからユーザー定義のセットに移動します。これは1つのセットにすることも、整理する場合はセットのカテゴリにすることもできます。たとえば、プロセスの別々の段階で使用できる3つのセットを作成しました。

/ etc/portage/sets/boot

sys-boot/grub
sys-kernel/gentoo-sources
[network tools etc]

/ etc/portage/sets/admin

app-editors/vim
app-portage/gentoolkit
[...]

/ etc/portage/sets/desktop

 # All the rest

この移行後は、/var/lib/portage/worldWord_setsの両方が空のファイルであることを確認してください。

  1. emerge --depcleanを実行して、@worldによってプルされたすべてのパッケージを削除します
  2. 今のところ、/etc/portage/package.useをクリーンアップします。 (後で再び使用する場合は、ファイルをどこかに移動してください。
  3. USE=make.conf行をコメントアウトします
  4. 可能な限り単純なプロファイルにドロップします。 gentooでは次のようになります:default/linux/AMD64/17.0
  5. emerge -uND @world && emerge --depclean Funtooで可能な限り最小の構成になり、競合のリスクが最小になります。
  6. ポーテージツリーを交換して、Gentooのものを使用します。 (おそらくrepos.confにあります)
  7. これにより、最も単純なGentooプロファイルシステムemerge -1 sys-apps/portage Emerge -1 sys-devel/gcc Emerge -e @ systemが得られるはずです。
  8. emerge @bootそして、カーネルやgrubなどを構成するために必要なことを実行します(ハンドブックに従ってください)。これにより、完全に再起動可能なGentooシステムが提供されます。この時点でテストする場合は、再起動します。
  9. 目的のプロファイルを設定し、make.confでuseflagsを再度有効にし、package.useで特定のフラグをパッケージ化します。
  10. emerge -uND @world @admin @desktop && emerge --depclean:これで問題がなければ、FuntooをGentooに正常に転送できました。

非互換性

残りの質問に答えるために;パッケージの再インストール中に、Portageは/etc/内のファイルが元のファイルであるか変更されているかを確認します。インストール後に変更されていない場合、Portageはそれらを置き換えるだけです。 /etc/init.d内のファイルについても同じことが言えます。これらのファイルは、最終的にはすべてパッケージに属します。パッケージを再構築すると、最終的に正しいバージョンが得られるはずです。

変更された設定ファイルはconfig-protectによって保護されます。これらは、etc-updateなどのツールを使用して更新する必要があります。

注意

私はこれが古い質問であり、おそらくもうOPを助けないことを知っています。しかし、その主題は私に興味を持っています。この答えに出くわした誰かが実際に試してみるといいでしょう:)。

1
Tim