Last modified: Wed Apr 19 23:03:32 JST 2023

MSYS2 からの Emacs インストール

1. MSYS2 のインストール

まずはよく参照させていただいている金子邦彦さんの OUT02: MSYS2 のインストール... (Windows 上) に従い作業しました. 環境変数の設定や導入するパッケージも例のままです. (私の場合 Fortran などは使わないのですが取捨選択するのも面倒なので 入れちゃいました.)

MSYS2 で採用しているパッケージマネージャー(その名も pacman), Arch Linux からの流れだとのことですが便利ですね. MSYS2 が普及するのも納得できます.

2. Emacs のインストール

ここで MSYS2 の機能が生きます. シェル(MSYS2 MINGW64)から以下を実行するだけ. この時点で最新の Emacs 28.2 がインストールされました.

  pacman -S mingw-w64-x86_64-emacs

シェルから emacs[RET] として起動確認. OK, 簡単です.

3. mozc のインストール

作業に先立って「Mozc サーバー」は MSYS2 パッケージの中に無い様なので 例によって 「Google 日本語入力」をインストールしました.

続いて mozc_emacs_helper のインストールも問題なし. emacs は C:\msys64\mingw64\bin (= /mingw64/bin) 以下にインストールされているので, mozc_emacs_helper も同じディレクトリにコピー.

そして (Emacs の) Mozc パッケージのインストール. ここから問題が発生しました. ~/emacs.d/init.el に melpa などのアドレスを設定して 'M-x package-list-packages' コマンドを実行. すると エコー領域に 「Importing package-keyring.gpg...」と表示されたまま, いつまで経っても done にならない(= プログラムが進まない). gpg の問題? firewall に何か引っかかっている? などあれこれ調べましたが 直りません. どうもサーバーとの間の signature が正しくチェックできないようです. 最終的に init.el に signature のチェックをしないようにする記述を加えて 逃げました.

[~/.emacs.d/init.el] (先頭の 1 行はエラー対策. 更にアドレスは melpa のみに)

(setq package-check-signature nil)
(require 'package)
(add-to-list 'package-archives '("melpa" . "https://melpa.org/packages/"))
;; (add-to-list 'package-archives '("melpa-stable" . "https://stable.melpa.org/packages/"))
;; (add-to-list 'package-archives '("marmalade" . "https://marmalade-repo.org/packages/"))
;; (add-to-list 'package-archives '("org" . "http://orgmode.org/elpa/"))
(package-initialize)

これで何とか mozc パッケージを入れ終わりました.

4. boiled-mozc のインストール

次に boiled_mozc のインストール. これは問題なし.

5. Emacs での Mozc の設定 & 動作確認

これで準備完了. Emacs での Mozc の設定 & 動作確認を行います. 設定の方はほとんど今まで通り, 違いと言えば init.el の中の mozc_emacs_helper.exe のディレクトリ指定が変わった程度...

そして動作確認. ここでまたもや問題発生. 'C-\' で Mozc モードに移行するはずがいつまで経っても 'mozc.el: Starting mozc-helper-process...' のまま. 'done' となりません. どうも Google IME に限らず, どの IME にも接続できない様です. これじゃ IME 対応していない頃の古い Emacs に逆戻りです... ん, 待てよ. もしかして IME 対応部分を外してコンパイルしているんじゃ...

試しに本家のダウンロードページ DL01: GNU Emacs - Download & installationから 最新の Windows 版をダウンロードして(MSYS2 の Emacs とぶつからないように) C:\emacs 以下に展開, こちらも同じように Mozc 設定をして実行してみました. (実際には MSYS2 で設定したのと同じ init.el を読み込むので何もする必要なし.) 問題なく Mozc モードが動きます. boiled-mozc も OK.

MSYS2 でインストールされる Emacs とファイルサイズを比べてみると, 本家からダウンロードしたものに比べ MSYS2 版は明らかにファイルが小さい. きっと MSYS2 版 Emacs は IME 非対応なんだろうと思い, 利用を断念. 結局, MSYS2 から mingw64 関連のパッケージを全部削除し, その後で C:\msys64\mingw64 以下に C:\emacs 以下をゴソッと移動させました. (一旦全て mingw64 関係を削除したのは, 参照するライブラリのバージョン違い などの問題を避けたかったためです.)

MSYS2 のパッケージ削除も 'pacman -Rs <パッケージ>' で実行 できるのですが, 依存関係もあり面倒でした. 一旦 MSYS2 を削除し 最低限のインストールからやり直したほうが良かったかもしれません. 一応頻繁に使った pacman オプションを列挙しておきます.

pacman -h     (Help,   ヘルプ)
pacman -h -S  (        'S' コマンドのヘルプ)
pacman -Qqe   (Query,  'q' は quiet(verbose の逆), 'e' は explicit で明示的の意. 自分でインストールしたパッケージのリスト)
pacman -Syu   (Sync,   'y' は refresh, 'u' は sysupgrade, システム更新)
pacman -S XX  (        パッケージ XX のインストール)
pacman -Si XX (        'i' は info, パッケージ XX の情報表示)
pacman -Ss XX (        's' は search, XX 関連のパッケージを表示)
pacman -Rs XX (Remove, 's' は recursive, パッケージ XX の削除)

このような紆余曲折を経て, 今は問題なく Emacs を動かしています. 結局は MSYS2 には mingw64 関係のパッケージを入れずに, 自分で mingw64 以下に Emacs を展開したことになります.

私の推測では MSYS2 の Emacs は IME 非対応ですが, うまく動かせなかったのは 別の理由かもしれません. ご存知の方はお教えください. 本当は MSYS2 で mingw64 でのコンパイル環境を整え, そこで Emacs の ソースコンパイルを行えばいいのでしょうが, 「簡単に導入」と言う 主旨からは外れてしまうので, 今回はここまでとします. (今後もネットで MSYS2 Emacs の動向は追いかけます :-)

MSYS2 のパッケージに mingw-w64-x86_64-emacs の他に mingw-w64-x86_64-liberime なんてのを見つけました. Rime は中国語関連の IME の様で, その関連の emacs ライブラリ群のようです. こんなものが存在するなら, 日本語 IME 非対応はありうるかも...