Next: , Previous: , Up: Packages   [Contents][Index]


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

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

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

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

パッケージアーカイブのメンテナーは、パッケージにサイン(signing)を付して、信頼度を増すことができます。これらはプライベートとパブリックの対になる暗号化キーにより生成されます。プライベートキーは各パッケージにたいする署名ファイル(signature file)を作成するのに使用されます。パブリックキーにより、署名ファイルを使用してそのパッケージを作成したのが誰か、そしてそれが変更されていないかを検証できます。有効な署名であっても、それが悪意がないパッケージであることを厳正に保証する訳ではなく、用心するべきです。パッケージアーカイブは、パブリックキーの入手方法について、説明を提供するべきです。http://pgp.mit.edu/のようなサーバーからキーをダウンロードするのも1つの方法です。Emacsにキーをインポートするには、M-x package-import-keyringを使用します。Emacsはpackage-user-dirのサブディレクトリーgnupgに、パッケージのキーを保管します。GNUパッケージアーカイブにたいするパブリックキーはEmacsと共に配布され、etc/package-keyring.gpgにあります。Emacsはこれを自動的に使用します。

ユーザーオプションpackage-check-signatureが非nilの場合、Emacsはパッケージのインストール時に書名の検証を試みます。このオプションが値allow-unsignedをもつ場合、サインされていないパッケージのインストールができます。パッケージにサインしないアーカイブを使用する場合、それらをpackage-unsigned-archivesに追加できます。

暗号化キーとサインについての詳細は、Top 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の値により制御されます)。

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

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

自動的なパッケージのロードを無効にするには、変数package-enable-at-startupnilに変更してください。

自動的なパッケージのロードがinitファイルのロード後である理由は、(パッケージシステムに影響するものも含む)ユーザーオプションが、カスタマイズされた値を受けとるのがinitファイルのロード後だからです。initファイルの中で明示的にパッケージをロードしたい状況があるかもしれません(たいていは、initファイルの他のコードが、あるパッケージに依存する等の理由により)。そのような場合、initファイルで関数package-initializeを呼び出す必要があります。package-initializeの呼び出しの前に、package-load-list(以下参照)などの関連するユーザーオプションをセットアップするのは、あなたの責任です。initファイルを処理した後に、これにより、パッケージを重複してロードするのを避けるために、自動的にpackage-enable-at-startupnilにセットされます。かわりに、開始時にパッケージのロードを完全に抑止して、後でコマンドM-x package-initializeを呼び出して手動でパッケージをロードする方法を選択したいと思うかもしれません。

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

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