【问题标题】:What package manager should I use for emacs?我应该为 emacs 使用什么包管理器?
【发布时间】:2014-07-21 14:16:27
【问题描述】:

我多年来一直是 vim 用户,最近开始尝试 emacs。这个编辑器有很多可用的组件,比如邮件客户端、IRC 客户端等。所有这些组件都需要一个包管理器来更新它们,并使它们的处理更容易。

在 vim 上有大量的插件管理器(如 Vundle 或病原体),不同的人使用不同的东西。

另一方面,emacs 包括带有最新版本的 package.el(这是很好的开始),但也有 el-get 和 package.el 包列表非常短。

我应该坚持使用package.el(并且可能使用marmalade 扩展包列表)吗?还是我需要el-get 来进行合理的包管理?

【问题讨论】:

  • 也看看 MELPA:melpa.milkbox.net
  • @legoscia 谢谢你的链接!
  • melpa-stable.milkbox.net 的软件包比它的不稳定的老兄弟要少,但它有健全的版本号和稳定的软件包。就我个人而言,我喜欢 el-get 并将其用于一切,但 package.el 无疑是​​阻力最小的路径。
  • el-get 可以同时包含 ELPA (see the github page) 和 MELPA (see this SO thread),因此它可能是您最灵活的选择。
  • @phils: FWIW:到目前为止,我不得不对 melpa-stable.milkbox.net 持不同意见。出于某种原因,没有我的库在此处列出。他们都在“普通”的MELPA上。然而,它们都是从安全锁定 EmacsWiki 位置上传的。到目前为止,尚不清楚这两个网站的区别,以及涉及到什么“策展”。 (我正在等待唐纳德·柯蒂斯对此的回复。)

标签: emacs elisp package-managers


【解决方案1】:

如果您使用最新的 Emacs 版本,请使用 package.el。并将 MELPA 添加到存储库列表中。

此外,并非所有“包”(或库)都需要包管理器来更新它们并使它们的处理更容易。有很多有用的 Emacs Lisp 代码没有“打包”并上传到 package.el 存储库。

更重要的是,无论您是否使用package.el 来检索和“安装”包,您都应该学习加载、字节编译和使用 Emacs Lisp 代码的基础知识。不要盲目地使用package.el,而不了解Lisp代码。

手动“安装”Lisp 代码的基础知识包括:

  1. 一般来说,您会希望对您使用的库进行字节编译,以获得更好的性能。如果您这样做,请记住以下警告:

    1a。加载定义您使用的任何其他 Lisp 库所需的 Lisp 宏 的任何 源 文件 (*.el)。

    1b。然后字节编译(宏定义库和)使用宏定义库的库。 这很重要。最新版本的宏使用库很可能需要最新版本的宏,如果你编译他们没有先加载最新的宏定义,那么你就是在自找麻烦。

  2. 将您使用的所有库放在您的load-path 中的目录中。换一种说法:将您的初始化文件 (~/.emacs) 中的变量 load-path 设置为一个值,该值包括包含您使用的 Lisp 代码的所有目录。

  3. 通常,您希望在自己的代码中(例如在您的 init 文件中)使用 (require 'foo) 来加载库 foo。

  4. 然而,#3 仅在库foo(文件foo.el)实际提供功能foo:(provide 'foo) 时才有效。如果没有,您可以改用(load-library "foo")。

    (注意这里使用'foo和"foo"之间的区别:第一个是指功能foo;第二个是指文件foo.el和foo.elc。

  5. 最后,在您尝试使用库之前,请帮自己一个忙,看看文件头的Commentary 部分。它通常会告诉您有关使用库的重要信息。即使它没有说一些非常重要的东西,它也可能会说一些有用的东西(例如一两个小费)。

我提到 1-5 是因为我看到太多(不,不是很多,但是太多)新用户只是使用包管理器“安装”东西,而从不看他们正在安装的代码是关于什么的:它是做什么用的,如何使用它等。如果Commentary 中有内容,请阅读它;图书馆作者把它放在那里是为了帮助你。

除此之外,玩得开心!

【讨论】:

  • 感谢您的全面回答!
  • Wilhelm:这是一个非常好的答案。如果它提供了您需要的信息,请考虑接受它,以便将来的用户更容易识别。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-02-10
  • 2018-02-15
  • 2016-10-30
  • 1970-01-01
  • 2018-02-02
  • 2014-02-06
相关资源
最近更新 更多