Changing the CHOST variable/ja

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

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

CHOST の変更が避けられない状況はいくつかあります. そうした状況のほとんどは、通常の操作では必要になることはないはずです (新しいアーキテクチャへのブートストラップを伴うのですから). しかしながら時として、プロファイルの切り換え、例えば MIPS マシンを 17.0 プロファイルから 23.0 プロファイルにアップグレードした場合は、設定を共通の標準に適合させるために、 CHOST の変更を伴うことがあります.

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

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

プロファイルは CHOST のデフォルト設定を提供していることに注意してください; 状況に応じて、 内でそれを上書きしたり、 内の上書き設定を削除したりする必要があるかもしれません. どちらの場合でも、実効的な値が変更されていることが重要です.

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

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

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

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

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

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

ここで、binutils に関しては問題ありません - 新しい CHOST への参照を含む 1 ファイルだけが存在しています. gcc に関しては、新旧の CHOST 値それぞれに対応するファイルが存在しているので、古いほうを削除してください:

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

古い CHOST を含む古いファイル、config-mips64-unknown-linux-gnu があるので、これを削除してください.

ディレクトリへと移動しましょう.

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

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

次に、/etc/env.d 内のすべてが修正されたかどうか検証します. まだファイルがある場合は、次に進む前に原因を調査してみてください.

変更の仕上げ
ここで を再度 emerge する必要があります:

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

理論上はこれを行う必要はないはずですが、実際にそうだと 100% 保証することはできません. 代わりに、問題があると知られているすべてのパッケージを手動で再構築することもできます:


 * CHOST プレフィックスやヘッダーラッピングを使用している multilib パッケージ
 * 設定済みコンパイラーのパスを記憶している Perl、Python およびその他のツール

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

その他に再構築が必要なパッケージに遭遇したら、このガイドの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 のアップグレード後に再ビルドが必要なものについては を参照してください.

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

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