Previous: , Up: Emacs Lispパッケージ   [Contents][Index]


49.5 パッケージソースのフェッチ

package-installはデフォルトではパッケージアーカイブからtarballをダウンロードしてそのファイルをインストールします。あなたがパッケージのソースをハッキングして、あなたの変更を他の人たちと共有したい場合には、これでは不十分かもしれません。そのような場合にはアップストリームのソースを直接取得して、それにたいして作業したいと思うのではないでしょうか。そのようにすることによって、パッチ開発やバグレポートが容易になることが多々あるからです。

パッケージのソースコードをソースから直接手に入れるためにpackage-vc-installを使うのも1つの手段です。このコマンドは通常のパッケージの場合と同じように、すべてのファイルがバイトコンパイルされて、auto-loadされることも保証してくれます。この方法でインストールされたパッケージは、他のパッケージとまったく同じように振る舞うでしょう。それらのパッケージはpackage-upgradepackage-upgrade-allを使ってアップグレード、package-deleteを使って再び削除することができます。通常のパッケージのリストにさえこれらのパッケージが表示されます。パッケージのリストに加えずにソースのcloneだけを望む場合には、package-vc-checkoutを使用してください。

ソースをチェックアウトするとカレントの開発HEADにたいするバグを再現させたり、新しい機能を実装して不満を解消したいと思うかもしれません。このパッケージのメタデータにメンテナーへ連絡する方法が示されていれば、コマンドpackage-report-bugを使用してバグを電子メール経由で報告することができます。このレポートにはあなたがカスタマイズしたすべてのユーザーオプションが含まれます。メンテナーと共有したい変更を行ったら、まずその変更をコミットしてからコマンドpackage-vc-prepare-patchでその変更を共有できます。パッチの準備を参照してください。

あなたが自分のパッケージを保守している場合は、リモートレポジトリにoneするのではなくローカルでのチェックアウトを使いたいと思うかもしれません。package-vc-install-from-checkoutを使ってこれを行うことができます。これはパッケージのディレクトリー(パッケージのファイルとディレクトリーを参照)からあなたのチェックアウトにシンボリックリンクを作成して、コードの初期化を行うコマンドです。初期化を繰り返してautoloadを更新するために、package-vc-rebuildの使用が必要かもしれないことに注意してください。

49.5.1 パッケージソースの指定

ソースからパッケージをインストールするためにはパッケージのソースをどこから取得するか(たとえばコードレポジトリ)、そしてコードの構造に関する基本情報(たとえば複数ファイルパッケージのメインファイル)をEmacsが承知していなければなりませんこれらのプロパティを記述するのがパッケージ仕様(package specification)です。

パッケージアーカイブ(Package Archives in The Emacs Lisp Reference Manualを参照)からサポートされると、Emacsはそのアーカイブからパッケージの仕様を自動的にダウンロードできます。package-vc-installに渡される1つ目の引数がパッケージを命名するシンボルであれば、Emacsはそのパッケージ用にアーカイブが提供する仕様を使用します。

;; EmacsはGNU ELPAからBBDBの仕様をダウンロードする:
(package-vc-install 'bbdb)

package-vc-installの1つ目の引数はパッケージ仕様の場合もあります。これによってユーザーオプションpackage-archivesにリストされている既知のアーカイブ以外の場所からソースパッケージをインストールできるようになります。パッケージ仕様は(name . spec)という形式のリストです。ここでspecは下記テーブルの任意のキーを使用するプロパティリストである必要があります。

コードレポジトリやバージョンコントロールシステムでの作業に使用する基本的な用語の定義についてはVCS Concepts in The GNU Emacs Manualを参照してください。

:url

パッケージのソースコードを取得するレポジトリを指定するURL文字列。

:branch

インストールするコードのリビジョンを指定する文字列。バージョンのバージョン番号と混同しないこと。

:lisp-dir

Lispソースのロードに用いる、レポジトリに相対的なディレクトリー名文字列。デフォルトはレポジトリのルートディレクトリー。

:main-file

パッケージのメタデータを集約したプロジェクトのメインファイル名文字列。与えられない場合のデフォルトはパッケージ名に".el"を追加したファイル名。

:doc

Infoファイルをビルドするためのレポジトリに相対的なドキュメンテーションファイル名文字列。TexinfoまたはOrgのファイルが指定できる。

:vc-backend

パッケージのレポジトリのコピーのダウンロードに用いるVCバックエンドを指名する文字列(Version Control Systems in The GNU Emacs Manualを参照)。省略時には提供されたURLからEmacsが推測を試み、それに失敗するとプロセスはpackage-vc-default-backendの値にフォールバックする。

;;情報を手作業で指定:
(package-vc-install
  '(bbdb :url "https://git.savannah.nongnu.org/git/bbdb.git"
         :lisp-dir "lisp"
         :doc "doc/bbdb.texi"))