既にある自分の Cygwin 環境で gnupack の emacs だけ使ってみたい

うちの環境は 64bit Windows 10 で Cygwin 64bit 版を利用している。

emacsCygwin に入っていたのをターミナルで使っていたが、最近そぞろに GUI 版を使いたくなってきたので gnupack の emacs を入れることにした。

 

ここにその顛末を述べたいと思う。

 

gnupack をインストールする

gnupack Users Guide

gnupackの開発メモ

上記のサイトを参考にインストールする。

emacs だけ欲しいので

パッケージ emacs for gnupack - gnupack - OSDN

にある emacs 24.2 を入れればいいのかもしれないが、 gnupack に入っている emacs のほうが 24.5 とバージョンが新しいようなので欲を掻いて

gnupack_devel-13.06-2015.11.08.exe

を入れることにした。

 

インストール方法は Users Guide に記載あり。ほぼダウンロードして解凍するだけ。

C:\gnupack

にインストールした。

 

emacs の起動

もともと入っている 64bit 版 Cygwinbash を起動し、その中から gnupack Users Guide に書かれた startup_emacs.exe を使って起動を試みる。

 $ /cygdrive/c/gnupack/gnupack_devel-13.06-2015.11.08/startup_emacs.exe

 

起動するにはするが、これだと gnupack 専用の設定で起動してしまう。

 

HOMEの位置も変わってしまうし、いつも使っている .emacs も読んでくれない。

なんか変な感じ。

 

そこで、直接 emacs を起動してみる。

 $ /cygdrive/c/gnupack/gnupack_devel-13.06-2015.11.08/app/cygwin/emacs/bin/emacs.exe 

すると、ウィンドウがポップアップして落ちる。

どうやら 64bit 版 Cygwin からは直接起動できないらしい…。

 

おとなしく gnupack が作り上げた世界で生きていくことも選択肢の一つだが、ここではとりあえず、ふつうの Cygwin 環境で gnupack の提供する emacs だけ使えるようにしてみる。

 

32bit 版 Cygwin を入れる

64bit版 Cygwin からは直接起動できないようなので 32bit Cygwin を入れることにした。(ここで、「Cygwin を入れ直すなら gnupack の構築した世界で生きていけばいいのでは……」という葛藤としばし戦うことになる)

 

Cygwin は ==> こちら

setup-x86.exe (32-bit installation) を使う。 

この記事の執筆時点での最新は 2.5.1。

Cygwinのインストールについては64bit版の別の記事もご参考にどうぞ) 

 

32bit 版 Cygwin から emacs を直接起動してみる

インストールも無事終わり bash を起動して、そこから gnupack の emacs を起動してみる。

すると、下の warning が出て起動しない。 

$ /cygdrive/c/gnupack/gnupack_devel-13.06-2015.11.08/app/cygwin/emacs/bin/emacs
Warning: arch-dependent data dir `/app/cygwin/emacs/libexec/emacs/24.5/i686-pc-cygwin/': No such file or directory
Warning: arch-independent data dir `/app/cygwin/emacs/share/emacs/24.5/etc/': No such file or directory
Warning: Lisp directory `/app/cygwin/emacs/share/emacs/24.5/lisp': No such file or directory
Error: charsets directory not found:
/app/cygwin/emacs/share/emacs/24.5/etc/charsets
Emacs will not function correctly without the character map files.
Please check your installation!

 

/app をマウントする

どうやら gnupack の提供する /app が見えないために emacs が起動しないようなので gnupack についてきた /etc/fstab を参考に /app をマウントする。

 

gnupack の /etc/fstab

# For a description of the file format, see the Users Guide
# http://cygwin.com/cygwin-ug-net/using.html#mount-table
# This is default anyway:
# none /cygdrive cygdrive binary,posix=0,user 0 0
none / cygdrive binary,nouser,noacl,posix=0 0 0
C:/gnupack/gnupack_devel-13.06-2015.11.08/home /home ntfs binary,nouser,noacl,posix=0 0 0
C:/Users/ユーザー名/AppData/Local/Temp/gnupack /tmp ntfs binary,nouser,noacl,posix=0 0 0
C:/gnupack/gnupack_devel-13.06-2015.11.08/app/cygwin/local /usr/local ntfs binary,nouser,noacl,posix=0 0 0
C:/gnupack/gnupack_devel-13.06-2015.11.08 /root ntfs binary,nouser,noacl,posix=0 0 0
C:/gnupack/gnupack_devel-13.06-2015.11.08/app /app ntfs binary,nouser,noacl,posix=0 0 0
C:/Users/ユーザー名/Desktop /desktop ntfs binary,nouser,noacl,posix=0 0 0
C:/Users/ユーザー名/Desktop /top ntfs binary,nouser,noacl,posix=0 0 0

 

 /app は C:/gnupack/gnupack_devel-13.06-2015.11.08/app が本体らしいので、うちの Cygwin の /etc/fstab にも同じ設定を追加する。

# /etc/fstab
#
#    This file is read once by the first process in a Cygwin process tree.
#    To pick up changes, restart all Cygwin processes.  For a description
#    see https://cygwin.com/cygwin-ug-net/using.html#mount-table

# This is default anyway:
none /cygdrive cygdrive binary,posix=0,user 0 0
#none / cygdrive binary,nouser,noacl,posix=0 0 0
#C:/gnupack/gnupack_devel-13.06-2015.11.08/home /home ntfs binary,nouser,noacl,posix=0 0 0
#C:/Users/ユーザー名/AppData/Local/Temp/gnupack /tmp ntfs binary,nouser,noacl,posix=0 0 0
#C:/gnupack/gnupack_devel-13.06-2015.11.08/app/cygwin/local /usr/local ntfs binary,nouser,noacl,posix=0 0 0
#C:/gnupack/gnupack_devel-13.06-2015.11.08 /root ntfs binary,nouser,noacl,posix=0 0 0
C:/gnupack/gnupack_devel-13.06-2015.11.08/app /app ntfs binary,nouser,noacl,posix=0 0 0
#C:/Users/ユーザー名/Desktop /desktop ntfs binary,nouser,noacl,posix=0 0 0
#C:/Users/ユーザー名/Desktop /top ntfs binary,nouser,noacl,posix=0 0 0

 

とりあえず、全部コピペして /app 以外はコメントアウト。 /etc/fstab を保存して

$ mount  /app

を実行してマウント。

 

再度 emacsCygwin から実行してみる

 

$ /app/cygwin/emacs/bin/emacs  &

 

動いた!

 

その他の設定

gnupack の local に入っている諸々にアクセスできるように local もマウントしておいたほうがいいかもしれない。

 

でも /usr/local にマウントされるので、自分で /usr/local にインストールしたものがあるとそれは使えなくなる。

 

そういう向きは、とりあえず gnupack の local/bin に PATH だけ通しておいてもいいかもしれない。

 

.bashrc

  export PATH=/app/cygwin/local/bin:$PATH 

 

私の場合、32bit  Cygwin を入れたばかりで /usr/local には空の bin, etc, lib ディレクトリがあるだけなので mount してみた。

 

/etc/fstab で下の設定のコメントを外し

C:/gnupack/gnupack_devel-13.06-2015.11.08/app/cygwin/local  /usr/local  ntfs binary,nouser,noacl,posix=0 0 0

 /usr/local にマウントする

$ mount  /usr/local

こうすると gnupack に入っている日本語 man も表示出来てありがたい。

$ man 3 printf

 

PRINTF(3)                             Linux Programmer's Manual                            PRINTF(3)

名前
       printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprintf - 指定された書式に
       変換して出力を行う

書式
       #include <stdio.h>

       int printf(const char *format, ...);

...(後略)...

 

やってみたことリスト

今回は、とりあえず起動しただけ。まだ使い込んでいないのでちゃんと動くのか、ちょっと不安だけど、下のようなことは出来た。

  • Cygwinbash から gnupack の emacs を直接起動。OK
  • /app/cygwin/emacs/bin/emacs ~/.bashrc として自分の .bashrc が開く。(gnupack のホームのものではなく)
  • Cygwin の標準的なドライブ指定方式 /cygdrive/c で Cドライブにアクセス。OK。(gnupack では /cygdrive はマウントされない)
  • 日本語入力 OK。ATOK使えた。
  • テキストファイルに utf-8-unix で書いて保存。OK
  • M-x complile 実行。OK。 g++ -g -Wall -std=c++14 -o exe-name src-name.cpp を実行。コンパイルも通り、実行したら動いた。

 

ちょっと前には 64bit Windows では、 64bit Cygwin じゃないとダメなんじゃないかと思っていたけど、気のせいだったかな。それとも Cygwin のほうでなにか対処したのかな。 

 

最後に

今回は、既存の環境に gnupack の emacs だけを追加してみる方法を検討してみたが、その作業のあいだ gnupack が提供してくれる環境を使っていくなかで、これでもいいかな、いやむしろこっちのほうがいいかな、という気持ちに傾きつつある。

どうしよう。