Changing the CHOST variable/ja

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

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

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

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

Updating make.conf
To start out with the CHOST variable change, edit the file and add/change the CHOST value to suit the requirements.

Please note that if you are planning to use another value of CHOST than the profile default, you may need to update the CHOST_${ABI} variable as well. You can query the current value of these variable via portageq tool:

If this value is equal to your CHOST, you're good. Otherwise, you should override it as well, e.g.:

パッケージの構築
Rebuild the following packages in this order:

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

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

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

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

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

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

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

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

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

次に、すべてが修正されたかどうか検証します:

まだファイルが見つかる場合、続行する前にそれらを探し出すようにします.

変更の仕上げ
ここで、を再度emergeし、にあるを実行する必要があります. 正しいバージョン(現在のもの、ここでは4.1.1)のgccを使用していること、古いアーキテクチャ(ここではi386)を引数として渡していることを確認してください. は新しい CHOST の値に、また はgccのバージョンに置き換えてください. この例では、 CHOST にはi686が当てはまります.

これで、すべてのパッケージを再構築することができます:

In theory, it should not be necessary to do so, but it cannot be 100% guaranteed that this is actually the case. Alternatively, you can manually rebuild all the known problematic packages:
 * multilib packages using CHOST prefixing or header wrapping,
 * Perl, Python and other tools that store configured compiler path.

Note that you may need to remove paths that do not apply to your system from the above invocation.

その他に再構築が必要なパッケージに遭遇したら、このガイドのdiscussion pageを通じて私達にお知らせください.

よくある問題
CHOST 変数の変更と同時にgcc 3.3から4.1にアップグレードする際(とにかくそれはしないでください)、数人のユーザーはやといった、再構築が必要な壊れたパッケージを報告しています:

これは、アップグレードの間に、 CHOST 変数が CTARGET 変数と厳密に一致せず、コンパイラーがシステムはクロスコンパイルを利用中であると推定するために発生します. 結果として、 LDPATH がに挿入されず、このエラーが発生します.

GCCのアップグレード後に再構築が必要なものについては、GCC upgrade guideを参照してください.

まれに、pythonの古いバージョンも破壊されることがあります. これは、に( CHOST とgccのバージョンに応じて変更してください)を追加し、、そしてを実行することによって修復されることがあります. しかしながら、ここに見られるように、こうした状況は避けられるべきです - CHOST とgccは同時に変更しないでください.

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