Hisashi Morita ([info]hisashim) wrote,
@ 2007-04-01 00:50:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
[Debian][LaTeX] OTF Debian package
LaTeXでOpenTypeフォントを使うためのOTFパッケージのDebianパッケージを作ってみた。まだ怪しいけれど、一応インストールできて動作する。これがうまくいけば、新しいホスト上に編集制作環境を作るのが楽になるはず。

http://www.kt.rim.or.jp/~hisashim/tmp/otf_1.2.8-1+0custom1.dsc
http://www.kt.rim.or.jp/~hisashim/tmp/otf_1.2.8-1+0custom1.tar.gz

容量がいっぱいなのでソースだけ。後で消す。消した(2007-06)。今後はこちらで: http://workbook.svn.sourceforge.net/viewvc/workbook/vendor/otf/

----

Debianパッケージの作り方は、要するにこういう仕組みになっているらしい:オリジナルのソースに次の3つのファイルを追加してdebuild等で処理すると、パッケージが出来上がる。

  • debian/control : パッケージ情報が記述されたファイル(依存関係など)
  • debian/changelog : パッケージの変更履歴
  • debian/rules : インストール等の具体的な処理が記述されたスクリプト

それぞれ普通のソフトウェアで言うREADME、ChangeLog、Makefile に相当するものらしい。守るべき規則や支援ツールが大量にあるので圧倒されて訳が分からなくなりがちだけど、どうやら基本はこれだけらしいことが分かった。

煩雑なところは、最初にdh_makeに準備をしてもらえば楽ができる。

おおまかな手順:

  1. パッケージ対象のソースツリーを用意する(foo-1.0/とする)
  2. foo-1.0内でdh_make foo-1.0と実行すると、debian/ディレクトリをはじめ、各種制御ファイルの雛型をよろしく用意してくれる
  3. foo-1.0/debian/controlにパッケージ名や依存関係などを書く
  4. foo-1.0/debian/changelogに変更履歴を書く
  5. foo-1.0/debian/rulesのinstallターゲットにインストール時の処理を書く
  6. その他の制御ファイルを編集したり、不要なものは削除したりする(例えば必要なディレクトリをdebian/dirsに書くなど)
  7. debuildその他のパッケージ構築ツールを実行する。うまくいけばパッケージが出来ているはず
  8. テストして不具合を直す。以下繰り返し


注意点:
  • 実際の作業には、build-essentialsをはじめパッケージング用のツールがいろいろ必要なので、あらかじめインストールしておく。
  • 似たようなパッケージのソースパッケージを参考にすると楽(% sudo apt-get source baz)。今回は香田さんのvfdata-morisawa5を参考に見よう見真似で書いてみたら、パッケージのビルドに成功するところまでは割とすんなりできた。
  • パッケージはOSに変更を加えるのでテストが大変だけど、上川さん作のpbuilderを使うとかなり楽ができる。pbuilderは、chrootされたテスト環境の用意からそこでのパッケージのビルドまで、ほとんどの作業を自動化してくれる。sudo pbuilder build foo*.dsc として、あとは待つだけ。素晴らしい。
  • 正規のパッケージではないなどの理由で署名を省略したいときは、debuildに-us -ucオプションを付ける。dpkg-buildpackage(1)参照。
  • base systemを準備するときに1箇所でもダウンロードに失敗するとそこで全体が失敗するので、--mirrorオプションでミラーを一箇所に指定する。
      % sudo pbuilder create --mirror http://example.com/pub/linux/debian/debian

Debianのパッケージシステムはコンベンションが膨大にあるので、できるところまでやったうえで詳しい人に聞くのがよさそう。

----

vfdata-otfの使い方

-- インストール
% sudo dpkg -i vfdata-otf*.deb

% sudo $EDITOR /etc/apt/sources.list
% diff -u /etc/apt/sources.list.bak /etc/apt/sources.list
-deb http://example.org/pub/linux/debian/debian sarge main
+deb http://example.org/pub/linux/debian/debian sarge main contrib non-free
% sudo apt-get update && sudo apt-get install cmap-adobe-japan1

-- 設定
% sudo $EDITOR /etc/texmf/texmf.d/50dvipdfmx.cnf
% diff -u /etc/texmf/texmf.d/50dvipdfmx.cnf.bak /etc/texmf/texmf.d/50dvipdfmx.cnf
 %% READ /usr/share/doc/dvipdfmx/README.Debian for details:
-% CMAPINPUTS = .;/usr/share/fonts/cmap/adobe-gb1//;/usr/share/fonts/cmap/adobe-cns1//;/usr/share/fonts/cmap/gs-cjk-resource//
+CMAPINPUTS = .;/usr/share/fonts/cmap/adobe-japan1//;/usr/share/fonts/cmap/adobe-japan2//;/usr/share/fonts/cmap/adobe-gb1//;/usr/share/fonts/cmap/adobe-cns1//;/usr/share/fonts/cmap/gs-cjk-resource//

-- テスト (OpenTypeフォントなしで可能なテスト)
% $EDITOR test.tex
% cat test.tex
\documentclass{jbook} \usepackage{otf} \begin{document} OpenTypeフォントを使うためのOTFパッケージのテストです。 \end{document}
% sudo $EDITOR /etc/texmf/dvipdfm/my-pseudo-otf.map % cat /etc/texmf/dvipdfm/my-pseudo-otf.map
% Non-embedding font map, which works without actual font data. % Source: http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?OTF rml H Ryumin-Light rmlv V Ryumin-Light gbm H GothicBBB-Medium gbmv V GothicBBB-Medium hminr-h H Ryumin-Light hminr-v V Ryumin-Light otf-ujmr-h UniJIS-UTF16-H Ryumin-Light otf-ujmr-v UniJIS-UTF16-V Ryumin-Light otf-cjmr-h Adobe-Japan1-6 Ryumin-Light otf-cjmr-v Identity-V Ryumin-Light hgothr-h H GothicBBB-Medium hgothr-v V GothicBBB-Medium otf-ujgr-h UniJIS-UTF16-H GothicBBB-Medium otf-ujgr-v UniJIS-UTF16-V GothicBBB-Medium otf-cjgr-h Adobe-Japan1-6 GothicBBB-Medium otf-cjgr-v Identity-V GothicBBB-Medium
% sudo mktexlsr % platex test.tex % dvipdfmx -f my-pseudo-otf test.dvi % acroread test.pdf &

-- テスト (OpenTypeフォントを埋め込む)
% sudo mkdir /usr/share/fonts/opentype
% sudo cp HiraMinPro-W3.otf /usr/share/fonts/opentype
....
% sudo ln -s /usr/share/fonts/opentype /usr/share/texmf/fonts/opentype
% sudo ln -s /usr/share/texmf/fonts/ /usr/share/texmf/dvipdfm/fonts
% sudo mktexlsr
% kpsewhich -format "opentype fonts" HiraMinPro-W3

% dvipdfmx -f hiraginox test.dvi

注意点:

  • dvipdfmxは/usr/share/texmf/fonts/を見ないらしい。/usr/share/texmf/dvipdfm/以下なら認識するようなので(kpsewhich -progname dvipdfm -show-path "opentype fonts"すると末尾が//になっている)、適当な名前でsymlinkしてmktexlsrする。その後kpsewhichで確認。
  • sargeの古いkpsewhichは"opentype fonts"というformatを認識しないので、新しいものをインストールするか、"other binary files"で調べる。

----

Todo:

  • Warningをなんとかする
    W: otf source: out-of-date-standards-version 3.6.1 (current is 3.7.2)
    W: otf source: native-package-with-dash-version

    すいません。

    そもそもsargeじゃなくetchにすべきだったかも。
    2つめのはorig.tar.gzを用意すれば消えそうだけど、そんな理由でオリジナルをrepackするのは気が進まない。
    あと野良パッケージのお作法が分からない。パッケージ名とかバージョン番号とか。

  • オリジナルからのパッケージ作成
    Debianのtetexに含まれるovp2ovfが新しすぎて、齋藤さんが配布しているオリジナルのOTFパッケージからはOFMを生成できない(1.1ならOKだけど2.0ではNG)。
    Bug#229184: tetex-bin: ovp2ovf does not work at all
    http://www.mail-archive.com/debian-tetex-maint@lists.debian.org/msg05574.html

    今は生成済みのVF/TFM/OFMが含まれている角藤版ディストリビューションをもとにして回避している。

  • install/remove/purgeする前後の状態を比較したい
    何かあるはずなんだけどうまい方法が分からない。今はディレクトリを指定してdiffを手で実行している。

  • パッケージのビルドに時間がかかる
    ソースツリーに大量のVF/TFM/OFMが含まれるので、gzip圧縮に十数分かかる。コンパイルする訳でもないのに。でもこれはどうにもならないかも。

資料:

http://www.debian.org/doc/debian-policy/
http://debian.or.jp/Documents.obsoleted/Documents_ja/debian-policy/

やまだあきら著、鵜飼文敏監修『入門Debianパッケージ』(技術評論社、2006)

http://psitau.at.infoseek.co.jp/otf.html
http://www.fsci.fuk.kindai.ac.jp/%7Ekakuto/win32-ptex/web2c75.html
http://oku.edu.mie-u.ac.jp/~okumura/texwiki/?OTF
http://packages.debian.org/unstable/tex/vfdata-morisawa5



Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…