Emacs 包,使用 elpa 全局安装与本地安装

Emacs packages, installing globally versus locally with elpa

我运行linux并使用不同的用户名来划分不同的活动。 使用 elpa,我想安装一些包,以便无论用户是谁都可以加载它们,有些包我只想为一个用户加载。

例如,Org-mode 是我希望每个用户都加载的东西。 我可能想要用户 client1 的 C++ 相关包,而不是 ruby 包。 我可能想要用户 client2 的 ruby 相关包,而不是 C++ 包。 可能有一个新的 C++ 编程包,我不想将其包含在严肃的工作中,但想使用用户实验来玩。

它曾经是你放在 site lisp 中的全局内容和你放在 ~ 中某个地方的本地内容,但这似乎不适用于 elpa。

package.el 沿着 package-directory-list 路径查找已安装的软件包(此外 package-user-dir 也是安装软件包的地方)。

所以我建议您安排一个 "global" 用户。然后将所有其他用户更改为包括

(require 'package)
(push "/home/globaluser/.emacs.d/elpa" package-directory-list)

在他们的 ~/.emacs 中。这样,您要为所有用户安装的任何软件包都应按 globaluser.

安装

顺便说一句,攻击向量的另一种方法是区分"installed"和"enabled"。 IE。总是全局安装你的包,然后让每个用户调整它的 package-load-list 以禁用特定的包。

最后,任何仅仅安装和启用(其中 "enabling" 意味着加载包自己的 -autoloads.el)的包最终会干扰正常工作是一个错误(在我的书中),所以还有另一个解决方案就是在全球范围内安装和启用所有软件包。如果使用 C++ 的用户对某些 ruby 相关包感到恼火,则向 ruby 相关包的维护者提交错误报告。