Gentoo Logo

壊れたportageを手動で修復する

1.  portageを手動で修復する

目的

このセクションでは、emerge sys-apps/portageが実行できない場合に、portageを手動で更新・修復する方法を説明します。 難しくはありませんが、それでも十分慎重に行う必要がありますので、以下のステップに正確に従って下さい(ただし必要ならば常識を適用して下さい)。

注意: 以下の手順を自動化するスクリプトはこちらから入手できます

portageのtarballを入手する

最初のステップでは、portageの最新バージョンのtarballを入手します。以下の文章では例としてportage-2.1.1を使います(これが執筆時点で最新の安定バージョンです)が、できればPortageツリーから入手可能なバージョンに置き換えて下さい。

警告: もし現在インストールしているpythonのバージョンが2.4未満ならば(python -Vで表示されます)、それと互換性のあるportageのバージョンを選択する必要があります。少なくともpython 2.3を使用しているなら、portage-2.1.1.tar.bz2を使って下さい。python 2.2ならば、portage-2.0.51.22.tar.bz2を使って下さい。

portageが動作しなくなってしまった理由にもよりますが、tarballを取得するのにportageが使える可能性が残っていますので、最初のステップとしてemerge --fetchonly sys-apps/portageを実行して下さい。これがうまくいかない場合のみ、以下の手順でtarballを手動取得する必要があります。

コード表示 1.1: wgetでportageのtarballを取得する

# wget -P /usr/portage/distfiles http://distfiles.gentoo.org/distfiles/portage-2.1.1.tar.bz2

以上の手順で、tarballが/usr/portage/distfiles/portage-2.1.1.tar.bz2として準備できます。

インストール済みのバージョンを置き換える

次のステップではtarballをどこか一時的な領域に展開しますが、例えばそれを/root/portage-recoverとすると、コマンドは以下のようになります。

コード表示 1.2: portageのtarballを展開する

# cd /root
# mkdir portage-recover
# cd portage-recover
# tar xfj /usr/portage/distfiles/portage-2.1.1.tar.bz2

ここまで来ればあとは、現在インストールしているpythonとbashのファイルを、tarballのものと置き換えるだけです(ほとんどの場合はということですが)。そのためには以下を実行して下さい。

コード表示 1.3: インストール済みのファイルを置き換える

# cd /root/portage-recover/portage-2.1.1
# cp -R pym bin /usr/lib/portage/

GentooをFreeBSD上で使用しているのでなければ、sedラッパースクリプトを削除したほうが良いでしょう。このスクリプトは、必要ない上に古いバージョンのbashでは問題を引き起こすことで知られています。

コード表示 1.4: sedラッパースクリプトを削除する

# rm -f /usr/lib/portage/bin/sed

注意: portageを意図せず「unmerge」で削除してしまった場合や、もしくはそのほかの理由で/etc/make.globalsがない場合は、cnf/make.globals/etcにコピーして戻して下さい。これをしないと、portageがおかしな挙動を示すかもしれません。

注意: portageの以前のバージョンが2.1未満だった場合は、次のステップに進む前にemerge --metadataを実行して下さい。これは、バージョン2.1以降で使用されている新フォーマットにebuildのmetadataを変換する必要があるためです。portageの以前のバージョンが分からない場合でも、このコマンドを実行してしまって構いません。

これで正常なportageが再びインストールできているはずです。しかしシステムを不整合の無い状態にするために、emerge sys-apps/portageをもう一度すぐに実行して下さい。

emergeを実行しようとして、command not foundというエラーメッセージを受け取った場合は、シンボリックリンクを再作成する必要があります。

コード表示 1.5: emergeへのシンボリックリンクを再作成する

# ln -s ../lib/portage/bin/emerge /usr/bin/emerge

もし上記のステップでうまく行かなかった場合は、portageの破損ではなく、この文書の範疇を超えた他の問題と考えられます。よくある問題の一覧を再度確認し、またbugzillaで問題が報告されていないか見てみて下さい。



印刷

ページの更新日 2007年 5月 31日

要約: このドキュメントは、sys-apps/portageが壊れた際に手動で修復する上で役立つことを目的にしています。

Marius Mauch

平櫛賢二
翻訳

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.