Previous: Multi-file Packages, Up: Packaging [Contents][Index]
Package Menuを通じてパッケージアーカイブ(package
archives)からユーザーはパッケージをダウンロードできます。このようなアーカイブは変数package-archives
で指定されます。この変数のデフォルト値のデフォルト値としてhttps://elpa.gnu.orgというGNUプロジェクトがホストするアーカイブが単一のエントリーとして含まれています。このセクションではパッケージアーカイブのセットアップと保守の方法について説明します。
この変数の値は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を参照してください。一度ロードされれば以下を使用できます:
この変数の値はディレクトリー名としてのパッケージアーカイブのベースロケーション。package-x
ライブラリー内のコマンドはこのベースロケーションを使用することになる。
このディレクトリー名は絶対ファイル名であること。パッケージアーカイブが別マシン上にある場合には、/ssh:foo@example.com:/var/www/packages/のようなリモート名を指定できる。Remote Files in The GNU Emacs Manualを参照のこと。
このコマンドはファイル名filenameの入力を求めて、そのファイルをpackage-archive-upload-base
にアップロードする。このファイルはシンプルパッケージ(.elファイル)、または複数ファイルパッケージ(.tarファイル)のいずれかでなければならず、それ以外ならエラーが発生する。そのパッケージの属性は自動的に解凍されて、アーカイブのコンテンツリストはこの情報でアップロードされる。
package-archive-upload-base
が有効なディレクトリーを指定しない場合には、この関数はインタラクティブにそれの入力を求める。そのディレクトリーが存在しなければ作成する。このディレクトリーが初期コンテンツをもつ必要はない(最初に空のアーカイブを作成するためにこのコマンドを使用できる)。
このコマンドは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を参照してください。