【问题标题】:Whats the best way to package my Emacs installation (packages and config) so that it can quickly be installed anywhere?打包我的 Emacs 安装(包和配置)以便它可以快速安装在任何地方的最佳方法是什么?
【发布时间】:2014-09-14 01:09:53
【问题描述】:

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

【问题讨论】:

  • A.不要使用 .emacs,使用 .emacs.d/init.el。 B. 在 github、bitbucket 等上托管您的 .emacs.d。C. 我建议使用 use-package,它将允许您配置和自动安装软件包。我有这样的配置设置。在新机器上我需要做的就是克隆我的 .emacs.d 并启动 emacs。在第一次启动时,我的所有包都将通过 use-package 自动安装和编译。 stackoverflow.com/questions/21064916/…
  • 这里有一些很好的答案。根据您的需要,大量使用 TRAMP 也可能会有所帮助。不要在每台机器上安装 Emacs,而是将其安装在本地机器上,然后通过 SSH、FTP、Windows 共享、sudo 和其他方式或以上方式的组合远程编辑文件。还支持多跳。

标签: emacs


【解决方案1】:

首先,您显然会将所有内容捆绑到源代码管理中(私有文件除外)。 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+)

同时提交已安装的包

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

【讨论】:

    【解决方案2】:

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

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

    使用版本控制是我坚定的偏好,因为这使得恢复对包的更改等变得微不足道。因此,如果您升级包并且 Emacs 中断,只需一步即可将其恢复原状(这样做不需要你记住他们是怎样的)。

    使用这种方法,克隆单个存储库的操作是获得处于已知状态的工作系统所需的全部内容;并且它将您对远程源的可用性、一致性和持久性的依赖限制在一个存储库中(如果您在本地拥有它,或者甚至随身携带一份副本,那么您根本就没有远程依赖关系)。

    也就是说,很多人不会打扰,也不会遇到任何问题,所以对大多数人来说这不是关键点。

    【讨论】:

      【解决方案3】:

      如果您能再澄清一下“任何”计算机的含义,将会很有帮助。听起来 emacs 已经安装在机器上,您只想配置 emacs 以使用您的包和设置。您是否可以物理访问可以从记忆棒加载文件的机器或网络?如果没有,您可以访问云存储吗?

      我自己的设置如下:

      我工作中有一台 Windows 7 机器,家里有一台 Linux Mint。 我有一个保管箱帐户,其中包含我所有的 emacs 配置文件和包。这个 dropbox 账户同步到每台机器上的本地文件夹,而我每台电脑上的 .emacs 文件只有一行: (加载文件“~/Dropbox/dotemacs.el”) 我经常调整包文件和配置。使用 Dropbox 可使我的设置在所有计算机上保持同步。

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

      【讨论】:

        【解决方案4】:

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

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

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

        【讨论】:

          【解决方案5】:

          正如我的 repo emacs for rails devs 的自述文件所说,将您的 ~/.emacs.d 内容推送到 github 和目标机器上一样简单:

          1. 使用自制软件安装 emacs(你可能在 OS X 上)brew install emacs --HEAD --use-git-head --cocoa --srgb
          2. Git 将你的 repo 克隆到 ~/.emacs.d/
          3. 启动 emacs

          如果有魔法,它会使用带有 ELPA 和果酱的内置包管理器,并检查是否安装了包,如果没有,请安装它们。

          适用于我和我的盒子和服务器。

          【讨论】:

            猜你喜欢
            • 2018-08-21
            • 2019-09-20
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-02-20
            • 2012-07-27
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多