什么是打包我的Emacs安装(包和配置)的最佳方式,以便可以快速安装到任何地方?

时间:2014-08-21 15:16:58

标签: emacs

我通常通过登录远程计算机(通常是AWS)来编写代码。我有一个相当大的包列表,我使用的和一个相当大的.emacs.el。虽然我可以在nay远程计算机上快速安装emacs,但我正在寻找一种方法来打包" package"我的emacs并把它放在某处,以便我可以在我登录的任何机器上快速安装它。什么是最好的方法呢?

5 个答案:

答案 0 :(得分:7)

首先,您显然会将所有内容捆绑到源代码控制中(私有文件除外)。 Bitbucket和Gitlab提供私人回购。

您可以看到this wiki以便列出init文件中所有需要的包。 (这实际上是Prelude使用的)

然后我看到了一些选择。

使用Cask

有些使用Cask来管理包依赖,有些则不使用

Cask文件列出了所有依赖项:

(depends-on "cask")
(depends-on "dash")
(depends-on "evil")

使用组织模式

有些人在org-mode中编写配置并通过调用org-babel来加载它,这可以在~/.emacs.d/init.el的一行中执行:

(require 'org)
(require 'ob-tangle)
(org-babel-load-file (expand-file-name "~/.emacs.d/myemacs.org"))

将配置拆分为多个文件

有些将它拆分为多个elisp文件。

这里有一些很好的配置值得灵感来自:

init-elpa.el中,他定义了一个函数,该函数在参数中包含一个包,如果它不存在则安装它:

 (defun require-package (package &optional min-version no-refresh)
    "Install given PACKAGE, optionally requiring MIN-VERSION.
    If NO-REFRESH is non-nil, the available package lists will not be
     re-downloaded in order to locate PACKAGE."
  (if (package-installed-p package min-version)
  t
  (if (or (assoc package package-archive-contents) no-refresh)
  (package-install package)
  (progn
  (package-refresh-contents)
  (require-package package min-version t)))))

并且在每个文件中,他使用:

(require-package 'dired+)

同时提交已安装的软件包

为了使您的配置更快安装,您也可以将已安装的软件包添加到源代码管理中。这样你也可以确保拥有相同的环境。

答案 1 :(得分:5)

我总是建议将整个 ~/.emacs.d置于版本控制之下,包括所有软件包和其他库。

它有点麻烦,也许有点麻烦,但是如果你想保证配置的状态,每次你在新的地方安装它,你需要有一个完整的副本。

使用版本控制是我公司的首选,因为这样可以轻松恢复对软件包的更改等。因此,如果您升级软件包并使Emacs中断,那么只需按照自己的方式将事情恢复原状(并且这样做并不要求你记住他们是怎样的。)

通过这种方法,克隆单个存储库的行为就是获得已知状态的工作系统所需的一切;并且它限制了你对远程源的可用性,一致性和持久性的依赖,只有那个存储库(如果你在本地拥有它,或者甚至随身携带一个副本,你根本就没有远程依赖)。

尽管如此,很多人都不会感到烦恼,也不会遇到任何问题,所以对大多数人来说这不是一个关键点。

答案 2 :(得分:2)

如果你更明确地说明你的意思,那将会很有帮助。"任何"电脑。听起来好像emacs已经安装在机器上,你只想配置emacs来使用你的软件包和设置。您是否可以物理访问可以从记忆棒加载文件的机器或网络?如果没有,您可以访问云存储吗?

我自己的设置如下:

我有一台Windows 7机器在工作,而Linux Mint在家。 我有一个Dropbox帐户,可以保存我所有的emacs配置文件和包。此保管箱帐户已同步到每台计算机上的本地文件夹,并且每台计算机上的.emacs文件只有一行: (load-file"〜/ Dropbox / dotemacs.el") 我经常调整包文件和配置。使用Dropbox可以在所有计算机上同步我的设置。

如果您无法安装Dropbox,您可以像git一样手动同步到云端存储。

答案 3 :(得分:1)

检查https://github.com/redguardtoo/elpa-mirror

在USB记忆棒上创建自己的存储库,它很稳定,因为所有软件包版本都是您已经使用很长时间的版本。

这是最快的方式,基本上你可以在1分钟内在任何机器上进行设置。

答案 4 :(得分:0)

由于我的回购emacs for rails devs的自述文件说它就像将~/.emacs.d内容推送到github和目标机器一样简单:

  1. 使用自制软件安装emacs(您可能使用的是OS X)brew install emacs --HEAD --use-git-head --cocoa --srgb
  2. Git将你的回购克隆到〜/ .emacs.d /
  3. 启动emacs
  4. 如果有魔法,它会使用带有ELPA和橘子酱的内置包管理器,并检查是否安装了包,如果没有,请安装它们。

    适合我和我的盒子&服务器