俺#

新潟市でIT業を営むおっさんのブログ。

#centos8 にコンパクトな #emacs クローン「 #mg 」をインストールする

私は何処でも可能な限りEmacsをインストールする。設定ファイルを弄る程度なのでEmacsのマルチな性能は不要なんだけども、DOS時代からEmacsクローン*1を使っていたので「CUIで使うエディタはemacs」と脳味噌に染みついているのだった。とりあえずviは〇ね(ぉい)

Emacsをインストールすると400MB以上も容量を食ってしまうが(Centos8の場合)、今時のストレージはデカいので問題ないのである。しかし、コンパクトにまとめたいDockerイメージの場合には看過できなくなる。元が300MB位なのに700MBに!これはダメでしょ。

というわけで、サイズの小さいEmacsクローンを探してみたところ「mg」というプロダクトが見つかった。

GitHub - hboetes/mg: Portable version of the OpenBSD maintained mg, micro emacs clone

元々のmgはOpenBSD由来で、libbsdを使用して他でも動くようポーティングされたバージョンだそうだ。有難い事である。

Dockerコンテナ内でmakeしようとするとmakeの時に必要なものまで入れないといけないので、ホストか別のmake用コンテナでmakeし、お目当てのコンテナではmake installで実行される手順を手動で行うことで追加容量を最小限に抑える。

makeする(ホスト or make用コンテナで実行)

# 標準的な開発用パッケージをまとめてinstall

dnf groupinstall "Development Tools"

# libbsdのdevelパッケージをinstall

# https://pkgs.org/download/libbsd

mkdir work
cd work

wget http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libbsd-0.8.3-1.el7.x86_64.rpm
wget http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libbsd-devel-0.8.3-1.el7.x86_64.rpm

rpm -i libbsd-0.8.3-1.el7.x86_64.rpm
rpm -i libbsd-devel-0.8.3-1.el7.x86_64.rpm

# ncursesのdevelパッケージをinstall

dnf install ncurses ncurses-devel

# makeする

# https://github.com/hboetes/mg/

mkdir mg
cd mg/
wget https://github.com/hboetes/mg/archive/master.zip
unzip master.zip
cd mg-master/
make clean
make

# 普通にインストールしてみる

make install

手動でinstallする(お目当てのコンテナで実行)

# libbsdのパッケージをinstall

wget http://download-ib01.fedoraproject.org/pub/epel/7/x86_64/Packages/l/libbsd-0.8.3-1.el7.x86_64.rpm
rpm -i libbsd-0.8.3-1.el7.x86_64.rpm

# ncursesのパッケージをinstall

dnf install ncurses

# make済みmgをinstall

cd work/mg/mg-master/

/usr/bin/install -d /usr/local/bin
/usr/bin/install -d /usr/local/man/man1
/usr/bin/install -m 755 mg /usr/local/bin/mg
/usr/bin/install -m 444 mg.1 /usr/local/man/man1/mg.1

# emacsシンボリックリンクを張る

ln -s /usr/local/bin/mg /usr/bin/emacs

ちゃんと記録してなかったが確か30MB位で収まってたハズ。許容範囲であろう。いわゆるマルチバイト文字には未対応なのであくまでメンテナンス用だ。

*1:PC-9801の「NIT Emacs」とかサイコーでしたな~。