バディと私は、会社での使用に特化したemacsパッケージの作成を開始したいと考えています。(私を信頼してください、私たちが書いたものは何も外部の人にとって大きな関心はありません-それは内部ツールとの統合です。)
パッケージのインストールとメンテナンスをできる限り簡単にしたいと考えており、これはとの統合を意味すると考えていpackage.el
ます。そのような使用のためにリポジトリを設定するには何をする必要がありますか?
バディと私は、会社での使用に特化したemacsパッケージの作成を開始したいと考えています。(私を信頼してください、私たちが書いたものは何も外部の人にとって大きな関心はありません-それは内部ツールとの統合です。)
パッケージのインストールとメンテナンスをできる限り簡単にしたいと考えており、これはとの統合を意味すると考えていpackage.el
ます。そのような使用のためにリポジトリを設定するには何をする必要がありますか?
回答:
私が使用してローカルパッケージのアーカイブ(Emacsの24.5)を設定するpackage.el
最初の2つのディレクトリを作成することによって、pkgs
およびlocal
。(名前は重要ではありません。)あなたのパッケージを構成するファイルがに行くpkgs
と、local
あなたのアーカイブを保持することになります。アーカイブを他の人が利用できるようにするlocal
場合は、Webサーバーを使用して公開できますが、プロセスはローカルアーカイブの構築と同じです。
私は自分のinit.el
ファイルに以下を入れました:
(require 'package)
(setq package-enable-at-startup nil)
(require 'package-x)
(defvar local-archive
(expand-file-name "local/" user-emacs-directory)
"Location of the package archive.")
(setq package-archive-upload-base local-archive)
(add-to-list 'package-archives `("local" . ,local-archive) t)
(package-initialize)
私は私の中で私のアーカイブを置く.emacs.d
ディレクトリ(それゆえuser-emacs-directory
でexpand-file-name
フォーム)しかし、あなたは次のようにどこでもあなたを置くことができます。
これが評価されたら、M-x package-upload-file
インストールするパッケージのファイル名を実行して入力します。これにより、新しいパッケージが生成されlocal
ます。あなたは、そこに3つの新しいファイルが表示されますarchive-contents
、yourpackagename-version.el
とyourpackagename-readme.txt
。これでM-x package-list-packages
、パッケージを一覧表示できるようになります。運が良ければ、「new」とマークされたトップになります。通常どおりパッケージをインストールでき.emacs.d/elpa
、他のパッケージと同じようにディレクトリに表示されます。
これはEmacs 24ですぐに使用できるはずです。以前のバージョンについてはわかりません。ユーザーは、以下を含めることで通常の方法でパッケージにアクセスできます。
(require 'package)
(setq package-enable-at-startup nil)
(add-to-list 'package-archives
'("archive" . "http://yourdomain.com/path-to-local-dir/"))
(package-initialize)
彼らのinit.el
ファイルに。
パッケージの作成方法については、GNU Emacs Lispマニュアルの「配布用のLispコードの準備」を参照してください。
M-x package-update-file
、.el
ファイルが直接local/
dirの下に置かれます。私たちはで終わるので、各パッケージのサブディレクトリを作成する方法はありますかlocal/pkg1/pkg1.el
、local/pkg2/pkg2.el
...?
elpa
ディレクトリには、あなたが記述方法が設定されています。なぜそうでlocal
はないのか本当に分かりません。これらのファイルは自動的に生成されるため、誰も実際にそれらを見る必要はありません。gitを使用してファイルをバージョン管理し、そのためにlocal
ディレクトリを配置.gitignore
します。私はpkgs
ディレクトリをきちんと整理し、バージョン管理下に置いていますlocal
が、そうです。
local/
か?パッケージのURLメタデータをとして指定できる;; URL: http://yourdomain.com/path-to-local-dir/pkg1
ように、さまざまなパッケージに対して階層配置が必要でした。しかし、それは大したことではありません。私は地元のエルパでパッケージを公開することにもっと興奮しています。:)
local
とにかく、そのディレクトリをユーザーに示しません。代わりに元のソースをポイントします。
MELPAのようなものをホストする場合は、MELPAのウィキで、独自のMELPAインスタンスをホストする方法に関する指示を見つけることができます。
https://github.com/melpa/melpa/wiki/Custom-Melpa-Archive
基本的には、次のように要約されます。
recipes/
ディレクトリからすべての既存のレシピを削除しますmake
。