私は基本的なEmacs構成としてプレリュードを使用しています。パッケージマネージャーからたくさんのパッケージをインストールしましたが、自分の設定を別のマシンで使用したいと思います。
インストールされたパッケージを持ち歩きたくないし、手動でリストを作成したくない。
インストールされているすべてのパッケージのリストをprelude-package.elまたはその他のファイルに保存して、この構成を他のマシンに持っていくと、最初の使用時に自動的にインストールされるようにする方法は何ですか?
私は基本的なEmacs構成としてプレリュードを使用しています。パッケージマネージャーからたくさんのパッケージをインストールしましたが、自分の設定を別のマシンで使用したいと思います。
インストールされたパッケージを持ち歩きたくないし、手動でリストを作成したくない。
インストールされているすべてのパッケージのリストをprelude-package.elまたはその他のファイルに保存して、この構成を他のマシンに持っていくと、最初の使用時に自動的にインストールされるようにする方法は何ですか?
変数から、現在インストールされているパッケージ(組み込みパッケージを除く)のリストを取得できますpackage-activated-list
。起動時にそれらを自動的にインストールするには、この質問を参照してください:パッケージ名のリストを指定してemacsパッケージを自動的にインストールする方法は?
より具体的には、そうする場合C-h v package-activated-list、表示された値をコピーし、それをの値として挿入するとprelude-packages
、emacsはそれらのパッケージが起動時にインストールされていることを自動的に確認します。
正規の方法論が最適です(ataylorによって説明されています)。これはもっと不器用な方法です。
M-x list-packages。C-s installedインストールされたパッケージの最初の行が見つかるまで。で選択を開始しC-SPCます。組み込みパッケージに到達するまで下に移動します。でコピーしM-wます。C-x b新しいバッファ用。で貼り付けC-yます。C-x C-sファイルを保存します。
私が見る唯一の利点は、これが少し説明的であるということです。パッケージの簡単な説明を表示します。いくつかのパッケージをインストールして、それを忘れるときに便利です。
パッケージ名のリストを指定してemacsパッケージを自動的にインストールする方法で述べたように?、必要なパッケージのバージョンも記録することをお勧めします。これを行うには、次の関数を使用できます。
(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
正確なバージョン番号に一致するパッケージをインストールするためのより長い関数を作成しましたが、デフォルトでは各パッケージで使用可能な最新バージョンのみを取得するため、失敗します。要旨
上記のように、emacsノーマルモードを使用します。ここにそれを行う別の邪悪なモードの方法があります:
Mxリスト-パッケージ; / installed(強調表示されます); v(ビジュアルモードの場合); j(それらを選択するため); y(それらをコピーするため); 新しいバッファを開いて貼り付けます。