背景
macOS Catalinaにおいて、32-bit アプリケーションが切り捨てられたことを受けてLilyPondが死にました。
ということでDockerを使って動かそうという話です。
使用したDockerfile等はseekworser/lilypond-dockerfileに登録してあります。
Implementation
基本的にはDocker image上でLilyPondを動かすだけですが、なるべく意識せずに動かせるように、
- Docker image上に/lilypondディレクトリを作成
- Host側のカレントワーキングディレクトリを/lilypondにマウントし、container起動時に/lilypond内でlilypondコマンドを実行
ということをしています。実際に使用したDockerfileは次の通りです。
from ubuntu:bionic
copy entrypoint /entrypoint
run sed -i.bak -e "s%http://archive.ubuntu.com/ubuntu/%http://ftp.jaist.ac.jp/pub/Linux/ubuntu/%g" /etc/apt/sources.list \
&& apt update \
&& apt -y install lilypond \
&& chmod +x /entrypoint
entrypoint ["/entrypoint"]
#! /bin/bash
cd /lilypond
lilypond "$@"
また、起動時にいちいちdockerコマンドを打つのは面倒なのでHost側のlilypondを書き換えておきます。(Host側にインストールしていたlilypondはアンインストールしておきます。)
#! /bin/bash
docker run --rm -v $(pwd):/lilypond seekworser/lilypond "$@"
上記のファイルを作成して/usr/local/binに置き、chmod +xすれば完成です。
macOS Catalina上でlilypondが動きました!
やってみて
○ 元々、別でインストールしていたLaTeXのghostscriptとLilyPondのghostscriptが2つあって、参照がぐちゃぐちゃになっていた(一回それでハマった)ので、Docker上で環境を分離できたのはよかった。
○ 想定していたほど起動が遅いわけではない。
× Docker image上にLaTeXを別でインストールする関係で、Docker imageのサイズが1.3 GBくらいある。(確か元々はlocalのLaTeXが使えてた...はず)