2020年06月28日

Emacs のパッケージをできるだけ el-get-lock で lock した

el-get-lock を入れて lock していこうと思ってたけど、 週に1つも lock されていかない感じだったのと 新しい PC を購入してそっちに Emacs を入れる時にバージョンが異なると嫌だなってことで まとめて lock することにした。

途中でちょっと力尽きているので、 何をやったか情報を残すことにした。

力尽き始めてから記録を残すことにしたので 結構記憶頼りである……。

https://github.com/mugijiru/.emacs.d/pull/84 あとでこれを見ながら lock 対応を進めていく。

最初はこのブログ記事に残そうと思ってたけど、 後から個人的に見返る分には GitHub の PR の方が楽な気もしたので 情報の本体はあっちに譲ることにした。

結果、ここの情報量がほぼゼロである。うける〜。

というのもアレなので、 実際にどういう作業をしたかを書くか。

作業内容

Git から取得しているパッケージの hash 値の取得

まず ~.emacs.d/el-get/* について el-get.lock の保持する形式と同じような感じで雑に HEAD の hash 値を取得した

#!/bin/sh

cd ~/.emacs.d/el-get
dirs=$(ls -d *)

for dir in $dirs
do
    checksum=$(cd $dir && git rev-parse HEAD)
    echo "($dir :checksum \"$checksum\")"
done
Git 管理下じゃなかったやつの確認

これで取得されたやつの中には Git リポジトリから拾って来たやつじゃないのも混じってた。 その場合は .emacs.d の HEAD の値が取られてたので そいつらはとりあえず無視することにした

Git 管理下っぽいものを1つずつ lock

残ったやつ1つずつに対し M-x el-get-find-recipe-file でレシピを確認し、 GitHub や Git から取得しているようであれば、 el-get.lock に手で追加した上で M-x el-get-lock-checkout を実行して 指定したバージョンでの再インストールされることを確認していった。

最初は各フォルダで git rev-parse HEAD をして確認もしてたけど 何個かやってからは、el-get-lock を信用できそうということでそれはやめた。

request.el については取得した hash 値が消えてたのか、取得できなかったので 諦めて最新にした。

という感じで 90 個ぐらい lock した。しんどかった。

実は、最初はまとめてそれをやったんだけど、 それをすると実は Git 管理下じゃないのかなんかの理由で失敗するやつがたまにいて lock ファイルがおかしくなったりとかしていたので、 諦めて1個1個丁寧な作業をしたのであった……。

残りのものを1つずつチェック
emacswiki から入ってたやつ

そのまま el-get-lock-checkout すると最新が入る。 で、大体更新されてないので、そのまま入れちゃえ〜で済ませるパターンが多かった

CVS から入ってたやつ

emacs-w3m ですね。 とりあえず lock するのを一旦諦めた

http で入ってるやつ

diminish ですね。 諦めたけど、これも emacswiki と同様に Partial support なので 割り切って lock しても良かったかもしれない。

ただ Partial support で el-get-lock-checkout しても最新が入るようなので あまり意味がないかもしれない

MELPA から入ってたやつ
  • lock を諦めたパターン
    • どうせ活用してないってことで削除したパターン

      csv-mode が該当。 ただ、最近使おうとしてたので後で入れ直したいですね

    • lock したかったけど躊躇したパターン

      molokai-theme とかが該当。 動かなくなったら困るから下手なことはしないでおこう……ってやつ。 個別対応としたい。

  • lock したパターン

    基本的に MELPA 経由だったのを GitHub から取得するようにしたやつ。 MELPA 経由と GitHub から取得するのが混じってると 時々同じパッケージがそれぞれからインストールされるという厄介なことになるので……。

    • ファイル内のバージョン番号などから hash を特定したパターン

      dumb-jump などが該当。 バージョン固定しないと心配だったのでそうしたけど ここに該当するパターンのやつは、割と最新にしても良さそうな雰囲気があったな……

      vue-mode とかはこれのために recipe まで書いた……。 (el-get-bundle AdamNiederer/vue-mode) だけだと依存関係をどう解決するか不明だったので それなら自分で recipe 書いた方がいいや〜って。

    • 最新化しちゃったパターン

      最新入れても問題なさそうとか、使ってるのが最新だったからってのが大体こっち。 helm に関しては多分色々ミスって事故で最新になった。

ELPA から入ってたやつ

rainbow-mode などが該当。 こいつらは lock もできないわ、Git からも取りにくいわでちょっと諦めた。 けど、el-get-lock が emacsmirror をサポートしているので、 そっちを使うようにしたら解決しそう。

結果

100個以上のパッケージが lock 対象になった。 https://github.com/mugijiru/.emacs.d/pull/84/files#diff-8e0ba40dc55379d834acec2b2ae92e67

あとは今回対象外となったパッケージを倒したい

タグ:el-get
posted by 麦汁 at 18:50 | Comment(0) | emacs | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント: