Cygwin で 日本語 TeX --- TeX マクロをバイナリ配布するには

ホーム > Cygwin で日本語 TeX > TeX マクロをバイナリ配布するには

多くの TeX マクロ*1) は,コンパイル (バイナリコマンド生成) の必要はないけれども,配置と後処理を適切に行うことが求められる.Cygwin のようなパッケージ管理をできるシステムの場合,誰かが配置と後処理に関することを整備してくれれば,利用者はストレスなく導入できて,幸せである.

このページでは,ptetex バイナリパッケージにマッチした,Cygwin 用インストールパッケージの作り方を提案する.フォントの集中管理を目指す ptetex ディスリビューション の目玉機能 updmap-sys の使用方法を説明するため,具体例として 音声記号パッケージ TIPA を取り上げることにする. 本ページを参考に,多くの人がマクロのインストールパッケージを作成して配布してくださることを期待する.

基本姿勢

バイナリコンパイルが必要ないものと仮定すると,Cygwin 用インストールパッケージを作るのは難しくない*2). 一言でいえば,作業用ディレクトリを作って,その中に,/ (root) 以下の階層構造を構築してしまえばよい.(Cygwin 用インストールパッケージの作り方についての公式な文書は Cygwin の用意している Cygwin Package Contributor's Guide である.細かく知りたい人はぜひ参照されたい.)

準備作業 (TIPA の場合)

  1. 作業用にディレクトリを新しく作り,その中で作業するとよい.
    $ mkdir -m 755 tipa-1.3-1
    $ cd tipa-1.3-1
    

tipa-1.3-1 という作業ディレクトリの中に,usretc といったディレクトリを作って,その中にファイルを適切に配置してゆく.

ファイルの配置

  1. マクロに関連するファイル一式は,usr/local/teTeX/share/texmf/packages ディレクトリ以下に,それらしい名前のディレクトリを作って,その中にすべて納める.必要があれば,ディレクトリを掘って階層構造を成しておく.
  2. 適切な位置にシンボリックリンクを張る.

上記の方法は,一般的かどうかはわからないが,ptetex 本家で採用されており,以下の 2 点が利点である:

ディレクトリを作ったり,ファイルをコピーしたりするときには,セキュリティホールを作らないように,ファイルの属性/権限については十分注意を払うこと.ディレクトリは rwxr-xr-x (755) か rwxrwxr-x (775), ファイル (実行権限の不要なファイル) は rw-r--r-- (644) か rw-rw-r-- (664) が望ましい.

ファイルの配置 (TIPA の場合)

  1. 作業ディレクトリの中に usr/local/teTeX/share/texmf/packages というディレクトリを作る.
    $ mkdir -m 755 -p usr/local/teTeX/share/texmf/packages
  2. tipa-1.3.tar.gz をダウンロードし,解凍する.
    $ wget http://www.l.u-tokyo.ac.jp/~fkr/tipa/tipa-1.3.tar.gz
    $ tar -C usr/local/teTeX/share/texmf/packages/ -xzf tipa-1.3.tar.gz
    $ mv usr/local/teTeX/share/texmf/packages/tipa-1.3 usr/local/teTeX/share/texmf/packages/tipa
    この段階で,ファイルの属性/権限が正常かどうか確かめておく.
  3. シンボリックリンクを正しく張る.ptetex 本家と同じように,相対リンクで張っておく.
    $ mkdir -m 755 -p usr/local/teTeX/share/texmf/fonts/source
    $ ln -s ../../packages/tipa/mf usr/local/teTeX/share/texmf/fonts/source/tipa
    $ mkdir -m 755 -p usr/local/teTeX/share/texmf/fonts/tfm
    $ ln -s ../../packages/tipa/tfm usr/local/teTeX/share/texmf/fonts/tfm/tipa
    $ mkdir -m 755 -p usr/local/teTeX/share/texmf/fonts/type1
    $ ln -s ../../packages/tipa/type1 usr/local/teTeX/share/texmf/fonts/type1/tipa
    $ mkdir -m 755 -p usr/local/teTeX/share/texmf/tex/latex
    $ ln -s ../../packages/tipa/sty usr/local/teTeX/share/texmf/tex/latex/tipa
    $ mkdir -m 755 -p usr/local/teTeX/share/texmf/fonts/map/dvips
    $ ln -s ../../../packages/tipa/dvips/tipa.map usr/local/teTeX/share/texmf/fonts/map/dvips/
    $ mkdir -m 755 -p usr/local/teTeX/share/texmf/doc
    $ ln -s ../packages/tipa/doc usr/local/teTeX/share/texmf/doc/tipa

後処理

後処理において重要なのは,以下の 2 点である:

後処理 (TIPA の場合)

フォントの設定を updmap-sys で行うこと.dvipdfm(x)/pdflatex/dvips/xdvi の設定が一括してできるからである.

  1. etc/postinstall 以下に,設置後に実行して欲しいスクリプトを置く.
    $ mkdir -m 755 -p etc/postinstall
    TIPA の場合,以下の記述を etc/postinstall/ptetex-tipa.sh という名前で保存すればよい.
    #! /bin/sh
    export PATH=/usr/local/teTeX/bin:/bin:/usr/bin:/usr/X11R6/bin
    updmap-sys --nomkmap --enable MixedMap=tipa.map
    if [ -e /etc/postinstall/ptetex-common.sh ]; then
      /etc/postinstall/ptetex-common.sh && \
        mv /etc/postinstall/ptetex-common.sh /etc/postinstall/ptetex-common.sh.done;
    else
      /etc/postinstall/ptetex-common.sh.done;
    fi
    実行権限を与えておくことをお忘れなく:
    $ chmod 755 etc/postinstall/ptetex-tipa.sh

所有者の変更,書庫化・圧縮

シリアスな問題を引き起こすわけではないが,ファイルの所有者・所有グループに,パッケージングした人の情報がそのまま残っているのは気持ち悪いので,所有者・所有グループを例えば Administrator:Administrators に変更しておく.(グループ権限に w の許可が立つが,問題ない)

その後,tar で固めて,bzip2 圧縮する.

所有者の変更,書庫化・圧縮 (TIPA の場合)


  1. $ chown -R Administrator:Administrators usr etc

  2. $ tar -cjf ptetex-tipa-1.3-1.tar.bz2 usr etc
  3. ここまでのコマンドの履歴と,後処理スクリプトを ptetex-tipa-1.3-1 というディレクトリに入れて,ソーススクリプトも作っておくことをおすすめする.どんなバイナリパッケージを作っているかを公開することは,ネットインストールに慎重な人にもインストールしてもらう機会を増やすのみならず,後々のヴァージョンアップや,パッケージ作成者交代などを円滑にするからである.
    $ mkdir -m 755 -p ptetex-tipa-1.3-1
    $ history # の結果から,必要なところを抜き取って,ptetex-tipa-1.3-1/ptetex-tipa-1.3-1.sh というファイルに格納する
    $ cp etc/postinstall/ptetex-tipa.sh ptetex-tipa-1.3-1/
    $ tar -cjf ptetex-tipa-1.3-1-src.tar.bz2 ptetex-tipa-1.3-1

ファイルのアップロードなど

ファイルをアップロードして,setup.hintsetup.ini を書く.

ファイルのアップロードなど (TIPA の場合)

  1. ディレクトリを掘る
    your-server の公開用ディレクトリ$ mkdir -p custom-cygwin/release/ptetex/ptetex-tipa
  2. ファイルをアップロードする.
    $ scp ptetex-tipa-1.3-1{,-src}.tar.bz2 your-server:公開用ディレクトリ/custom-cygwin/release/ptetex/ptetex-tipa
  3. Checksum ファイルを作る.
    your-server の公開用ディレクトリ$ cd /custom-cygwin/release/ptetex/ptetex-tipa/
    your-server/.../ptetex-tipa$ md5sum setup.hint ptetex-tipa-1.3-1{,-src}.tar.bz2 > md5.sum
  4. setup.hint ファイルを書く (your-server の公開用ディレクトリ/custom-cygwin/release/ptetex/ptetex-tipa/setup.hint)
  5. setup.ini ファイルを作る (your-server の公開用ディレクトリ/custom-cygwin/setup.ini)

サーバ側での作業が制限されている場合には,Checksum ファイル,setup.hint ファイル,setup.ini ファイルは手元の環境で作成してからアップロードすればよい.

TIPA に関しては,上記の作業を施したパッケージを作りました. release/ptetex/ptetex-tipa/ に置いてありますので,参考にどうぞ.

以上.

参考文献

Cygwin パッケージに関する official 文書は,以下にある:


*1) パッケージスタイルファイルと呼ばれることもある.

*2) バイナリコンパイルも,参照先などが適切に設定できれば,同じように簡単にできるはずである.configuremake までの PREFIX を設置先のものにして,make install のときだけ,作業ディレクトリを指すように PREFIX を指定してやればよいのだろう.

*3) Windows (Cygwin) では,Linux などに比べて,ファイルの探索やファイルへの書き込みに時間がかかる.また,プロンプト画面でコマンドを実行するときに比べて,ネットインストールで実行するときは余計に時間がかかるように感じられる.そこで,texconfig-sysupdmap-sys の実行回数は,安全に減らせるなら減らしたほうがよい.

ホーム > Cygwin で日本語 TeX > TeX マクロをバイナリ配布するには