概要
Windows10上のSpacemacsで外部ライブラリに定義ジャンプ ( Space g g
とか)しようとすると、以下のエラーが出る。
apply: Searching for program: No such file or directory, unzip
unzip
なるものが見つからないと言われている。
この手のエラーは、Windowsに該当するパッケージをインストールすると、ふつうは解決する。実際によく似た質問もあった。
Emacs work with archive. What is the best package?
unzipをインストールしたのに見つからない
しかし、MSYS2で unzip
をインストールしたのに C:\msys64\mingw64\bin
下に unzip
がなかった。
MSYS2で確認してみると、確かにインストールされているはず。
$ pacman -Ss unzip
mingw32/mingw-w64-i686-perl 5.28.0-1
A highly capable, feature-rich programming language (mingw-w64)
mingw32/mingw-w64-i686-quazip 0.8.1-1
C++ wrapper for the Gilles Vollant's ZIP/UNZIP C package (mingw-w64)
mingw64/mingw-w64-x86_64-perl 5.28.0-1
A highly capable, feature-rich programming language (mingw-w64)
mingw64/mingw-w64-x86_64-quazip 0.8.1-1
C++ wrapper for the Gilles Vollant's ZIP/UNZIP C package (mingw-w64)
msys/unzip 6.0-2 (compression) [インストール済み]
Unpacks .zip archives such as those made by PKZIP
パッケージのインストール場所が違っていた
よく見るとpacmanの結果では msys/unzip
と表示されている。
もしやと思って探すと C:\msys64\usr\bin
下に unzip
を見つけた。
Spacemacs側では C:\msys64\mingw64\bin
のほう (Hunspellとかが入っていた)を実行パスに加えていたので、 No such file or directory
と言われていた。
これを解決するため、Spacemacsに実行パス C:\msys64\usr\bin
も指定する。
.spacemacs
( Space f e d
)の user-init()
内に追記する。
(defun dotspacemacs/user-init ()
"Initialization for user code:
This function is called immediately after `dotspacemacs/init', before layer
configuration.
It is mostly for variables that should be set before packages are loaded.
If you are unsure, try setting them in `dotspacemacs/user-config' first."
;; MSYS2経由でインストールしたパッケージを使う
(add-to-list 'exec-path "C:\\msys64\\mingw64\\bin")
(add-to-list 'exec-path "C:\\msys64\\usr\\bin") ; unzipとか
)
あまり関係ないが、「 exec-path
を追加しろよな!」という話をこちらで見つけて、改めて見直したことが解決の糸口となった。
How to get emacs Zip-Archive mode to work on Windows