问题:如何在 Docker Hub 中从源代码构建 Emacs? BSS 和堆之间的差距

直到最近,我已经能够使用这个配方从 docker 容器中的源代码构建 emacs。但是截至上周,我所有的构建都失败了

Warning: Your system has a gap between BSS and the
heap (32188607 bytes).  This usually means that exec-shield
or something similar is in effect.  The dump may
fail because of this.  See the section about
exec-shield in etc/PROBLEMS for more information.

我读过etc/PROBLEMS对我来说没有任何意义。有谁知道如何为 docker 容器解释这一点,以及我可以做些什么来让 emacs 在hub.docker.com上再次构建?

我试过了

cat 0 > /proc/sys/kernel/exec-shield

但我认为这不是真正的问题,它不存在于容器中。

  • 交叉发布到https://emacs.stackexchange.com/questions/22665

  • 上游错误报告https://github.com/docker/docker/issues/22801

解答

由于您交叉发布,我交叉回答:P 恕我直言交叉发布不好,您应该删除其中一个问题。


这个问题也在这里得到解答(因为你已经找到了我的 github 错误报告):

https://debbugs.gnu.org/cgi/bugreport.cgi?bugu003d23529

目前,在 emacs 构建系统发生变化之前,可能会一直如此,唯一有效的解决方案是:

  • 不要使用 Dockerfile 构建,而是在具有允许个性系统调用的 seccomp 配置文件的运行容器中构建。例如:

docker run --rm -it --security-opt seccomp=unconfined emacs-builder-image

  • 在构建之前禁用 /proc/sys/kernel/randomize_va_space:

echo 0 > /proc/sys/kernel/randomize_va_space; docker build .

我在https://hub.docker.com/r/silex/emacs维护 docker 镜像

Logo

云原生社区为您提供最前沿的新闻资讯和知识内容

更多推荐