読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

多様なelispインストール手法に関する一考察 #kansai_emacs

kansai_emacs #5

なぜelispインストール手法について発表するのか

  • ナイスなelispをinstall,updateしないわけにはいかないから
    • helm, auto-complete, twittering-mode
  • インストール手法がいろいろあるから
    • 各手法の特徴を伝えたい
  • インストール手法の手軽さを啓蒙したい

elispファイルだけをディレクトリに移動するのは更新作業がめんどいから×

ほぼこっちに書いてある
http://sheephead.homelinux.org/2012/04/27/6989/

  1. auto-install.el
  2. el-get.el
  3. package.el
  4. my設定リポジトリ内で完結させる

1と3を併用している人が多い

auto-install.el

  • 指定したurlから1つのelispを指定dirにダウンロード
  • すごくシンプルで分かりやすい
  • 残念なのは、Emacs Wikiから持ってきているが、それが最新とは限らない
  • auto-install-batch-listで自前のものを編集する必要があるときがある

el-get.el

  • 様々なelisp配布形式に対応する"recipe"に基づいてインストールを行う(homebrewでいうところのformula)
  • レシピを書いたら何でもできるのがメリット
  • ただしレシピを書くために学習しないといけない

package.el

  • パッケージアーカイブサイトからelispをインストールする(ELPA Marmalade MELPA)
  • アップグレードやdeleteも簡単
  • el-getrecipeのような手続きをアーカイブサイト側が出来る
  • elisp配布者との間にパッケージ管理サイトが入るためアーカイブのやつが最新版とは限らない
  • アーカイブサイトを自力で作成することも可能

各パッケージアーカイブサイトの特徴

  • ELPA
    • 登録elispは古くかつ少ない。旬のものはない
  • Marmalade
    • 現在はサイトメンテされてなさそう
    • 好き勝手にuploadできるのがよくもあり悪くもある
  • MELPA
    • おそらく最も旬
    • recipeと同等のものをサーバサイドで管理してくれる

my設定レポジトリ内で完結させる

  • 自分のレポジトリ内に拡張elispもコミットする
    • emacs-starter-kitってこれにあたるのか?
  • gitであればsubmoduleが便利
    • github経由で配布しようと思えば出来るが、pythonの開発環境系がひどい
  • 復元が簡単に出来るのはアドバンテージ
  • ただ、updateは逐次自分でやらないといけない

比較

auto-installはシンプル(機能が少ない)
el-getはプロユース(玄人向けすぎる)
package.elはメンテの負担をサーバサイドでやってくれていて、何より旬(でも最新とは限らない)
package.elはEmacs24で標準装備だそうです。

バイトコンパイルすると実行速度が2倍3倍近く速くなるけど、
バイトコンパイルするとemacsバージョンをまたげないことがある

Gentooが好きならel-getを応援すべき
Debianが好きならpackage.el(MELPA)を応援すべき

ディストリビューションごとに提供できないパッケージもあるので、
Emacs独自のパッケージ管理システムがあればいいんだけどね。

bundle.el

vundle.vim, neobundle.vimEmacs版があればいいけど…

#gitでelispレポジトリを非同期でとってきて
#load-pathを通す
だけ

非同期のgit cloneも可能

同じpackage.elでどのアーカイブサイトで
パッケージをインストールできるか選べるので、
メタ情報は結構かぶっているかもしれない。
というか、MELPAはgithubで管理されているが
Marmaladeは好き勝手にやってるだけなのが違いなのかもしれん。