package.el+ Quelpa を使用してパッケージを管理するための長くてイライラする苦労の後、私は弾丸を噛み、独自のパッケージマネージャーを書きました。これはpackage.el、ほぼすべての点で優れたパッケージ管理エクスペリエンスを提供することにより、完全に置き換えることを目的としています。
非常に広範なドキュメントを読んで、そのすべての機能について学ぶことができますが、この質問に最も関連するのstraight.elは、完全な再現性に焦点を合わせていることです。つまり、Emacsを正常に起動するのか、新しいマシンで起動するのかは問題ではなく、ローカルの変更はバージョン管理されており、標準状態に戻すことができます。実際には、これは(1)パッケージをGitリポジトリとして複製し、その状態を管理する自動化ツールを提供することで実現されます。(2)initファイルをパッケージ管理状態の唯一の真実のソースとして使用し、他の場所に変更可能なデータを保存しない。(3)オプションのバージョンロックファイルを使用して、すべてのパッケージの正確なGitリビジョンと、レシピリポジトリを指定し、straight.el 自体。
開始するには、ブートストラップスニペットを挿入しstraight.elます。これにより、インストールとアクティブ化が行われます。次に、パッケージがインストールされていることを確認するためstraight-use-packageに、initファイルにを呼び出します。
(straight-use-package 'projectile)
はい、それはとても簡単です。package-refresh-contentsそのゴミを処理したり、ゴミを処理したりすることはありません。initファイルからこのフォームを削除してEmacsを再起動すると、Projectileはロードされなくなります(とは異なりますpackage.el)。これは、誤って宣言されていないパッケージに依存しているため、新しいマシンで設定が何らかの形で機能しないことを心配する必要がないことを意味します。
initファイル全体で、いつでも好きなときにパッケージをインストールできます(単一の場所でパッケージのリストを宣言する必要はありません)。もちろん、あなたもできる
(dolist (package '(ace-jump-mode ... zzz-to-char)) (straight-use-package package))
あなたがリストを好むなら。ただしuse-package、パッケージ構成の管理に使用することをお勧めします。最初にインストールする必要があります:
(straight-use-package 'use-package)
次に、straight.elとの統合が組み込まれているuse-packageため、次の「機能する」だけです。
(use-package projectile
:straight t
:init (projectile-mode 1))
init-fileを作成して必要なパッケージをインストールしたら、実行M-x straight-freeze-versionsしてバージョンロックファイルをに保存し~/.emacs.d/straight/versions/default.elます。straight.el新しいマシンで最初にEmacsを起動したときに、すべてのパッケージの正しいバージョンをチェックアウトできるため、このファイルをバージョン管理下に置く必要があります。(を使用して、ロックファイルで指定されたバージョンに手動で戻すことができますM-x straight-thaw-versions。)
私が他の答えで言及したマシンローカルのドットファイルのアイデアをサポートするために、プロファイルシステムをstraight.el提供しています。ドットファイルにシンボリックリンクを使用することをお勧めします(この場合、init.elローカルの初期化ファイル(該当する場合)、バージョンのロックファイルを使用する場合)。
straight.el他のパッケージマネージャーと比較する方法を知りたい場合は、詳細な比較セクションをご覧ください。しかし、他にもすべてに関するドキュメントがたくさんあります。
init.el(例えばgitのを使用して)の周りを、このアプローチはまた、(に基づいて動作しますuse-package):lunaryorn.com/posts/...