はじめに
ある日突然(というか最近)Caskがうまく動かなくなったので,解決策を模索しました.
以下の要件に合致する人向けの記事です.
- MacOSX ユーザ
- Emacs のパッケージを Cask で管理している
- depends-on のオプションで URI を指定している(特に Github の)
- Dependency で始まる謎のエラーが発生して処理が止まる
現象
cask install
あるいは cask update
を発行すると,次のようなエラーが表示されて処理が止まってしまう.
Dependency moom failed to install: Command ’(env LC_ALL=C
git remote show -n origin)’ exited with non-zero status 128:
fatal: Not a git repository (or any of the parent directories): .git
Dependency の後ろがインストールが失敗するパッケージ名で, Cask ファイルに次のように記載されている(一例).
(depends-on "moom" :git "https://github.com/takaxp/moom.git")
これは MELPA等のリポジトリに登録されていないパッケージを URIを直接指定してインストールするための設定です.
(余談)最近 MELPA から除外された yatex を管理するには,次の設定を使います.
(後日談)パッケージオーナー様にご協力いただき,yatex はめでたく MELPA に戻りました.
(depends-on "yatex" :hg "http://www.yatex.org/hgrepos/yatex")
対策
temporary-file-directory
の値を確認して,Cask用の一時フォルダを削除する.
手順
(留意点)以下は自己責任で実施してください.著者は一切の責任を負いません.
- Emacs を起動して
temporary-file-directory
の値を確認する
- 例:/var/folders/dj/hk----------g28--v5f----------/T/
- 当該ディレクトリに移動して
cask
ディレクトリを特定する
- 例:./T/cask のはずです.
- 特定したcaskディレクトリを削除する(それ以外のディレクトリには触れないこと)
おわりに
この問題は,「~/.emacs.d/.cask
以下に置かれるファイル群を削除しても意味がない」のが落とし穴です.上に示した場所にあるファイル群を削除することで読者の問題が解決することをお祈り申し上げます.
繰り返しますが(他のプログラムが使用しているであろう)Caskに関係ない一時フォルダには触らないようにしてください.