Установить пакеты глобально

10

Это то, что можно / нужно сделать? Например, я часто использую emacs в своей учетной записи пользователя, а иногда и в учетной записи root. При использовании диспетчера пакетов (т. Е. Мармелада или чего-то еще) нужно ли устанавливать одни и те же пакеты отдельно для каждой учетной записи? Мне кажется, что они установлены в вашем домашнем каталоге.

user2237076
источник

Ответы:

7

Как указывает Nsukami, package.el поддерживает общесистемные пакеты. Но, как указывает ваш последующий вопрос, он не предоставляет никакой специальной помощи для установки пакетов в масштабе всей системы.

Один из способов сделать это - использовать что-то вроде:

(setq package-user-dir "/usr/share/emacs/site-lisp/elpa")

в вашей учетной записи root ~/.emacs. Это сделает установленные пакеты пользователя root доступными для всех пользователей (поскольку /usr/share/emacs/site-lisp/elpaобычно они отображаются в значении по умолчанию package-directory-list).

Стефан
источник
Да, это имеет смысл! Отличная помощь, ребята - спасибо.
user2237076
3

Согласно документации:

Значение пакета-каталога-списка равно
("/usr/local/share/emacs/24.4/site-lisp/elpa" "/ usr / local / share / emacs / site-lisp / elpa" "/ usr / share / emacs / 24.4 / site-lisp / elpa "" / usr / share / emacs / site-lisp / elpa ")

Эта переменная может быть рискованной, если используется как локальная переменная файла.

Документация: Список дополнительных каталогов, содержащих пакеты Emacs Lisp. Каждое имя каталога должно быть абсолютным.

Эти каталоги содержат пакеты, предназначенные для всей системы; напротив, package-user-dir содержит пакеты для личного использования.

Вы можете настроить эту переменную.

Эта переменная была введена или ее значение по умолчанию было изменено в версии 24.1 Emacs.

Другая документация :

В дополнение к package-user-dir, Emacs ищет установленные пакеты в каталогах, перечисленных в package-directory-list. Эти каталоги предназначены для системных администраторов, чтобы сделать пакеты Emacs доступными для всей системы; Сам Emacs никогда не устанавливает туда пакеты.

Поэтому для широкой установки на сайте я предлагаю вам, как системному администратору, вручную установить пакеты в / usr / local / share / emacs / site-lisp / elpa. Или вы также можете сделать как предложено @Stefan

Нсуками _
источник
Спасибо за ответ. Я могу подтвердить, что при проверке значения package-directory-list это то, что вы описали, и действительно, package-user-dir - это папка .emacs.d / elpa, где в данный момент устанавливаются пакеты. Поэтому я спрашиваю, нужно ли мне переопределить package-user-dir, чтобы он указывал на глобальное местоположение, или, например, при использовании «Mx package-install», как я могу сказать, что я хочу установку на весь сайт?
user2237076