web-dev-qa-db-ja.com

致命的な間違い:アンインストールされたsys-devel / binutils-emergeはもう機能しません

3週間前にシステムをクリーンアップし、致命的なミスを犯しました。理由はよくわかりませんが、アンインストールしましたsys-devel/binutils

間違いを認識した後、再出現を試みましたが、機能しません。次のステップは、Gentooからstage3をダウンロードし、そこからローカルツリーにsys-devel/binutilsをコピーすることでした。
動作しませんでした。

x11-apps/xinputのようなものを出現させようとすると、次のように表示されます。

emergeからの出力:

checking whether the C compiler works... no
configure: error: in `/var/tmp/portage/x11-apps/xinput-1.6.2/work/xinput-1.6.2_build':
configure: error: C compiler cannot create executables

emergeからのconfig.log:

configure:3372: checking whether the C compiler works
configure:3394: x86_64-pc-linux-gnu-gcc -m32 -march=core-avx-i -mtune=core-avx-i -O2 -pipe  -Wl, -O1 -Wl, --as-needed conftest.c  >&5
x86_64-pc-linux-gnu-gcc: internal compiler error: Illegal instruction (program as)

ldd from/usr/bin/as:

linux-vdso.so.1 (0x00007ffee41b9000)
libopcodes-2.25.1.so => /usr/lib64/binutils/x86_64-pc-linux-gnu/2.25.1/libopcodes-2.25.1.so (0x00007f2045ff8000)
libbfd-2.25.1.so => /usr/lib64/binutils/x86_64-pc-linux-gnu/2.25.1/libbfd-2.25.1.so (0x00007f2045cd3000)
libz.so.1 => /lib64/libz.so.1 (0x00007f2045abd000)
libc.so.6 => /lib64/libc.so.6 (0x00007f2045722000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f204551e000)
/lib64/ld-linux-x86-64.so.2 (0x00007f204637f000)

使用:

  • sys-devel/binutils-2.25.1-r1
  • sys-devel/gcc-4.9.3

何か提案がありますか?ヒントがありますか?修正するアイデアがありますか?教えてください!

3
am1

sys-devel/binutilsをコピーしても問題は解決しませんでした。これは、binutilsのビルドとインストールのプロセスを定義するebuildにすぎないためです。あなたが気付いたように、何かを構築するためにそのパッケージが必要なので、それは機能しません。代わりに行う必要があるのは、そのパッケージの一部であるファイルをコピーすることです。ファイルとディレクトリは次のとおりです。

/etc/env.d/binutils/x86_64-pc-linux-gnu-2.25.1
/usr/lib64/binutils/x86_64-pc-linux-gnu/*
/usr/share/binutils-data/x86_64-pc-linux-gnu/*
/usr/x86_64-pc-linux-gnu/binutils-bin/*

これらのファイル/ディレクトリをステージ3のtarballからライブシステムに(再帰的に)コピーします。その後、env-updateを実行し、ログアウトして再度ログインするか、source /etc/profileを実行して、更新された環境をロードします。動作することを確認し、その後最初に行う必要があるのは、そのパッケージを適切にビルドしてワールドファイルに記録するためのemerge binutilsです。

それでも問題が発生しない場合は、他のパッケージでこのプロセスを繰り返す必要があります。最悪の場合、ステージ3のビルドから/usr/binの階層をコピーできます。その場合は、emerge --syncemerge -e worldをフォローアップしてすべてを再構築することをお勧めします。幸運を。

2
casey

はい、ケーシーは正しいです。短い(ただし迅速ではない)方法は次のとおりです。

現在のstage3を https://www.gentoo.org/downloads/ からダウンロードします-アーキテクチャに適したstage3を使用します

/に解凍/解凍します。

xz --decompress stage3-*.xz
tar -xvf stage3*.tar -C /

更新環境:

env-update
source /etc/profile

再び出現します(これには多くの時間がかかります)

emerge -avqeDN @world

リブート

reboot

お役に立てば幸いです。

0
dmw