このエントリーをはてなブックマークに追加

概要

package.elについて示す.

インストール

Emacs 24では標準添付されているので, Emacs 24以降を使用している場合は, インストールは不要である.

Emacs 23ユーザーの方

http://bit.ly/pkg-el23から Emacs23向けの package.elをダウンロードし, load-pathの通ったディレクトリに配置してください.

各リポジトリについて

GNU ELPA

公式のリポジトリ. デフォルトの設定では, このリポジトリしか利用することはできない. 登録に手間がかかるためか, 登録されているパッケージ数は少なめであるが, 他の リポジトリに比べると登録されているパッケージの信頼度は高い.

Marmalade

非公式のリポジトリ. アカウントを作れば誰でもパッケージを登録することが可能. MELPAにも登録されているパッケージの場合, 安定版のパッケージを Marmaladeにアップロードすると いう使われ方が多い.

MELPA

非公式のリポジトリ. githubのリポジトリに pull requestを 送ることで, パッケージを登録することができる. リポジトリに変更がある度に更新されるので, 登録されて いるパッケージの最新版をインストールすることができる(stable版もインストールできるようにする流れが あるが 2013年 9月 24日時点で未実装).

MELPA-stable

安定版 MELPA. 最新のリビジョンでなく, 最新のタグのバージョンが取得できる.

Org

最新版 Org modeのリポジトリ.

リポジトリの登録

package-archives変数(連想リスト)にリポジトリ情報が格納されている. 新規に追加する場合は ("リポジトリ名" . "URL")をこの変数に add-to-listすればよい.

設定例

(require 'package)

;; MELPAを追加
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/") t)

;; MELPA-stableを追加
(add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/") t)

;; Marmaladeを追加
(add-to-list 'package-archives  '("marmalade" . "http://marmalade-repo.org/packages/") t)

;; Orgを追加
(add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/") t)

;; 初期化
(package-initialize)

利用方法

M-x package-install

指定したパッケージをインストールする.

M-x package-refresh-contents

パッケージ情報を更新する. 最新のものをインストールしたい場合は, 事前に実行して置くと 良い. 後述の package-list-packagesからインストールを行う場合は不要.

M-x package-list-packages

パッケージ操作バッファを開く.

package-list-packages

package-list-packagesでの操作一覧

キー概要
`r`パッケージ一覧の更新
`x`マークの実行
`U`Upgrade
`i`インストールマークをつける
`d`削除マークをつける
`~`古いパッケージに削除マークをつける
`u`マークを除去する
`?`パッケージの概要を表示
`n`次の行へ移動
`p`前の行へ移動
`h`help
`q`, `z`終了

NOTE

package-list-packagesでは package-refresh-contentsがまず行われるので, パッケージ更新の時間を要する. パッケージ情報が既に更新済み等の場合は, パッケージ情報の更新を行わない package-list-packages-no-fetchを実行すると良い.

package.elを使ったパッケージ管理例

package.elを使ったパッケージ管理方法について示す.

(package-installed-p package-name)package-nameがインストール済みで あるかを確認することができるので, package-installed-pnilを返すパッケージを インストールすれば, 同じ環境を構築することができる.

以下のようなファイルを用意し, M-x eval-bufferを実行することで, インストールされて いないパッケージをインストールすることができる.

(require 'package)
;; MELPAのみ追加
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
(package-initialize)

;; パッケージ情報の更新
(package-refresh-contents)

;; インストールするパッケージ
(defvar my/favorite-packages
  '(
    ;;;; for auto-complete
    auto-complete fuzzy popup pos-tip

    ;;;; buffer utils
    popwin elscreen yascroll buffer-move

    ;;;; flymake
    flycheck flymake-jslint

    ;;;; go
    go-mode

    ;;;; python
    jedi

    ;;;; helm
    helm

    ;;;; git
    magit git-gutter
    ))

;; my/favorite-packagesからインストールしていないパッケージをインストール
(dolist (package my/favorite-packages)
  (unless (package-installed-p package)
    (package-install package)))

NOTE

package-installed-p関数はあくまでインストールしているかどうかを 知らせるだけなので, アップグレードできるかどうかを検知できるわけではない.

packageの更新

package-list-packagesを実行し, U, xとすることで, インストール済みの パッケージをすべて upgradeできる.

関連 URL