我目前面临 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
的很好。
我完全不知道这是什么原因。但我相信这是容器里的东西。
将不胜感激任何帮助。