Next: Package Files, Previous: Package Menu, Up: Packages [Contents][Index]
パッケージを一番便利にインストールするのはパッケージメニューを使う方法(Package Menuを参照してください)ですが、コマンドM-x package-installを使用することもできます。これはステータスが‘available’のパッケージ名の入力を求め、それをダウンロードしてインストールします。
他のパッケージが提供する機能に依存するために、それらのパッケージがインストール済みであることを必要(require)とするパッケージもあるでしょう。Emacsがそのようなパッケージをインストールするときは、必要なパッケージがインストールされていなければ、それらのパッケージのダウンロードとインストールも自動に行ないます(必要なパッケージが何らかの理由で利用できない場合、Emacsはエラーをシグナルしてインストールを中止します)。パッケージの必要条件リスト(requirements list)は、そのパッケージのヘルプバッファーに表示されます。
デフォルトでは、パッケージはEmacs開発者により保守される単一のパッケージアーカイブからダウンロードされます。これは変数package-archives
により制御されます。この変数の値は、Emacsが認識するパッケージアーカイブのリストです。リストの各要素は(id
.
location)
という形式でなければなりません。ここで、idはパッケージアーカイブの名前、locationはパッケージアーカイブディレクトリーのHTTPアドレスか名前です。サードパーティーのアーカイブを使用したい場合はこのリストを変更できます
— が、自己責任で行い、信用できるサードパーティーだけを使用してください!
パッケージアーカイブのメンテナーは、パッケージにサイン(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-dir
がnil
,の場合は、GnuPGのオプション‘--homedir’は省略します。GNUパッケージアーカイブにたいするパブリックキーはEmacsと共に配布され、etc/package-keyring.gpgにあります。Emacsはこれを自動的に使用します。
ユーザーオプションpackage-check-signature
が非nil
の場合、Emacsはパッケージのインストール時に書名の検証を試みます。このオプションが値allow-unsigned
をもつ場合、サインされていないパッケージのインストールができます。パッケージにサインしないアーカイブを使用する場合、それらをpackage-unsigned-archives
に追加できます。
暗号化キーとサインについての詳細は、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
の値により制御されます)。
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-startup
をnil
に変更してください。
自動的なパッケージのロードがinitファイルのロード後である理由は、(パッケージシステムに影響するものも含む)ユーザーオプションが、カスタマイズされた値を受けとるのがinitファイルのロード後だからです。initファイルの中で明示的にパッケージをロードしたい状況があるかもしれません(たいていは、initファイルの他のコードが、あるパッケージに依存する等の理由により)。そのような場合、initファイルで関数package-initialize
を呼び出す必要があります。package-initialize
の呼び出しの前に、package-load-list
(以下参照)などの関連するユーザーオプションをセットアップするのは、あなたの責任です。initファイルを処理した後に、これにより、パッケージを重複してロードするのを避けるために、自動的にpackage-enable-at-startup
がnil
にセットされます。かわりに、開始時にパッケージのロードを完全に抑止して、後でコマンド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’というステータスでパッケージメニューにリストされるはずです。