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

how to build Emacs from source in Docker Hub? gap between BSS and heap

直到最近,我才能够使用 this recipe 在 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

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

既然你交叉发布,我就交叉回答 :P 恕我直言,交叉发布不好,你应该删除其中一个问题。


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

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=23529

目前,在 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 个图像