Установленные пакеты emacs в guix дублируются – перечислены дважды – в списке пакетов emacs Explore Packages.

Вопрос или проблема

Я установил guix поверх Debian, затем использовал guix для установки emacs и нескольких пакетов emacs (emacs-discover и emacs-mastodon), что также привело к установке некоторых зависимостей этих пакетов.

Каждый пакет, установленный через guix, отображается дважды в списке встроенного менеджера пакетов в emacs. Для ясности, они не отображаются дважды потому, что доступны в другом репозитории, таком как elpa или melpa. Они вообще не отображались до установки guix и указаны как “внешние” в столбце статуса списка (скриншот прилагается).

Есть ли способ это исправить? Будет очень неприятно иметь много дублирующихся пакетов.
Скриншот из emacs, показывающий дублирующиеся пакеты в списке

Таким образом, оказывается, что guix, во время установки либо emacs, либо пакетов emacs, автоматически обновил $GUIX_PROFILE/etc/profile с этой строкой:

export EMACSLOADPATH=”${GUIX_PROFILE:-/gnu/store/aw9nzpanmzpnf0j3fdh6vlv05d95si6c-profile}/share/emacs/site-lisp${EMACSLOADPATH:+:}$EMACSLOADPATH”

Затем guix автоматически подключает этот скрипт профиля, чтобы обновить пользовательскую среду, чтобы новые установленные пакеты могли быть найдены.

Однако guix подключил профиль дважды (возможно, один раз при установке emacs и один раз при установке пакетов emacs; или, возможно, один раз для каждого пакета emacs, который я установил), что привело к тому, что моя переменная окружения содержала каталог site-lisp дублирующимся в переменной окружения. Инструмент пакетов emacs внутри emacs, похоже, будет счастливо сканировать один и тот же каталог дважды и добавлять записи каждый раз, когда находит пакеты в одном и том же каталоге.

Решение очень простое: выйдите из вашей оболочки, чтобы очистить среду, затем войдите снова, чтобы получить новую оболочку, и переменная окружения будет содержать каталог только один раз.

Ответ или решение

Устранение дублирования установленных пакетов Emacs при использовании Guix

При использовании Guix для установки Emacs и его пакетов на Debian может возникнуть ситуация, когда установленные пакеты отображаются дважды в списке встроенного менеджера пакетов Emacs. Это может вызывать неудобства, особенно при работе с большим количеством пакетов. В данном ответе мы рассмотрим причины данного поведения и предложим решение проблемы.

Причины возникновения проблемы

Как было установлено, Guix при установке Emacs или его пакетов автоматически обновляет файл конфигурации $GUIX_PROFILE/etc/profile, добавляя следующую строку:

export EMACSLOADPATH="${GUIX_PROFILE:-/gnu/store/aw9nzpanmzpnf0j3fdh6vlv05d95si6c-profile}/share/emacs/site-lisp${EMACSLOADPATH:+:}$EMACSLOADPATH"

Эта команда настроена так, чтобы добавить каталог с установленными пакетами в переменную среды EMACSLOADPATH. Однако, если после установки Emacs и пакетов Guix дважды вызывает процесс обновления этой переменной, это приводит к тому, что сам каталог оказывается дублированным в EMACSLOADPATH. В результате Emacs видит одни и те же пакеты дважды и отображает их в списке как "внешние" (external) пакеты несколько раз.

Решение

Устранение дублирования установленных пакетов – это процесс, который можно легко реализовать. Ниже представлены этапы, которые помогут вам решить проблему:

  1. Выйдите из текущей сессии: Выйдите из терминала или завершите сеанс вашей оболочки. Это необходимо для очистки существующих переменных окружения, включая EMACSLOADPATH.

  2. Войдите снова: После выхода перезапустите вашу оболочку. Это обеспечит загрузку конфигураций, в которых каталог с Emacs пакетами будет указан только один раз.

  3. Проверьте переменные окружения: Убедитесь, что переменная EMACSLOADPATH больше не содержит дубликатов. Для этого можно воспользоваться командой:

    echo $EMACSLOADPATH

    Если все сделано правильно, вы должны увидеть путь к директории с пакетами Emacs только один раз.

  4. Перезапустите Emacs: Рекомендуется закрыть и заново запустить Emacs после выполнения вышеперечисленных шагов, чтобы убедиться, что изменения вступили в силу, и дублирующиеся пакеты исчезли из списка.

Заключение

Установка пакетов Emacs с помощью Guix может привести к проблеме дублирования, однако простая перезагрузка оболочки поможет решить ее. Регулярный контроль и очистка переменных окружения могут значительно упростить вашу работу и избежать лишних сложностей. Всегда проверяйте вывод переменных после установки новых пакетов, чтобы убедиться в отсутствии ошибок конфигурации, и оптимизировать свое окружение под конкретные задачи.

Оцените материал
Добавить комментарий

Капча загружается...