マルチファイルパッケージを「elpa /」に手動でインストールする


7

新しいパッケージを書いているとき、を発行するだけでインストールをテストできるのは素晴らしいことM-x package-install-from-bufferです。これにより、でパッケージがインストールされpackage.el、その下に入り "~/.emacs.d/elpa"ます。ただし、これはマルチファイルパッケージでは機能しません。

.el現在のディレクトリにあるすべてのファイルを単一のマルチファイルパッケージとしてインストールする手順は何ですか?

回答:


7

Emacs 25.1にこの機能が追加されましたNEWSファイルから:

** package-install-from-bufferおよびpackage-install-fileディレクトリで作業します。これは.tar-pkg.elファイルがオプションであることを除いて、ファイルからのインストールと同じ規則に従います。

覚えておくべき新しいコマンドはありません。package-install-from-bufferdiredバッファから発行するかpackage-install-file、ディレクトリを呼び出して指定します。そのディレクトリに含まれているパッケージは、シングル-pkg.elファイルでもマルチファイルでも、読み込まれてインストールされ、風袋引きやファイルは必要ありません。


オプション-pkg.elファイルが面白いです。その場合、値はデフォルトで何になりますか?
フィル、2015年

@philsは、パッケージリポジトリと同じように、完全なパッケージヘッダーを持つelispファイルを見つけ、そこから-pkgファイルを生成します。
マラバルバ2015年

1
ああ、そういうふうに普通に生成されていることに気づかなかった。それであなたの変更は完璧な意味を持ちます。よくやった。
フィル2015年

Malabarba:トランクの現在のdocstringはpackage-install-file、それがディレクトリで機能していることについて言及していないことに気づきました(ただし、あなたが言ったように、そうです)。
phils 2015

@philsお知らせありがとうございます。私は今それを修正しています。
マラバルバ2015

1

package-install-from-buffer 言う:

現在のバッファーは、パッケージ化ガイドラインに従う単一の.el または.tarファイルであると想定されます

したがって、ディレクトリをアーカイブし(基準を満たしている場合)、tarファイルをEmacsにロードして、package-install-from-buffer以前と同じように使用できると思いますか?

編集:または、lunaryornが指摘するように、Emacsのアーカイブにアクセスせずにを使用してくださいpackage-install-file


1
現在のディレクトリを(再)tarしてからパッケージのインストールを行う関数のように聞こえますが便利です。
グルカ2015年

1
またはM-x package-install-file

動作しません。paradox/paradox-pkg.el内のファイルを見つけようとしますが、見つからtarない場合はエラーになります。との両方install-fileで同じですinstall-from-buffer。この-pkgファイルを一種のレシピとして作成する必要があると思います。
マラバルバ2015年

1
@Malabarba TARパッケージには-pkgファイルが必要です。そうでない場合、それは有効なパッケージではないため、ランダムディレクトリをtarするだけでは機能しません。結局のところ、Emacsにはパッケージのメタデータを探す場所が必要です。MELPAを使用するpackage-buildcask、ディレクトリツリーから適切なTARパッケージを作成できます。

マラバルバ:詳細C-h i g (elisp) Multi-file Packagesについては、を参照してください。
フィル、2015年

1

package.elは、この使用例を適切にサポートしていません。package-install-from-bufferパッケージを更新するたびに再実行する必要があります。またM-x find-function、友人はソースコードにジャンプするのではなく、に挿入したコピーにジャンプpackage.el~/.emacs.d/elpaます。結果として、私はpackage.elこのユースケースには使用しないことをお勧めします(または、他にも多くの問題があるため、まったく使用しません)。

代わりに、straight.elこのユースケース用に明示的に設計されたパッケージマネージャーを試すことができます。ではstraight.el、「ローカルインストール」の手順はありません。リポジトリをに置き~/.emacs.d/straight/repos/<my-package-repo>、パッケージをinit-fileにロードします。

(straight-use-package '(<my-package> :local-repo "<my-package-repo>"))

ソースコードに変更を加えるたびに、オートロードの生成とバイトコンパイルがやり直されます(Emacsを再起動すると)。また、Gitリポジトリから直接実行しているのでM-x find-function、友達も期待どおりに動作します。

最後に、ローカルバージョンとアップストリームバージョンは完全に交換可能です。straight.elローカルで必要な変更を加えることができ、それらは上流の変更と同様に神聖なものとして扱われます(ただしstraight.el、必要に応じて、リポジトリを上流のバージョンに自動的に(そしてインタラクティブに)戻すことができます)。したがって、ローカル開発を行う場合は、構成を変更する必要はありません。ローカル開発を行うだけです。そして、公開するプライベートパッケージがある場合、それは取るに足らないことです。そのパッケージをどこかにプッシュするだけです(おそらく、initファイルのレシピを更新して、そのGitリポジトリを指すようstraight.elにして、別のマシンから再クローンできるようにします)。

とは異なりpackage.el、マルチファイルパッケージとシングルファイルパッケージの扱いに違いはありません。

straight.el他のパッケージマネージャとの比較を含む、に関する詳細なドキュメントについては、READMEを参照してください。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.