Использование package.el

Теперь, когда архивы и их приоритеты настроены, пришло время научиться работать с package.el.

Установка

Для установки пакета:

  1. Обновите список доступных пакетов с помощью команды package-refresh-contents.

  2. Выполните команду package-install.

    В минибуфере будет выведено приглашение ко вводу названия пакета:

    Install package:
  3. Введите название нужного пакета и нажмите RET.

    GNU Emacs подключится к нужному архиву, загрузит из него код пакета и распакует в каталог ~/.emacs.d/elpa/. При необходимости также будут загружены и установлены зависимости.

Удаление

Некоторые пакеты нельзя удалить средствами GNU Emacs:

  • встроенные пакеты;

  • пакеты, установленные с помощью пакетного менеджера ОС;

  • пакеты, от которых зависит хотя бы один другой пакет.

Для удаления пакета:

  1. Выполните команду package-delete.

    В минибуфере будет выведено приглашение ко вводу названия пакета:

    Delete package:
  2. Введите название ненужного пакета и нажмите RET.

  3. Если удаляемый пакет является зависимостью другого пакета, GNU Emacs напишет его название. В этом случае придётся сначала удалить зависимый пакет.

Обновление

Чтобы обновить установленные пакеты, выполните команду package-upgrade-all. GNU Emacs проверит содержимое архивов, и если найдёт у вас пакеты, которые можно обновить, предложит это сделать. Подтвердите выполнение операции и перезапустите GNU Emacs.

Часто нет необходимости перезапускать редактор. Однако, иногда без этого он начинает вести себя странно. Например, выдаёт ошибки при вызове команд, которые точно работали в предыдущей версии пакета.

Семь бед — один reset! Точнее, перезапуск редактора.

Интерактивный режим

Пакет package.el позволяет управлять пакетами в интерактивном режиме.

Чтобы открыть список пакетов, выполните команду package-list-packages.

У команды package-list-packages есть псевдоним — list-packages.

package-list-packages автоматически выполняет команду package-refresh-contents. Понадобится некоторое время, чтобы загрузить из архивов новые версии списков доступных пакетов. Во время этого процесса в строке статуса будет выводиться надпись "Loading…​".

Когда список пакетов будет загружен, в буфере *Packages* отобразится таблица с несколькими колонками:

  • безымянная колонка, в которой будет выводиться маркер назначенного действия;

  • Package — название пакета;

  • Version — версия пакета;

  • Status — состояние пакета;

    • available — пакет доступен для установки;

    • installed — пакет уже установлен с помощью менеджера пакетов;

    • dependency — пакет установлен как зависимость другого пакета;

    • build-in — встроенный пакет;

    • external — пакет установлен с помощью сторонних средств, например, менеджера пакетов операционной системы;

    • incompat — пакет несовместим с используемой версией GNU Emacs;

    • new — пакета раньше[1] не было, а теперь он появился;

  • Archive — архив, в котором находится указанная версия пакета;

  • Description — краткое описание пакета на английском языке.

Для работы со списком используйте указанные в таблице сочетания и последовательности:

Таблица 1. Действия над пакетами
Сочетание Действие Метка

n

Перейти к следующему пакету

 — 

p

Перейти к предыдущему пакету

 — 

i

Отметить пакет как устанавливаемый

I

d

Отметить пакет как удаляемый

D

U

Отметить пакет как обновляемый

U

u

Снять метку, если она установлена

 — 

RET

Показать краткую информацию о пакете. Информация выводится в отдельном окне. Чтобы закрыть его, нажмите C-x 1

 — 

w

Открыть веб-страницу пакета в браузере

 — 

/ /

Сброс фильтра пакетов

 — 

/ n

Фильтрация списка пакетов по названию

 — 

/ d

Фильтрация списка пакетов по описанию

 — 

/ N

Фильтрация списка пакетов по названию или описанию

 — 

/ a

Фильтрация списка пакетов по названию архива

 — 

/ k

Фильтрация списка пакетов по ключевым словам

 — 

/ m

Фильтрация списка пакетов по наличию маркера

 — 

/ s

Фильтрация списка пакетов по статусу

 — 

/ u

Фильтрация списка пакетов по возможности обновления

 — 

/ v

Фильтрация списка пакетов по версиям

 — 

q

Закрыть буфер *Packages*

 — 

Пример работы со списком пакетов

Допустим, мы хотим установить несколько пакетов:

  • doom-themes;

  • markdown-mode;

  • nerd-icons.

Мы можем пойти двумя путями:

  • Обновить список доступных пакетов с помощью package-refresh-contents, а затем три раза вызвать package-install.

  • Открыть список доступных пакетов с помощью package-list-packages, найти нужные пакеты, отметить их, а затем запустить установку.

Очевидно, что при массовой установке пакетов второй способ предпочтительнее[2].

Давайте прямо сейчас установим несколько пакетов, используя второй способ:

  1. Выполните команду package-list-packages и дождитесь обновления списка доступных пакетов.

  2. Найдите строки с нужными пакетами.

    Пакеты в буфере *Packages* упорядочены по статусу и алфавиту, но также вы можете использовать для поиска фильтры. Например, чтобы найти пакет doom-themes, нажмите / n doom RET. Для сброса фильтра нажмите / /.

  3. Чтобы отметить пакет как устанавливаемый, переместите курсор к соответствующей строке и нажмите i. В первой колонке появится метка I.

  4. Отметьте все нужные пакеты.

  5. Для запуска выполнения назначенных операций нажмите x.

    В строке статуса будет выведен запрос на подтверждение:

    Packages to install: 3 (nerd-icons-0.1.0 markdown-mode-2.6 doom-themes-2.3.0).  Proceed? (y or n)
  6. Нажмите y.

    GNU Emacs запустит установку пакетов. Будет открыто новое окно, в котором отобразится ход компиляции кода пакетов.

    Когда установка пакетов будет закончена, в строке статуса будет выведено сообщение:

    Operation [ Install 3 ] finished
  7. Чтобы закрыть буфер *Packages*, нажмите q.

    Перезапускать GNU Emacs нет необходимости — все установленные пакеты готовы к работе. Чтобы убедиться в этом, выполните команду load-theme, указав название темы doom-molokai.


1. Во время предыдущего выполнения package-refresh-contents.
2. Чуть позже разберёмся с автоматической установкой пакетов. Не торопите события.