2012-12-13 9 views
42

私は基本的なEmacs設定としてpreludeを使用しています。 パッケージマネージャからたくさんのパッケージをインストールしました。別のマシンで設定を使用したいのですが。Emacs 24にインストールされているすべてのパッケージのリストを保存するには?

私はインストールされたパッケージを持ちたいと思わず、リストを手動で作成したくありません。

インストールされているすべてのパッケージをprelude-package.elまたは他のファイルに保存する方法は何ですか?この設定を他のマシンに適用すると、最初に自動的にインストールされます。

答えて

59

変数package-activated-listから、現在インストールされているパッケージ(組み込みパッケージを除く)のリストを取得できます。起動時に自動的にそれらをインストールするには、この質問を参照してください。あなたははCh Vパッケージ活性化-リストをすれば具体的にhow to automatically install emacs packages by specifying a list of package names?

を、示された値をコピーし、prelude-packagesの値としてそれを挿入し、Emacsは自動的に保証されますそれらのパッケージは起動時にインストールされます。

+0

これは素晴らしいです。 – uchuugaka

+0

パッケージ起動リストはパッケージを削除しても更新されませんが、再起動時にのみ表示されます。 – uchuugaka

11

標準的な方法論が最高です(ataylorによって記述されています)。ここには、もっと不器用な方法があります。

M-xリストパッケージC-sはにインストールされ、インストールされたパッケージの最初の行が見つかります。 C-SPCで選択を開始してください。あなたが組み込みのパッケージに達するまで下に行く。 M-でコピーしてください。 新規バッファーのC-x bC-yで貼り付けます。 C-x C-sファイルを保存します。

私が見る利点は、これが少し説明的なことです。あなたのパッケージの小さな説明を表示します。いくつかのパッケージをインストールして忘れるときに便利です。

+0

はい - これは、 'package-activated-list'よりももう少し詳しい説明が追加されているのが好きです –

1

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

関連する問題