Emacs занимает невероятно много времени, чтобы начать
Вчера я :q
Вим попробую Emacs на некоторое время. Я начал использовать Elisp (который в сто раз лучше, чем VimScript), но даже когда я впервые установил его (через yum
), и ничего не изменилось, потребовалось около 30 секунд, чтобы начать, и до сих пор делает (и графический интерфейс, и -nw
).
Я проверил *Messages*
буфер:
Loading /usr/share/emacs/site-lisp/site-start.d/desktop-entry-mode-init.el (source)...done
Loading /usr/share/emacs/site-lisp/site-start.d/rpmdev-init.el (source)...done
Файлы, кажется, являются определенными для пакета RPM, который я установил. Я пытался изменить их имена, но не было никакой разницы. Это все еще занимает 30 секунд.
Я решил это частично, никогда не выходя из emacs (я только приостанавливаю его) и пытаясь сделать все в нем, но было бы неплохо время от времени открывать два Emacs, тем более что у меня есть склонность использовать функцию разделения моего эмулятора терминала, а не что-то вроде tmux
,
Я понял, что Emacs будет загружаться медленнее, чем Vim, но это выглядит нелепо для новой установки. Кто-нибудь знает, что происходит?
Спасибо!
3 ответа
Файл ПРОБЛЕМЫ Emacs гласит:
*** Emacs startup on GNU/Linux systems (and possibly other systems) is slow.
This can happen if the system is misconfigured and Emacs can't get the
full qualified domain name, FQDN. You should have your FQDN in the
/etc/hosts file, something like this:
127.0.0.1 localhost
129.187.137.82 nuc04.t30.physik.tu-muenchen.de nuc04
The way to set this up may vary on non-GNU systems.
Этот "медленный запуск" обычно происходит из-за тайм-аута, и 30-е годы звучат как раз.
В качестве примечания: поиск DNS, который вызывает это замедление, считался важным / полезным в те дни, когда (почти) все машины имели статический IP-адрес. В настоящее время информация, собранная таким образом, не оправдывает усилия, поэтому начиная с Emacs-25, Emacs не выполняет этот поиск DNS, поэтому этой проблемы просто не должно быть больше.
Хорошо, у меня есть (причудливое и временное) решение. я должен бежать dhclient em1
чтобы получить доступ к Интернету, что заставляет Emacs загружаться за 30 секунд, вероятно из-за некоторого времени ожидания. Итак, уже запустив dhclient em1
Я использую скрипт оболочки для запуска Emacs, который делает следующее:
sudo pkill dhclient
sudo ifconfig em1 down
emacs -nw -daemon 2> /dev/null
sudo ifconfig em1 up
sudo dhclient em1
Это отключает сетевое взаимодействие, запускает Emacs как демон и повторно включает сетевое взаимодействие. Это некрасиво, но пока работает. Если у кого-то есть лучший ответ, я буду рад его услышать. Конечно, em1
должно быть заменено вашим устройством Ethernet (возможно, eth0
, Похоже).
У меня была проблема с улыбкой, когда emacs запускал около 15 секунд. В моем случае причиной был тайм-аут DNS. По какой-то причине в моем общем DNS неудачный обратный поиск (хост 127.0.0.1) занимает около 10 секунд. Замена DNS-сервера на сервер имен Google (8.8.8.8) приводит к почти мгновенному ответу "not found: 3(NXDOMAIN)". В то же время время запуска emacs сократилось до 2 секунд. Спасибо @Stefan, который указал мне на направление проблем с DNS.
Изменить: добавление сервера имен Google в качестве дополнительного NS в Network Manager также делает эту работу. (т.е. когда ваш resolv.conf имеет NS в следующем порядке:
nameserver a.b.c.d
nameserver 8.8.8.8
)