53

私は基本的なEmacs構成としてプレリュードを使用しています。パッケージマネージャーからたくさんのパッケージをインストールしましたが、自分の設定を別のマシンで使用したいと思います。

インストールされたパッケージを持ち歩きたくないし、手動でリストを作成したくない。

インストールされているすべてのパッケージのリストをprelude-package.elまたはその他のファイルに保存して、この構成を他のマシンに持っていくと、最初の使用時に自動的にインストールされるようにする方法は何ですか?

4

4 に答える 4

72

変数から、現在インストールされているパッケージ(組み込みパッケージを除く)のリストを取得できますpackage-activated-list。起動時にそれらを自動的にインストールするには、この質問を参照してください:パッケージ名のリストを指定してemacsパッケージを自動的にインストールする方法は?

より具体的には、そうする場合C-h v package-activated-list、表示された値をコピーし、それをの値として挿入するとprelude-packages、emacsはそれらのパッケージが起動時にインストールされていることを自動的に確認します。

于 2012-12-13T19:29:15.127 に答える
17

正規の方法論が最適です(ataylorによって説明されています)。これはもっと不器用な方法です。

M-x list-packagesC-s installedインストールされたパッケージの最初の行が見つかるまで。で選択を開始しC-SPCます。組み込みパッケージに到達するまで下に移動します。でコピーしM-wます。C-x b新しいバッファ用。で貼り付けC-yます。C-x C-sファイルを保存します。

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

于 2014-04-03T04:57:54.577 に答える
5

パッケージ名のリストを指定して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正確なバージョン番号に一致するパッケージをインストールするためのより長い関数を作成しましたが、デフォルトでは各パッケージで使用可能な最新バージョンのみを取得するため、失敗します。要旨

于 2016-10-04T15:01:33.167 に答える
1

上記のように、emacsノーマルモードを使用します。ここにそれを行う別の邪悪なモードの方法があります:

Mxリスト-パッケージ; / installed(強調表示されます); v(ビジュアルモードの場合); j(それらを選択するため); y(それらをコピーするため); 新しいバッファを開いて貼り付けます。

于 2019-09-15T11:55:40.700 に答える