Bash on Ubuntu on Windows で Emacs をビルドする

  • 22
    Like
  • 0
    Comment

2016/12/28 追記

こちらの方法 なら、ウィンドウサイズまわりの挙動も問題無いようです.

echo 0 > /proc/sys/kernel/randomize_va_space
sudo apt-get install libperl-dev
sudo apt-get install libgtk2.0-dev
curl -Ss -L https://gist.githubusercontent.com/nanasess/f04cb2a8926c5423e47efec4327b340a/raw/05b8ae147a6a3425f516c574c8d89471f1849bc6/xselect.c.patch | patch -p1
./configure x86_64-pc-linux-gnu --with-x-toolkit=gtk2 --with-libotf --with-m17n-flt --prefix=/usr/local/emacs
make
sudo make install
## Fix dbus session.conf
sudo sed -i 's$<listen>.*</listen>$<listen>tcp:host=localhost,port=0</listen>$' /etc/dbus-1/session.conf

echo 2 > /proc/sys/kernel/randomize_va_space

2016/11/8 追記

最近の emacs-snapshot なら X 経由で起動できるようです。

sudo add-apt-repository ppa:ubuntu-elisp/ppa
sudo apt-get update
sudo apt-get install emacs-snapshot
sudo update-alternatives --config emacs ## and select emacs-snapshot

See Also


Bash on Ubuntu on Windows で apt-get install emacs とすれば、 Emacs をインストールできます。ただし、 GUI の環境 で Emacs を起動しようとすると、以下のような Warning で起動できません。

(emacs:305): GConf-WARNING **: Client failed to connect to the D-BUS daemon:
Did not receive a reply. Possible causes include: the remote application did not send a reply, the message bus security policy blocked the reply, the reply timeout expired, or the network connection was broken.

どうも、 D-BUS と会話がうまくできないようなので、 --without-dbus でビルドすることにします。

必要なパッケージのインストール

sudo apt-get install libXpm-dev libjpeg-dev libgif-dev libtiff4-dev libncurses5-dev libgtk-3-dev libgnutls-dev libmagick++-dev

libgtk-3-dev 以外はお好みで。

exec-shield の問題の対応

そのまま make すると、 途中で core dump してしまう ので randomize_va_space を無効化しておきます。

sudo -s
echo 0 > /proc/sys/kernel/randomize_va_space

ビルド

curl -LO http://ftpmirror.gnu.org/emacs/emacs-24.5.tar.gz
tar xvzf emacs-24.5.tar.gz
cd emacs-24.5
./configure --with-x-toolkit=gtk3 --without-dbus --prefix=/usr/local/emacs
make
sudo make install

指定した --prefix にインストールされます。
上記の例の場合、 /usr/local/emacs/bin/emacs で起動します。

最後に

randomize_va_space を元に戻しておきましょう

echo 2 > /proc/sys/kernel/randomize_va_space

その他

AddressFamily inet 
ListenAddress 0.0.0.0 
X11UseLocalhost yes

AddressFamilyListenAddress よりも先に書く必要があります。

参考