致命错误:卸载 sys-devel/binutils - emerge 不再工作

致命错误:卸载 sys-devel/binutils - emerge 不再工作

三周前我清理了我的系统并犯了一个致命的错误。好吧,我真的不知道为什么,但我卸载了系统开发/binutils

当我认识到错误后,我尝试重新出现,但它不起作用。下一步是从 Gentoo 下载 stage3 并sys-devel/binutils从那里复制到本地树。
没用。

当我尝试出现类似的东西时x11-apps/xinput,我收到以下信息:

出现的输出:

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)

来自 /usr/bin/as 的 ldd:

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)

使用:

  • 系统开发/binutils-2.25.1-r1
  • 系统开发/gcc-4.9.3

有什么建议要做吗?有什么提示吗?有什么想法要解决吗?让我知道!

答案1

复制sys-devel/binutils并没有解决您的问题,因为这只是定义binutils.它不起作用,因为您需要该包来构建任何东西,正如您已经意识到的那样。您需要做的是复制该包中的文件。文件和目录是:

/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

是的,凯西是对的。简短(但不快)的方法是:

从下载当前的 stage3https://www.gentoo.org/downloads/- 为您的架构使用正确的 stage3

将其解压缩/解压到 /:

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

更新环境:

env-update
source /etc/profile

再次出现(这将需要很多时间)

emerge -avqeDN @world

重启

reboot

我希望它会有所帮助。

相关内容