[英]How are the packages installed with 'package-install'(elpa) in Emacs loaded?
[英]Whats the best way to package my Emacs installation (packages and config) so that it can quickly be installed anywhere?
我通常通過登錄到遠程計算機(通常是AWS)來編寫代碼。 我有一個相當大的包列表,我使用的和一個相當大的.emacs.el。 雖然我可以在nay遠程計算機上快速安裝emacs,但我正在尋找一種方法來“打包”我的emacs並將其存放在某處,以便我可以在我登錄的任何計算機上快速安裝它。 什么是最好的方法呢?
首先,您顯然會將所有內容捆綁到源代碼控制中(私有文件除外)。 Bitbucket和Gitlab提供私人回購。
您可以看到此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+)
為了使您的配置更快安裝,您也可以將已安裝的軟件包添加到源代碼管理中。 這樣,您還可以確保擁有相同的環境。
我總是建議將整個 ~/.emacs.d
置於版本控制之下,包括所有包和其他庫。
這有點麻煩,也許有點麻煩,但如果你想保證配置的狀態,每次你在新的地方安裝它,你需要有一個完整的副本。
使用版本控制是我的公司偏好,因為這使得恢復包等更改變得微不足道。因此,如果你升級包並且Emacs中斷,那么將它們放回原處就是一步(並且這樣做不會要求你記住他們是怎么回事。
使用這種方法,克隆單個存儲庫的行為就是獲得已知狀態的工作系統所需的全部操作; 並且它限制了您對遠程源的可用性,一致性和持久性的依賴,只有一個存儲庫(如果您在本地擁有它,或者甚至隨身攜帶一個副本,則根本沒有遠程依賴項)。
也就是說,很多人不打擾也不會遇到任何問題,所以對大多數人來說這不是一個關鍵點。
如果您通過“任何”計算機澄清一點你的意思,那將會很有幫助。 聽起來好像emacs已經安裝在機器上,你只想配置emacs來使用你的軟件包和設置。 您是否可以物理訪問可以從記憶棒加載文件的機器或網絡? 如果沒有,您可以訪問雲存儲嗎?
我自己的設置如下:
我有一台Windows 7機器在工作,而Linux Mint在家。 我有一個Dropbox帳戶,可以保存我所有的emacs配置文件和包。 此保管箱帳戶同步到每台計算機上的本地文件夾,每台計算機上的.emacs文件只有一行:(load-file“〜/ Dropbox / dotemacs.el”)我經常調整包文件和配置。 使用Dropbox可以在所有計算機上同步我的設置。
如果您無法安裝Dropbox,您可以像git一樣手動同步到雲存儲。
檢查https://github.com/redguardtoo/elpa-mirror ,
在USB記憶棒上創建自己的存儲庫,它很穩定,因為所有軟件包版本都是您已經使用很長時間的版本。
這是最快捷的方式,基本上你可以在1分鍾內在任何機器上進行設置。
因為我的repo emacs for rails devs的README說它就像把你的~/.emacs.d
內容推送到github和目標機器一樣簡單:
brew install emacs --HEAD --use-git-head --cocoa --srgb
如果有魔法,它會使用帶有ELPA和橘子醬的內置包管理器,並檢查是否安裝了包,如果沒有,請安裝它們。
適用於我和我的盒子和服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.