Lilypond を Mac OS 10.2 で使う

(2005.11.22. 追記) Lilypond 2.6 から、Mac OS 10.3 用のバイナリが配布されるようになった。Fink は必要なくなり、アプリケーションパッケージのドラッグコピーでインストールできる。スコアの .ly ファイルをアプリケーションアイコンにドラッグ&ドロップすると、内蔵テキストエディタで開くことができ、そこでコマンド+R (Typeset File) とすると、コンパイルして生成した pdf ファイルをプレビューで開くところまでやってくれる。かなり「普通のアプリケーション」に近づいた。

 しかし使いこなすのはなかなか難しいな。記号とかが「ちょっとずれている」とか、「もうちょっと段の間隔を狭くすればこのページにもう一段入るのに」とか思ったときに、どこをどういじればよいのかすぐにはわからない。一通りのコツをつかんでしまえばいろいろできるんだろうけど。

 そういうわけで、以下は古い情報です。一応残しておきます。


(2004.5.9. 記)

1. Fink 経由のインストール

 Lilypond 公式サイトにソースが公開されているが、Mac OS X でコンパイルするには大量のパッチが必要。Fink 経由でインストールするのが事実上唯一の選択肢のようだ。2004/05/09 現在、10.2 用の最新版は 2.0.1 で、Fink の unstable ツリーにある (package lilypond)。分類が text なのは一見奇妙だが、音楽ソフトというよりは TeX の仲間と考えた方が自然だからだろう。

 Mac OS 10.2 にインストールするには、Fink のダウンロードページに従って、次の手順で進める。(バージョン番号はすべて 2004/05/09 現在のもの)

 僕の場合、最初 unstable tree を有効にせずにやってしまったところ、stable tree から 1.6.10 をインストールし始めたのだが、最後にこんなエラーで止まってしまった。

ld: Undefined symbols: _dlclose _dlerror _dlopen _dlsym

 原因がよくわからなかったのだが、もしかすると dlcompat パッケージが /usr/lib/sw/lib にダブってインストールされていたせいかも知れない。/usr/lib/libdl.*_libdl.* とリネームして対処。その後 unstable tree を有効にしてインストールしたら問題なく成功したので、どちらが問題だったのか結局不明になってしまった。

2. 使い方

 サンプルデータ (elgar201.ly, 2.0.1 用) を適当なディレクトリに置いて、ターミナルから lilypond elgar201.ly。日本語でメッセージが出ると思うので、ターミナルのウィンドウ設定でエンコーディングを日本語EUCにしておく。成功すると elgar201.pdf ができるので、プレビューや Acrobat Readerなどで見るなりプリントするなりご自由に。

3. 最新版のビルド

 Fink の lilypond パッケージングは 10.3 が優先されているようで、10.2-gcc3.3 のツリーはバージョンが少し古かったりする。Lilypond のサイトでソースが公開されているのに1つ前のバージョンを使わないといけないのはくやしいので、なんとかソースからビルドしたい。以下、その手順。

  1.  なるべく先人の知恵を生かすため、まず Fink で配付されているパッケージをソースからビルドする(fink rebuild lilypond)。
  2.  公式サイトのダウンロードページからソースの tarball をダウンロード。パッチを当てるため、専用のディレクトリ (たとえば $HOME/Development/lilypond-2.2.1-dir) を作り、そこで tarball を展開して lilypond-2.2.1 ディレクトリを得る。
  3.  fink install で以下のパッケージの最新版をインストール:potrace, autotrace, t1utils, texinfo
  4.  mftrace の最新版をインストール。これは Fink に入ってないみたい。オリジナルはここかな?→mftrace - Scalable Fonts for MetaFont
  5.  ソースにパッチをあてる。先ほど tarball を展開したディレクトリに移り、cp -r lilypond-2.2.1 lilypond-2.2.1-orig。続いて、lilypond-2.2.1.patch をダウンロードして同じディレクトリにコピーし、patch -p0 < lilyponde.2.2.1.patch
  6.  シェルを bash にして、cd lilypond-2.2.1。これ以下のコマンドは、Fink パッケージ中の lilypond.info を参考にした。
  7. CPPFLAGS=-I/sw/include CCFLAGS=-I/sw/include LDFLAGS=-L/sw/lib GUILE=/sw/bin/guile-1.6 GUILE_CONFIG=guile-1.6-config ./configure --prefix=/sw --infodir='$(prefix)/share/info' --mandir='$(prefix)/share/man'(全部1行で!)
  8. PREFIX=/sw ./lexer-gcc-3.1.sh
  9. ulimit -S -s 8192; gnumake -C mf get-pfa; gnumake; gnumake -C mf fontdir
  10.  install_script.sh をダウンロードして、sudo sh install_script.sh

 これは最短距離(?)の手順だが、実際に僕がやったときはもっと回り道をした。tarball を展開したあと、Fink パッケージ中の /sw/fink/10.2-gcc3.3/unstable/main/finkinfo/text/lilypond.patch から 2.2.1 用のパッチを仮作成("2.0.1" を "2.2.1" に全置換しただけ)。patch -p0 <lilypond-2.2.1.patch で、パッチ当てできなかったファイルのみ手作業でパッチを当てた。上で紹介したパッチはそうやって作ったソースとオリジナルから改めて作り直したもの。本家のバージョンが上がったら、この作業はまた最初からやり直しになる。

 あとは、基本的には configure/make でエラーが出なくなるまで直す、という作業。lilypond.info 中にコンパイル・インストール用のスクリプトが書かれていることに(だいぶ後になって)気がついたので、あとは足りないパッケージをひたすらインストールすればよかった。それにしても、必要なパッケージの数が尋常じゃないね。TeX を使っているので仕方がないのだけど。

 注意:バージョンを上げると、以前のバージョンで作成したスコアはそのままでは処理できなくなる。convert-ly でインストールした lilypond バージョンに合わせてスコアファイルをコンバートする。上記の elgar201.ly は 2.0.1 用なので、2.2.1 に上げたらコンバートが必要:convert-ly elgar201.ly >elgar221.ly

4. 参考サイト