Changing the CHOST variable/ja

この文書は、既存のシステムの CHOST 変数を変更する方法について説明します.

はじめに
CHOST の変更は、システムをひどくめちゃくちゃにしてしまう可能性もある重大な事項です - それでは、なぜそのような大破壊をもたらす可能性のあることについてガイドがあるのでしょうか?

たとえば、nptlのみをサポートするglibc 2.4へアップグレードするときに、現在の CHOST がnptlを使用できないi386であることに気づいた場合のように、一定の CHOST の変更が避けられない状況があります. このケースではとりうる選択肢はあまり多くはなく、そして CHOST の変更はその1つです.

これらの手順に従った場合でさえ問題は起こり得ますから、手順はきわめて慎重に読み、かつ実行してください. この例では CHOST 変数はi386からi686へと変更されます. コマンドはそれぞれの状況に合わせて変えてください.

パッケージの構築
CHOST 変数の変更から開始するため、ファイルを編集し、 CHOST の値を必要条件に合うように変更します. それから、以下のパッケージをこの順番で再構築してください:

うまくいっているか確認する
との設定が正常か、またに残ってしまったものがないか、確認します.

との出力は以下のようになっている必要があります:

次に、に古い CHOST への参照がないか確認します:

それらのファイルを削除する前に、更新された CHOST の値を含むファイルを確認しておきましょう:

こちらが正しいファイルのようであり、内には 向けのファイル(この例では)は常に1つだけ存在しているべきなので、誤った参照を含むものは削除しておきます:

についても同様です - もし余分なものがあったら、どちらが古くなったものか見て、削除します. 続いて、の内容を確認します:

これら2つのファイルはここに存在しているはずであり、こちらは大丈夫そうです. ディレクトリへと移動しましょう.

とは良さそうですが、もう1つのは残り物ですから、削除する必要があります.

それでは、環境を更新するため、以下のコマンドを実行します:

Next, verify everything is fixed:

If there are still files found, try to track it down before going on.

Finishing The Change
Now it is necessary to re-emerge and run  which can be found in. Make sure to use the correct gcc version (the current one, 4.1.1 here) and pass the old architecture (i386 here) as argument. Replace  with the new CHOST value, and   with the gcc version. This example assumes a CHOST value applicable to i686.

It is now possible to rebuild all the packages:

In theory, it should not be necessary to do so, but it cannot be 100% guaranteed that this is actually the case.

The following set of packages really need to be rebuilt:

All packages using perl install to the CHOST directory and hence need rebuilding. In case is not available on the system yet, install  first.

Now rebuild all packages that have files installed in any location:

When encountering other packages that need recompiling, please let us know through the discussion page of this guide.

よくある問題
When upgrading from gcc 3.3 to 4.1 at the same time as changing the CHOST variable (please don't do that anyway), a couple of users reported broken packages that need recompiling, such as and :

This happens because during the upgrade, the CHOST variable doesn't exactly match the CTARGET variable value, making the compiler assume that the system is using cross-compiling. As a consequence, LDPATH isn't inserted into, resulting in this error.

Please see the GCC upgrade guide for what needs to be rebuilt after a GCC upgrade.

In some rare cases, this can break old versions of python, too. This may be fixed by adding (change accordingly to the old CHOST and gcc version) to, running  and then. However, as can be seen, this situation needs to be avoided - don't change CHOST and gcc at the same time.

フィードバックしてください
もちろん、フィードバック(動いた、失敗した、あるいはその他の問題に遭遇した、のいずれも)は歓迎します. discussion pageを利用するか、このフォーラムスレッドに投稿してください. このガイドの多くはvapierによるものです、協力に感謝します!