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

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

デフォルトではアーカイブから新しいバージョンが利用可能なビルトインパッケージをpackage-installは考慮しません(パッケージがEmacsディストーションに含まれているパッケージはビルトイン)。特にビルトインパッケージはパッケージ入力を求める際の補完候補には表示されません。ただしプレフィックス引数とともにpackage-installを呼び出すと、アップグレード可能なビルトインパッケージも考慮するようになります。変数package-install-upgrade-built-inをカスタマイズすることによって、この挙動をデフォルトにすることができます。この変数の値が非nilであれば、たとえプレフィックス引数なしでpackage-installを呼び出した際にもビルトインパッケージが考慮されるようになります。package-install-upgrade-built-inはpackage-menuコマンド(Package Menuバッファーを参照)にも影響を与えることに注意してください。

これとは対照的に、package-upgradepackage-upgrade-allがビルトインパッケージを考慮することは決してありません。あるビルトインパッケージのアップグレードにこれらのコマンドを使いたければC-u M-x package-install RETを通じてアップグレードするか、あるいはpackage-install-upgrade-built-inを非nil値にカスタマイズしてからパッケージメニューかpackage-installからそれらのパッケージを一度アップグレードする必要があります。

package-upgrade-allやパッケージメニューのUといったコマンドを使うと一度に多くのパッケージがアップデートされるので、package-install-upgrade-built-inを非nil値にカスタマイズする場合には注意してください。あなたの意図に反して、これらのコマンドがビルトインパッケージをアーカイブ由来の新バージョンに上書きして置き換えてしまうかもしれません。少数のビルトインパッケージだけをアップデートしたい場合には、これらのバルクコマンド(bulk command: 一度に大量の処理を行うコマンド)を使わないでください。

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

By default, Emacs downloads packages from two archives: GNU ELPA and NonGNU ELPA. These are maintained by the Emacs developers and hosted by the GNU project. GNU ELPA contains GNU packages that we consider part of GNU Emacs, but are distributed separately from the core Emacs. NonGNU ELPA contains third-party packages whose copyright has not been assigned to the Free Software Foundation.24

This is controlled by the variable package-archives, whose value is a list of package archives known to Emacs. Each list element must have the form (id . location), where id is the name of a package archive and location is the URL or name of the package archive directory. You can alter this list if you wish to use third party package archives—but do so at your own risk, and use only third parties that you think you can trust!

User Option: package-archives

The value of this variable is an alist of package archives recognized by the Emacs package manager.

Each alist element corresponds to one archive, and should have the form (id . location), where id is the name of the archive (a string) and location is its base location (a string).

If the base location starts with ‘http:’ or ‘https:’, it is treated as an HTTP(S) URL, and packages are downloaded from this archive via HTTP(S) (as is the case for the default GNU archive).

Otherwise, the base location should be a directory name. In this case, Emacs retrieves packages from this archive via ordinary file access. Such local archives are mainly useful for testing.

パッケージアーカイブのメンテナーは、パッケージにサイン(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経由でこの変数の値のセットや変更を行う場合には、カスタマイズしたセッティングは早期initファイルに保存する必要があります。これを行うにはpackage-enable-at-startupのカスタマイズした値を保存する前に、変数custom-file (カスタマイズの保存を参照)の値が早期initファイルを指すようにセットまたは変更してください。

多くのパッケージのインストール後には、ユーザーオプション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’というステータスでパッケージメニューにリストされるはずです。

Emacsのバイトコードは極めて安定していますがバイトコードが古くなってしまったり、コンパイル済みファイルが依存するマクロが新しいバージョンのEmacsで変更されてしまう可能性もあります。特定のパッケージをリコンパイルするためにはM-x package-recompile、すべてのパッケージをリコンパイルするためにはM-x package-recompile-allというコマンドを使うことができます(インストール済みパッケージの数が多ければ後者コマンドの実行にかなりの時間を要するかもしれない)。


Footnotes

(24)

For more information about copyright assignments, see Why the FSF Gets Copyright Assignments from Contributors.


This page has generated for branch:work/emacs-30_8ac894e2246f25d2a2a97d866b10e6e0b0fede5a, commit:b7b3c5b81a7a4eec61faa3ed3d7c731d52d3987b to check Japanese translation.