1

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

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

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

4

1 回答 1

3

package.el 沿package-directory-list路径查找已安装的软件包(另外,安装软件包的package-user-dir位置)。

所以我建议你安排一个“全球”用户。然后将所有其他用户更改为包括

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

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

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

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

于 2016-03-31T13:20:23.637 回答