Changing the CHOST variable/ja

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

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

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

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

make.confの更新
CHOST 変数の変更を始めるには、まずファイルを編集して CHOST の値を要件を満たすように追加/変更します.

Note that profiles provide a default setting for CHOST ; depending on the situation, it may be necessary to override it in or remove an override in. In any case, the important point is that the effective value changes.

プロファイルのデフォルトとは異なる CHOST 値を使用したい場合には、CHOST_${ABI} の値も同様に更新しなければならないかもしれないことに注意してください. この変数の現在の値は portageq ツールを使って調べることができます:

この値がCHOSTと一致していれば大丈夫です. そうでない場合にはそれも同様に書き換えてください:

パッケージの構築
以下のパッケージを、この順番で再構築します:

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

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

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

Here, binutils is fine - there is one file, and it only contains references to the new CHOST. For gcc, there is a file for both the new and the old CHOST value, so delete the old stale one:

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

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

Time to move on to the directory.

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

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

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

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

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

理論上はこれを行う必要はないはずですが、実際にそうだと100%保証することはできません. 代わりに、問題があると知られているすべてのパッケージを手動で再構築することもできます:
 * CHOSTプレフィックスやヘッダーラッピングを使用しているmultilibパッケージ
 * 設定済みコンパイラーのパスを記憶しているPerl、Pythonおよびその他のツール


 * multilib packages using CHOST prefixing or header wrapping,
 * Perl, Python and other tools that store configured compiler path.

あなたのシステムにあてはまらないパスについては上のコマンドから取り除く必要があるかもしれないことに注意してください.

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

よくある問題
Not so many anymore. Usually this just works, as long as no really exotic change is done. Make sure to not combine the CHOST change with other steps though. Some of the notes below are really old...

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

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

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

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

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