Emacs软件包,使用elpa在全球安装与本地安装

Emacs软件包,使用elpa在全球安装与本地安装,emacs,elpa,Emacs,Elpa,我运行linux并使用不同的用户名来划分不同的活动。 使用elpa,我希望安装一些软件包,以便无论用户是谁都能加载这些软件包。我希望只为一个用户加载一些软件包 例如,我希望每个用户都能加载组织模式。 C++相关的包,我可能想要的用户cli 1,但不是Ruby包。 我可能需要Ruby相关的软件包来为用户clipse 2,而不是C++包。 可能有一个新的C++程序包,我不想包含在严肃的工作中,但是想用用户实验来玩。 它过去是放在站点lisp中的全局内容和放在某处的本地内容~,但这似乎不适用于elpa

我运行linux并使用不同的用户名来划分不同的活动。 使用elpa,我希望安装一些软件包,以便无论用户是谁都能加载这些软件包。我希望只为一个用户加载一些软件包

例如,我希望每个用户都能加载组织模式。 C++相关的包,我可能想要的用户cli 1,但不是Ruby包。 我可能需要Ruby相关的软件包来为用户clipse 2,而不是C++包。 可能有一个新的C++程序包,我不想包含在严肃的工作中,但是想用用户实验来玩。
它过去是放在站点lisp中的全局内容和放在某处的本地内容~,但这似乎不适用于elpa。

package.el沿着
程序包目录列表
路径查找已安装的程序包(另外还有安装程序包的
程序包用户目录

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

(require 'package)
(push "/home/globaluser/.emacs.d/elpa" package-directory-list)
在他们的
~/.emacs
中。这样,您要为所有用户安装的任何软件包都应该由
globaluser
安装

顺便说一句,攻击向量的另一种方法是区分“已安装”和“已启用”。也就是说,始终在全局范围内安装软件包,然后让每个用户调整其
软件包加载列表
,以禁用特定软件包

最后,任何仅仅安装和启用(其中“启用”意味着加载包自己的-autoloads.el)的包都会干扰正常工作,这是一个bug(在我的书中),因此另一个解决方案是只在全局范围内安装和启用所有包。如果使用C++的用户对一些ruby相关的软件包感到恼火,那么向ruby相关软件包的维护人员提交一份bug报告