0

我目前面临 Emacs 无法连接到 MELPA 的问题。在研究这个问题时,我发现这个问题在很多话题中都有讨论。但是,我尝试的每个建议的解决方案都对我不起作用,除此之外,我设置 Emacs 实例的方式让我认为问题的根源可能在其他地方(与 emacs 本身无关)。

因此,让我解释一下我的设置:我有一个 Windows 10 主机,并且我正在尝试在该主机上运行用于 Linux 的 GUI Emacs。我尝试了各种方法(VM、Windows 的 Emacs ......)。目前,我正在尝试在 Docker 容器中运行 Emacs,并在我的主机上使用 XMing 进行 X11 转发。

主机上的 Docker 版本:Docker version 19.03.2, build 6a30dfc 我使用这个docker 容器作为基础。但是我修改Dockerfile了一下以满足我的需要(我应该提到我以前从未使用过 docker):

FROM alpine:edge
MAINTAINER Daniel Guerra <daniel.guerra69@gmail.com>

ARG authorizedKeys=authorized_keys

RUN apk add --update openssh util-linux dbus ttf-freefont xauth xf86-input-keyboard emacs-x11 bash git sudo\
&& rm  -rf /tmp/* /var/cache/apk/*

RUN addgroup alpine \
&& adduser  -G alpine -s /bin/bash -D alpine \
&& echo "alpine:alpine" | /usr/sbin/chpasswd \
&& echo "alpine    ALL=(ALL) ALL" >> /etc/sudoers

RUN cp -r /etc/ssh /ssh_orig
RUN rm -rf /etc/ssh/*

ADD etc /etc
ADD docker-entrypoint.sh /usr/local/bin

VOLUME ["/etc/ssh"]

RUN mkdir -p /home/alpine/.ssh
ADD $authorizedKeys /home/alpine/.ssh/authorized_keys

RUN mkdir -p /home/alpine/.config
RUN git clone https://github.com/minikN/dotemacs.git /home/alpine/.config/emacs/

RUN mkdir -p /home/alpine/.emacs.d
RUN ln -s /home/alpine/.config/emacs/init.el /home/alpine/.emacs.d/init.el
RUN ln -s /home/alpine/.config/emacs/config.el /home/alpine/.emacs.d/config.el
RUN ln -s /home/alpine/.config/emacs/config.org /home/alpine/.emacs.d/config.org

RUN chown -R alpine:alpine /home/alpine/.emacs.d

ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["/usr/sbin/sshd","-D"]

我基本上将我的主机复制authorized_keys到容器中。我这样做是因为我使用的是 Putty,它是 ssh-agent 通过 SSH 连接到机器。

之后,我只需将我的 emacs 配置从我的 GitHub 复制到容器中。您可以在此处找到 emacs 配置。

如果我现在启动容器,通过 SSH 连接到它并启动 emacs,它会在 XMing 中打开。但是它只是挂起(实际上整个容器都挂了),我只看到一个白屏。重新启动容器并运行后,emacs --daemon我可以看到它挂在

alpine-sshdx:~$ emacs --daemon
Contacting host: melpa.org:443

顺便说一句,我检查了几个镜子。melpa.org:443只是最新的尝试。还尝试了 HTTP/HTTPS。

但是做ping 8.8.8.8的很好。

我完全不知道这是什么原因。但我相信这是容器里的东西。

将不胜感激任何帮助。

4

0 回答 0