虽然存在数千个Emacs Lisp库,但GNU Emacs,直到版本24.1都没有(内部)包管理器。
我想大多数用户会同意,目前查找,安装并特别保持最新的Emacs Lisp库非常不方便。
让生活更轻松的网页
对于早于24.1的Emacs版本:
一些软件包管理员
并不是没有人尝试过。 (当问到这个问题时,其中一些不存在。)
UPDATE - package.el包含在GNU Emacs中,从版本24.1开始
包已包含在Emacs主干中。 epkg还没有准备好,目前还没有。至少install-elisp,plugin和use-package似乎不再被积极维护了。
我创建了一个包含所有这些包管理器的git repository作为子模块。
一些可能有用的实用程序
包管理器可以使用这些实用程序和/或它们可用于维护包的镜像。
讨论手头的主题
问题(最后)
所以 - 我想知道您在Emacs的包管理器中认为重要/不重要/补充等的内容。
一些想法
我希望得到这些答案
答案 0 :(得分:32)
我还在学习Emacs,所以我没有机会查看软件包管理器,但是一个很棒的功能是告诉用户如果软件包尝试使用它,但它不在他们的系统。例如,我想在服务器上编辑一次PHP文件,然后我尝试了
M-x php-mode
和Emacs都像
M-x php-mode [no match]
应该是什么时候
php-mode available from ftp.gnu.org. install? (y/n)
然后它会为我安装并加载php模式。那会让我的一天在那里。
答案 1 :(得分:28)
从版本控制中自动发布
我很想看到一个标准的,集中的,单个 Emacs包管理器。现在,我把钱花在ELPA上,但还有很长的路要走。
帮助Emacs软件包管理器的最重要的事情就是让发布软件包变得非常简单。在我看来,我希望在中央托管平台(如GitHub )上与版本控制系统(如git )结合使用时发生这种情况。可以让作者轻松发布他们的软件包,并让其他人轻松回馈。
类似于GitHub(以前)如何轻松发布RubyGems,我希望在Emacs包管理器中看到类似的东西。例如,使用“vX.Y.Z”标记您的存储库,并让所有人自动获得您的elisp好处。
使用像GitHub这样的流行后端的额外好处是你会立即获得大量曝光,这有助于推动其成功。
答案 2 :(得分:12)
我最期待的是所有有用的东西,并且效果很好。这需要您(或维护团队)积极地为它打包一切,并做任何涉及的事情 - 通过电子邮件发送每个有用包的作者,等等。
例如,Debian(及其衍生产品:Ubuntu等)之所以如此优秀,是因为您可以愉快地使用您的系统而无需在存储库之外安装某些东西,并且其中的所有内容都经过了全面测试。包管理器的实际功能很重要,但是托管包本身是次要的。
答案 3 :(得分:10)
轻松配置同步:我和许多人一样,在许多不同的计算机和服务器上使用Emacs,其中一些是我自己的,一些不是。如果包管理器有一些我可以从一台计算机转移到另一台计算机的文件,那将是惊人的。然后,在后一台计算机上,包管理器会将我的Emacs带入我喜欢的状态 - 所有安装的包和配置集。结合能够在站点范围内轻松安装(如果拥有root权限)或作为单个用户,我可以在任何地方同步所有Emacsen。
答案 4 :(得分:7)
我几乎肯定最好的解决方案是向ELPA提交更多软件包并向package.el添加多源支持。 Emacs维护者表示他们会考虑在版本24中包含package.el,只要它默认指向FSF存储库。
当然,提交也需要是一个自动化过程;邮寄ELPA维护者的当前方法仅适用于小规模。
答案 5 :(得分:6)
无论如何完成,我认为最重要的是将包提交到存储库应该是微不足道的。与此同时,我们不希望这些软件包立即可用,以防止恶意代码(并且由于许可问题)。除非有基于加密签名的“信任”系统。
也很有用:
某些压缩存档似乎最好能够完成上述某些操作。
到目前为止,改进的ELPA似乎还有很长的路要走。
答案 6 :(得分:3)
我曾经花了一些时间为Emacs编写一个小包管理器。
http://gmarceau.qc.ca/plugin.el
我写道:
插件是我尝试创建一个 Emacs的包管理器。插入 将自动下载Emacs 扩展,将它们解压缩 目录,将该目录添加到 load-path,生成自动加载 注释,并修改您的dot-emacs 文件。自动加载注释是一个 Emacs鲜为人知的特征。一旦 它们是生成的,Emacs扩展 快速和渐进地加载,这 如果你有这么多人,真的很好 像我一样安装扩展程序。
您需要两个库文件才能让它运行,loop-constructs.el和record.el
答案 7 :(得分:3)
我认为iPhone的黑客与我想要的非常接近,Ubuntu的“apt”也是如此。
我希望能够:
我想要一套主要的东西都能很好地工作,并且是推荐的做事方式。然后是一个全局集合,其中所有工作都进入。然后,任何人都可以托管自己的存档。
如果将这些全部绑定到git / svn /那么你可以安装旧版本会很好。通过分叉等等制作自己的补丁....
答案 8 :(得分:2)
除了上面提到的,我还期待像debian和其他存储库这样的东西 - 一套稳定,实用,未经测试的软件包。能够添加我自己的存储库 - 我直接从VCS使用了很多软件包,因此创建自己的软件包可能很有用
答案 9 :(得分:2)
我认为包经理应该从Rubygems中获取很多灵感。我还认为它应该有一个类似Gemcutter的网站。
中央存储库也可能很好(如Emacsmirror)。但是,如果存在收集所有包的Gemcutter等网站,则可能不需要这样做。
我认为这些事情很重要。
所以像Rubygems这样的包管理器有一个像Gemcutter这样的站点和一个像Emacsmirror这样的中央存储库(最好是在Github上因为它的社交编码)会让Emacs真的很好。
总而言之,我认为应该从Rails获取很多灵感,以及Rails如何处理Gems。
答案 10 :(得分:2)
我不知道这个问题多么新鲜......
但我希望看到的模型是CPAN。我也不知道Rubygems,但它听起来与CPAN类似。
CPAN是一个perl归档+库管理系统。当我需要编写需要... FTP或SOAP或JSON或XML或ZIP或...等的perl程序时,我可以运行CPAN包管理器,选择下载所需的包,查看和验证依赖项,然后安装一切。 CPAN被镜像......“无处不在”。
CPAN非常适合我的目的,而类似emacs的东西也很棒。它还支持按需构建C / C ++代码。
这就是我想在emacs中看到的内容。
对要求的进一步评论。
最后,有一种方法可以隔离或组织函数库。分层命名空间。 Emacs的平面命名空间非常过时。这是一种独立的,但补充了包管理的核心功能。我不是一个lisp大师所以我不知道这会有多难;也许已经有办法做到了。
答案 11 :(得分:1)
套餐经理不提供任何我重视w.r.t.具有简单依赖关系的单文件elisp包:从site-lisp
添加和删除从未导致过问题。它的包依赖于外部程序(例如,ispell),多文件包(例如,auctex,org-mode),这些包可能很棘手。无法想到任何具有重要依赖关系的单文件elisp包。
对于这些,缺少包管理器,我希望emacs的elisp-packages能够获得可以集体运行的测试套件,并在发生依赖性故障时提供有用的信息。