私は何処でも可能な限り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 workwget 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.rpmrpm -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.1ln -s /usr/local/bin/mg /usr/bin/emacs
ちゃんと記録してなかったが確か30MB位で収まってたハズ。許容範囲であろう。いわゆるマルチバイト文字には未対応なのであくまでメンテナンス用だ。