8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-10-17

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

関連記事:
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アプリケーションに関わらず、いざとなったらコンテナと連携できるというのは安心できますね。
仮想化最高。

参考

8
7
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
8
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?