我正在使用前奏作爲基礎Emacs配置。 我已經從軟件包管理器安裝了很多軟件包,並且想在另一臺機器上使用我的設置。如何在Emacs 24中保存所有已安裝軟件包的列表?
我不想攜帶安裝的軟件包,也是我不想手動創建一個列表。
什麼是保存列表中的所有已安裝的軟件包爲前奏,package.el或任何其他文件,這樣,當我把這個配置我的其他機器,它們會自動得到安裝有在第一次使用的方法是什麼?
我正在使用前奏作爲基礎Emacs配置。 我已經從軟件包管理器安裝了很多軟件包,並且想在另一臺機器上使用我的設置。如何在Emacs 24中保存所有已安裝軟件包的列表?
我不想攜帶安裝的軟件包,也是我不想手動創建一個列表。
什麼是保存列表中的所有已安裝的軟件包爲前奏,package.el或任何其他文件,這樣,當我把這個配置我的其他機器,它們會自動得到安裝有在第一次使用的方法是什麼?
您可以從可變package-activated-list
獲得當前已安裝的程序包(不包括在建包)的列表。要在啓動時自動安裝它們,看到了這個問題:how to automatically install emacs packages by specifying a list of package names?
更具體地說,如果你這樣做章V包激活名單,複製顯示的值,然後將它作爲prelude-packages
值,Emacs會自動確保這些軟件包在啓動時安裝。
規範的方法是最好的(由ataylor描述)。這是一個更笨拙的方法。
M-X列表包。 C-s安裝直到找到已安裝軟件包的第一行。從開始選擇C-SPC。往下走,直到你到達內置的軟件包。複製M-w。 用於新緩衝區的C-x b。粘貼C-y。 C-x C-s保存文件。
唯一的好處,我看到的是這是一點點更多的描述。顯示你的軟件包的一個小的描述。當你安裝一些軟件包並忘記它時很有用。
是的 - 我喜歡這比'package-activated-list'多一點點的描述 –
截至how to automatically install emacs packages by specifying a list of package names?提到的那樣,這將是更好也記錄你所需要的軟件包的版本。爲了做到這一點,你可以使用下面的功能:
(defun list-packages-and-versions()
"Returns a list of all installed packages and their versions"
(mapcar
(lambda (pkg)
`(,pkg ,(package-desc-version
(cadr (assq pkg package-alist)))))
package-activated-list))
這會給你的(NAME VERSION)
對列表。不幸的是,我一直無法找到安裝特定版本的軟件包的方法。看起來package.el
總是抓住最新的可用。我現在正在做的是:
(defun install-packages-with-specific-versions (package-version-list)
"Install the packages in the given list with specific versions.
PACKAGE-VERSION-LIST should be a list of (NAME VERSION) lists,
where NAME is a symbol identifying the package and VERSION is
the minimum version to install."
(package-download-transaction
(package-compute-transaction() package-version-list)))
我寫了一個較長的功能,安裝軟件包匹配的確切版本號,但它失敗,因爲package.el
在默認情況下只檢索可用於每個包的最新版本。 gist
哦,這太棒了。 – uchuugaka
值得注意的是,軟件包激活列表並未通過刪除軟件包來更新,但似乎僅在重新啓動時纔會更新。 – uchuugaka