Make 无法在 Alpine Linux 容器中以 root 身份运行 mkdir

问题描述

所以,我正在尝试在 Alpine Linux Docker 容器中构建 musl-libc。 configure 脚本成功了,但是 make 立即停止,因为它不能运行 mkdir:

mkdir -p lib
make: mkdir: Operation not permitted
make: *** [Makefile:96: lib] Error 127

使用 strace,我可以看到它在检查对各种 mkdir 符号链接的访问权限时获取 EPERM,因此它实际上从未实际运行命令本身:

faccessat2(AT_FDCWD,"/usr/local/sbin/mkdir",X_OK,AT_EACCESS) = -1 EPERM (Operation not permitted)
faccessat2(AT_FDCWD,"/usr/local/bin/mkdir","/usr/sbin/mkdir","/usr/bin/mkdir","/sbin/mkdir","/bin/mkdir",AT_EACCESS) = -1 EPERM (Operation not permitted)

我不知道这是为什么。我以 root 身份运行 make,并且 /bin/busyBox 无论如何都为所有用户设置了可执行位。我可以从命令行很好地创建目录。这是怎么回事,我该如何解决

编辑: 根据要求,这是我正在使用的 Dockerfile:

FROM alpine

ENV UTILS='vim tmux gdb strace git mandoc'
ENV DEPS='gcc make'

RUN apk update && apk add $DEPS $UTILS
ADD musl-src /musl-libc
ENV NPROC=6
RUN cd musl-libc && ./configure --prefix=/usr --enable-debug && \
    make -j$NPROC
RUN cd musl-libc && make install

需要 ./musl-src 中的 musl 源。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)