В настоящее время я сталкиваюсь с проблемой невозможности Emacs подключиться к MELPA. Исследуя эту проблему, я обнаружил, что эта проблема обсуждается во многих темах. Однако каждое предложенное мной решение не сработало, кроме того, способ, которым я настроил свой экземпляр Emacs, заставляет меня думать, что корень проблемы может быть где-то в другом месте (не связанный с emacs).
Итак, позвольте мне объяснить мои настройки: у меня есть хост Windows 10, и я пытаюсь запустить графический интерфейс Emacs для Linux на этом хосте. Я пробовал различные методы (виртуальные машины, Emacs для Windows, ...). В настоящее время я пытаюсь запустить Emacs внутри контейнера Docker с пересылкой X11 с XMing на моем хосте.
Версия Docker на хосте: Docker version 19.03.2, build 6a30dfc
Я использую этот контейнер докера в качествебаза. Однако я немного изменил Dockerfile
в соответствии со своими потребностями (я должен отметить, что никогда раньше не работал с докером):
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
работает просто отлично.
Я абсолютно не знаю, в чем причина этого. Но я верю, что в контейнере что-то есть.
Буду признателен за любую помощь.