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


48.3 パッケージのインストール

パッケージを一番便利にインストールするのはパッケージメニューを使う方法(Package Menuバッファーを参照)ですが、コマンドM-x package-installを使用することもできます。これはステータスが‘available’のパッケージ名の入力を求めて、それをダウンロードしてからインストールします。

他のパッケージが提供する機能に依存するために、それらのパッケージがインストール済みであることを必要(require)とするパッケージもあるでしょう。Emacsがそのようなパッケージをインストールするときは、必要なパッケージがインストールされていなければ、それらのパッケージのダウンロードとインストールも自動に行ないます(必要なパッケージが何らかの理由で利用できない場合、Emacsはエラーをシグナルしてインストールを中止します)。パッケージの必要条件リスト(requirements list)は、そのパッケージのヘルプバッファーに表示されます。

デフォルトでは、パッケージはEmacs開発者により保守される単一のパッケージアーカイブからダウンロードされます。これは変数package-archivesにより制御されます。この変数の値は、Emacsが認識するパッケージアーカイブのリストです。リストの各要素は(id . location)という形式でなければなりません。ここで、idはパッケージアーカイブの名前、locationはパッケージアーカイブディレクトリーのURLか名前です。サードパーティーのアーカイブを使用したい場合はこのリストを変更できます — が、自己責任で行い、信用できるサードパーティーだけを使用してください!

パッケージアーカイブのメンテナーは、パッケージにサイン(signing)を付して、信頼度を増すことができます。これらはプライベートとパブリックのペアーからなる暗号化キーにより生成されます。プライベートキーは各パッケージにたいする署名ファイル(signature file)を作成するのに使用されます。パブリックキーにより、署名ファイルを使用してそのパッケージ作成者と、それが改ざんされていないかを確認できます。署名の検証は、EasyPGインターフェイス(EasyPG in Emacs EasyPG Assistant Manualを参照)を通じてthe GnuPG packageを使用します(EasyPG in Emacs EasyPG Assistant Manualを参照)。有効な署名であっても、それが悪意がないパッケージであることを厳正に保証する訳ではなく、用心するべきです。パッケージアーカイブは、パブリックキーの入手方法について、説明を提供するべきです。http://pgp.mit.edu/のようなサーバーからキーをダウンロードするのも1つの方法です。Emacsにキーをインポートするには、M-x package-import-keyringを使用します。Emacsは変数package-user-dirで指定されるディレクトリー(デフォルトはpackage-gnupghome-dirのサブディレクトリーgnupg)にパッケージキーを格納します。これにより、Emacsが署名を検証する際に、オプションgnupgでGnuPGを呼び出すようになります。package-gnupghome-dirnil,の場合は、GnuPGのオプション‘--homedir’は省略します。GNUパッケージアーカイブにたいするパブリックキーはEmacsと共に配布され、etc/package-keyring.gpgにあります。Emacsはこれを自動的に使用します。

ユーザーオプションpackage-check-signatureが非nilの場合、Emacsはパッケージのインストール時に署名の検証を試みます。このオプションが値allow-unsignedをもち、使用可能なOpenPGP設定が見つかったらサインされたパッケージはチェックされますが、未サインのパッケージもまだインストールができます。パッケージにサインしないアーカイブを使用する場合には、それらをpackage-unsigned-archivesに追加できます(値がallow-unsignedで使用可能なOpenPGPが見つからなければこのオプションはあたかも値がnilであるかのように扱われる)。値がtなら少なくとも1つの署名が有効でなければならず、allならすべての署名が有効でなければなりません。

暗号化キーとサインについての詳細は、GnuPG in The GNU Privacy Guard Manualを参照してください。EmacsのGNU Privacy Guardにたいするインターフェースについては、EasyPG in Emacs EasyPG Assistant Manualを参照してください。

複数のパッケージアーカイブが有効で、同じパッケージにたいして異なるバージョンを提供する場合は、オプションpackage-pinned-packagesが便利かもしれません。指定したパッケージが指定されたアーカイブだけからダウンロードされるように、このリストにパッケージとアーカイブのペアーを追加できます。

複数の有効なパッケージアーカイブがあるときに便利な他のオプションとして、package-archive-prioritiesがあります。これは各アーカイブにたいして、優先度(高い数字は高い優先度のアーカイブを指定します)を指定します。このオプションにより指定されない限り、アーカイブの優先度はデフォルトの0です。優先度高のアーカイブのパッケージが利用可能な場合、優先度低のアーカイブのパッケージはメニューに表示されません(これはpackage-menu-hide-low-priorityの値により制御されます)。

一度パッケージをダウンロードしてインストールすると、そのパッケージはカレントEmacsセッションで利用可能になります。パッケージを利用可能にするにはパッケージのディレクトリーをload-pathに追加してパッケージのautoloadをロードします。パッケージのautoloadの効果はパッケージごとにさまざまです。ほとんどのパッケージはいくつかの新たなコマンドを利用可能にするだけですが、Emacsセッションにたいして広範な影響を及ぼすものもあります。この種の情報についてはパッケージのヘルプバッファーを参照してください。

インストールされたパッケージはその後のすべてのEmacsセッションで自動的にロードされます。これはEmacs開始時のinitファイル処理前、早期initファイル(早期初期化ファイルを参照)の処理後に行なわれます。例外として‘-q’か‘--no-init-file’オプション(初期化オプションを参照してください)で呼び出されたときは、Emacs開始時にパッケージを利用可能にしません。

スタートアップ時にEmacsが自動的にパッケージを利用可能しないようにするためには変数package-enable-at-startupnilに変更してください。この変数は正規のinitファイル(regular init file)のロード前に読み込まれるので早期initファイル(early init file)で行うようにしてください。現在のところこの変数はCustomizeを通じてセットできません。

多くのパッケージのインストール後には、ユーザーオプションpackage-quickstartのセッティングでスタートアップタイムを改善できるかもしれません。このオプションをセットすることによって、Emacsのスタートアップ時に毎回再計算するかわりに、多くの事項をEmacsに事前に計算させることができます。しかしこれを行うと、package-load-listの値の変更時のようなアクティベーション変更が必要になった際にコマンドpackage-quickstart-refreshを手動で実行する必要が生じます。

package-enable-at-startupnilにセットしてもスタートアップ中およびスタートアップじにパッケージを利用可能にすることはできます。インストール済みパッケージをスタートアップ中に利用可能にするにはinitファイル内で関数package-activate-allを呼び出し手ください。スタートアップ後に利用可能にするにはコマンドM-: (package-activate-all) RETを呼び出してください。

スタートアップ時に利用可能になるようにパッケージのロードをより精密に制御するために、変数package-load-listを使用することができます。この変数の値にはリストを指定します。(name version)という形式のリスト要素は、nameという名前のパッケージのバージョンversionを利用可能にするように指示します。ここでversionには、(そのパッケージの特定のバージョンに対応する)バージョン文字列、t (任意のインストール済みのバージョンを意味する)、またはnil (バージョンを意味しない。パッケージを利用可能にすることを抑止してパッケージを無効にする)を指定します。リストの要素にはシンボルallも指定でき、これは他のリスト要素で名前指定されていない任意のパッケージのインストール済みバージョンを利用可能にすることを意味します。デフォルト値は単に'(all)となっています。

たとえばpackage-load-list'((muse "3.20") all)にセットするとEmacsは‘muse’のバージョン3.20のみ、および‘muse’以外のパッケージのインストール済みの任意のバージョンをロードします。‘muse’の他のバージョンがインストールされていたとしてもそれらは無視されます。‘muse’パッケージは‘held’というステータスでパッケージメニューにリストされるはずです。