Previous: , Up: Packaging   [Contents][Index]


41.4 パッケージアーカイブの作成と保守

Package Menuを通じてパッケージアーカイブ(package archives)からユーザーはパッケージをダウンロードできます。このようなアーカイブは変数package-archivesで指定されます。この変数のデフォルト値のデフォルト値としてhttps://elpa.gnu.orgというGNUプロジェクトがホストするアーカイブが単一のエントリーとして含まれています。このセクションではパッケージアーカイブのセットアップと保守の方法について説明します。

User Option: package-archives

この変数の値はEmacsパッケージマネージャーが認識するパッケージアーカイブのリスト。

このalistの要素はそれぞれが1つのアーカイブに対応する(id . location)という形式であること。ここでidはパッケージ名(文字列)、locationは文字列であるようなベースロケーション(base location)

ベースロケーションが‘http:’か‘https:’で始まる場合にはHTTP(S)のURLとして扱われて、(デフォルトのGNUアーカイブのように)HTTP(S)を介してこのアーカイブからパッケージがダウンロードされる。

それ以外ならベースロケーションはディレクトリー名であること。この場合にはEmacsは通常のファイルアクセスを通じて、そのアーカイブからパッケージを取得する。localのようなアーカイブは主としてテストに有用。

パッケージアーカイブはパッケージ、および関連するファイルが格納された単なるディレクトリーです。HTTPを介してそのアーカイブに到達できるようにしたければ、このディレクトリーがウェブサーバーにアクセスできなければなりません。これを達成する方法はマニュアルの範囲を超えます。

手軽なのはpackage-xを通じてパッケージアーカイブのセットアップと更新を行う方法です。これはEmacsに含まれていますがデフォルトではロードされません。ロードするにはM-x load-library RET package-x RET、または(require 'package-x)をinitファイルに追加します。Lisp Libraries in The GNU Emacs Manualを参照してください。一度ロードされれば以下を使用できます:

User Option: package-archive-upload-base

この変数の値はディレクトリー名としてのパッケージアーカイブのベースロケーション。package-xライブラリー内のコマンドはこのベースロケーションを使用することになる。

このディレクトリー名は絶対ファイル名であること。パッケージアーカイブが別マシン上にある場合には、/ssh:foo@example.com:/var/www/packages/のようなリモート名を指定できる。Remote Files in The GNU Emacs Manualを参照のこと。

Command: package-upload-file filename

このコマンドはファイル名filenameの入力を求めて、そのファイルをpackage-archive-upload-baseにアップロードする。このファイルはシンプルパッケージ(.elファイル)、または複数ファイルパッケージ(.tarファイル)のいずれかでなければならず、それ以外ならエラーが発生する。そのパッケージの属性は自動的に解凍されて、アーカイブのコンテンツリストはこの情報でアップロードされる。

package-archive-upload-baseが有効なディレクトリーを指定しない場合には、この関数はインタラクティブにそれの入力を求める。そのディレクトリーが存在しなければ作成する。このディレクトリーが初期コンテンツをもつ必要はない(最初に空のアーカイブを作成するためにこのコマンドを使用できる)。

Command: package-upload-buffer

このコマンドはpackage-upload-fileと似ているが、パッケージファイルの入力を求めずにカレントバッファーのコンテンツをアップロードする。カレントバッファーはシンプルパッケージ(.elファイル)か複数ファイルパッケージ(.tarファイル)をvisitしていなればならず、それ以外ならエラーが発生する。

アーカイブ作成後に、それがpackage-archives内になければPackage Menuインターフェースからアクセスできないことを忘れないでください。

公的なパッケージアーカイブの保守には責任が併ないます。アーカイブからEmacsユーザーがパッケージをインストールする際には、それらのパッケージはそのユーザーの権限において任意のコードを実行できるようになります(これはパッケージにたいしてだけでなく一般的なEmacsコードにたいしても真といえる)。そのためアーカイブの保守を保つとともにホスティングシステムが安全であるよう維持するべきです。

暗号化されたキーを使用してパッケージにサイン(sign)するのがパッケージのセキュリティーを向上する1つの方法です。gpgのprivateキーとpublicキーを生成してあれば以下のようにそのパッケージにサインするためにgpgを使用できます:

gpg -ba -o file.sig file

単一ファイルパッケージにたいしては、fileはそのパッケージのLispファイルです。複数ファイルパッケージではそのパッケージのtarファイルです。同じ方法によりアーカイブのコンテンツファイルにもサインできます。これを行うにはパッケージと同じディレクトリーで.sigファイルを利用可能できるようにしてください。ダウンロードする人にたいしても、http://pgp.mit.edu/のようなキーサーバーにアップロードすることによりpublicキーを利用できるようにするべきです。その人がアーカイブからパッケージをインストールする際には署名の検証にpublicキーを使用できます。

これらの方法についての完全な説明はマニュアルの範囲を超えます。暗号化キーとサインに関する詳細はGnuPG in The GNU Privacy Guard Manual、Emacsに付属するGNU Privacy GuardへのインターフェースについてはEasyPG in Emacs EasyPG Assistant Manualを参照してください。