Emacs
archLinux
lxc
systemd
systemd-nspawn

Arch Linuxで、Systemd-nspawnによる仮想環境を構築し、Emacs-mozcをインストールする方法

More than 1 year has passed since last update.

誰が得をするのかという内容ですが、それなりに苦労したので記事にしてみます。

関連記事:

Arch LinuxでSystemd-nspawnを使ってSpacemacsをGUIで起動し、Emacs-mozcを使う


動機

Arch Linuxではfcitx-mozcとemacs-mozcが競合しており、双方を使うことができない。

そこで、Systemd-nspawnによりコンテナを作り、そこで最低限のアプリケーションをインストールし、emacs-mozcを利用する。


手順

ゴールは、ホスト側のEmacsが、コンテナ内にインストールされたmozc_emacs_helperを呼び出せるようにすること


Arch Linuxのコンテナを作成

Systemd-nspawnを使う

mkdir -p $HOME/var/container/arch

sudo pacstrap -i -c -d $HOME/var/container/arch base base-devel


コンテナ内にemacs-mozcをインストール

cat << 'EOF' >> /etc/pacman.conf

[pnsft-pur]
SigLevel = Optional TrustAll
Server = http://downloads.sourceforge.net/project/pnsft-aur/pur/
$arch
EOF

pacman -Syy
pacman -S emacs emacs-mozc

useradd --create-home arch-container-user


動作確認

echo -e '(0 CreateSession)\n(1 SendKey 1 97)' |

sudo systemd-nspawn --quiet -D $HOME/var/container/arch -u arch-container-user mozc_emacs_helper

エラーが帰ってこなければOK


ホストのEmacsにmozcをインストール

M-x package-install mozc

で入れた後、


init.el

(require 'mozc)


を追加する


ホストにmozc_emacs_helperコマンドを追加


$HOME/bin/mozc_emacs_helper

#!/bin/bash

sudo systemd-nspawn --quiet -D $HOME/var/container/mozc_emacs_helper -u arch mozc_emacs_helper




  • --quietオプションを入れるのがポイントで、入れないとSystemd-nspawnのメッセージが入り、mozc.elが動作しない

  • コンテナ側のユーザーがrootだと、mozc_emacs_helperがうまく動作しないので、archユーザーを指定する

  • コンテナに入る時、パスワード無しでsudoできるよう、ホスト側のvisudoで設定しておく


やってみる

Emacsを起動して、M-x mozc-modeします。

こんな感じになりました。

Screenshot_2016-10-17_12-37-10.png


感想

最近はEmacsをGUIで起動しないので、正直あまり使い道は無さそうです。

が、GUI/CUIアプリケーションに関わらず、いざとなったらコンテナと連携できるというのは安心できますね。

仮想化最高。


参考

http://qiita.com/scalper/items/a1ab77ae7b2b06fb3f49