Alpine 3.8.0:安装应用程序,出现错误:“无法为 CONFIG_UNWINDER_ORC=y 生成 ORC 元数据”

Alpine 3.8.0:安装应用程序,出现错误:“无法为 CONFIG_UNWINDER_ORC=y 生成 ORC 元数据”

我正在尝试在全新安装的 Alpine 3.8.0 Standard 上安装 VirtualBox(主机,而不是客户端)。我正在使用 VirtualBox-5.2.12-122591-Linux_amd64.run,从下载http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html在 Linux 平台 > 所有发行版 > 64 位下。

安装程序报告了各种错误,到目前为止我已经通过安装以下软件包解决了这些错误。

  • coreutils(使用 -e 标志获取 readlink 可用)
  • 制作
  • 海湾合作委员会
  • 珀尔
  • linux-headers(这可能是不需要的)
  • linux-vanilla-dev

安装人员还报告:

/opt/VirtualBox/vboxdrv.sh line 501: can't create /etc/udev/rules.d/60-vboxdrv.rules: \
nonexistent directory.

我通过简单地运行解决了这个问题:

mkdir -p /etc/udev/rules.d

每次安装程序失败时,它都会提示运行 /sbin/vboxconfig 以重新启动安装过程。目前,当我这样做时,它会输出:

* service vboxdrv added to runlevel default
* service vboxballoonctrl-service added to runlevel default
* service vboxautostart-service added to runlevel default
* service vboxweb-service added to runlevel default
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: Look at /var/log/vbox-install.log to find out what went wrong.
There were problems setting up VirtualBox.  To re-start the set-up process, run \
/sbin/vboxconfig as root.

/var/log/vbox-install.log 包含:

make V=1 CONFIG_MODULE_SIG= -C /lib/modules/4.14.52-0-vanilla/build SUBDIRS=/tmp/vbox.0 \
SRCROOT=/tmp/vbox.0 -j1 modules
getconf: LFS_CFLAGS: unknown variable
getconf: LFS_LDFLAGS: unknown variable
getconf: LFS_LIBS: unknown variable
Makefile:948: *** "Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y, please install \
libelf-dev, libelf-devel or elfutils-libelf-devel."  Stop.
make: *** [/tmp/vbox.0/Makefile.include.footer:101: vboxdrv] Error 2

即使安装 libelf-dev 也无法解决问题。每https://pkgs.alpinelinux.org/packages,没有 libelf-devel 或 elfutils-libelf-devel 包。

另外,我似乎无法同时安装 elfutils-dev 和 libelf-dev 。如果我安装一个,然后安装另一个,apk 输出:

ERROR: elfutils-dev-0.168-r1: trying to overwrite usr/lib/libelf.so owned by \
libelf-dev-0.8.13-r3.
ERROR: elfutils-dev-0.168-r1: trying to overwrite usr/lib/libelf.a owned by \
libelf-dev-0.8.13-r3.
ERROR: elfutils-dev-0.168-r1: trying to overwrite usr/include/libelf.h owned by \
libelf-dev-0.8.13-r3.
ERROR: elfutils-dev-0.168-r1: trying to overwrite usr/include/gelf.h owned by \
libelf-dev-0.8.13-r3.
ERROR: elfutils-dev-0.168-r1: trying to overwrite usr/include/nlist.h owned by \
libelf-dev-0.8.13-r3.

这是一个问题,因为 linux-vanilla-dev 需要 elfutils-dev,而 /sbin/vboxconfig 又似乎需要 elfutils-dev。如果我在未安装 linux-vanilla-dev 的情况下运行 /sbin/vboxconfig ,则会输出:

...
vboxdrv.sh: Building VirtualBox kernel modules.
This system is currently not set up to build kernel modules.
Please install the Linux kernel "header" files matching the current kernel for adding new \
hardware support to the system.

为了尝试解决这个问题,我:

  1. 卸载了 linux-vanilla-dev。
  2. 安装了 libelf-dev。
  3. 重新安装了 linux-vanilla-dev。

正如预期的那样,linux-vanilla-dev 及其所有依赖项已成功安装,除了 elfutils-dev 之外。我不知道没有安装 elfutils-dev 导致的任何问题,并且我认为安装 libelf-dev 更重要,因为这是 /var/log/vbox-install.log 中的错误消息中引用的包。

尽管如此,当我运行 /sbin/vboxconfig 时,vboxdrv.sh 仍然失败,并显示“无法为 CONFIG_UNWINDER_ORC=y 生成 ORC 元数据,请安装 libelf-dev、libelf-devel 或 elfutils-libelf-devel”。尽管我已经安装了 libelf-dev (或者我相信是这样)。

跑步:

apk info | grep 'libelf-dev'

输出:

libelf-dev

运行 apk fix 会导致 apk 尝试重新安装 elfutils-dev,但失败(由于前面描述的原因),但没有报告其他问题。

我将 VirtualBox-5.2.12-122591-Linux_amd64.run 下载到 Windows 机器上,并使用 7-Zip 打开它并提取 postinst-common.sh (我相信它与 /sbin/vboxconfig 是同一文件)和 vboxdrv.sh 。我没有找到附加它们的方法,但如果有人觉得有帮助,我可以附加它们的内容(总共约 600 行)。

如果我可以提供任何其他信息,请告诉我。我仍在研究这个问题,所以如果我了解更多,我会添加它。我当前的后续步骤是:

  1. 调查 vboxdrv.sh 看看我是否能找到它触发该错误的原因。
  2. 尝试使用 strace。

谢谢你!

编辑:

答案1

尝试安装:apk添加g++

它安装下一个软件包:

(1/3) 安装 musl-dev (1.1.20-r0) (2/3) 安装 libc-dev (0.7.1-r0) (3/3) 安装 g++ (6.4.0-r8)

安装软件包后,尝试再次运行 VirtualBox 安装脚本

答案2

太长了;你需要安装musl-dev.

我正在构建一个内核模块并收到相同的错误消息(Cannot generate ORC metadata for CONFIG_UNWINDER_ORC=y)。我所需要做的就是运行apk add musl-dev它来编译。建议的修复(无论是由我make还是gcc我不知道)是错误的,浪费了你我的时间。elf内核包已经指定了正确的依赖关系-dev(例如linux-virt-devlinux-vanilla-dev)。

相关内容