我通常通过登录远程计算机(通常是AWS)来编写代码。我有一个相当大的包列表,我使用的和一个相当大的.emacs.el。虽然我可以在nay远程计算机上快速安装emacs,但我正在寻找一种方法来打包" package"我的emacs并把它放在某处,以便我可以在我登录的任何机器上快速安装它。什么是最好的方法呢?
答案 0 :(得分:7)
首先,您显然会将所有内容捆绑到源代码控制中(私有文件除外)。 Bitbucket和Gitlab提供私人回购。
您可以看到this wiki以便列出init文件中所有需要的包。 (这实际上是Prelude使用的)
然后我看到了一些选择。
有些使用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和目标机器一样简单:
brew install emacs --HEAD --use-git-head --cocoa --srgb
如果有魔法,它会使用带有ELPA和橘子酱的内置包管理器,并检查是否安装了包,如果没有,请安装它们。
适合我和我的盒子&服务器