VineSeedのTeX Live環境、やっと納得のいく形ででけたよ!
VineSeed:21467 - ml.vinelinux.org
やっと納得いく形で、VineSeed に TeX Live 環境を提供できます。
ここまでできあがるまでに3ヶ月もかかりました。
だいたい方針どおりいけた
方針としている以下の3点は、おおむね満足いく形でパッケージングできました。
- ptexlive ベースにしつつ、操作性を変えない。
- 出来る限り手間をかけない。
- 無駄に細かすぎるサブパッケージを作らない。
ビルド手順は、ほぼ ptexlive ベースです。TDS (TeX Directory Structure) ファイル配置 従来の teTeX と同一です。さらに今回の大きな特徴としては、e-pTeX を使えるようにしたことですね。
ここまで形が出来るまでには膨大な時間を浪費したw けれども、パッケージングに関しては texlive-*-vl.spec のすべてがそれぞれ独立してメンテナンスできるようになりました。texlive-vl.spec は基本的に主要プログラム+texmf の提供のみで、ptexlive が提供するもののみを texlive だけに収められた。
パッケージングの工夫としては、拙作の tlpdb2rpmspec を利用しました。これにより、texmf-dist 以下をすべて texlive-collection-* パッケージとしてパッケージングし、ファイル競合が起こらない直和に、提供できるようになりました。
RPM 構成
まだ案の段階ですが、だいたい以下のようなカテゴリ構成になります。
最小構成:main カテゴリ=小さな TeX 環境
標準構成:plus カテゴリ=task-texlive
- texmacro-otf
- texlive-collection-latexextra
- texlive-collection-luatex
- texlive-collection-pictures
- texlive-collection-genericrecommended
- texlive-collection-pstricks
最大構成:plus カテゴリ=全部提供
???
tlpdb2rpmspec の紹介
texlive-collection-* パッケージの spec ファイルを生成するツールを作成しました。
texlive-vtlpkg - trac.vinelinux.org
tlpdb2rpmspec は texlive-vtlpkg パッケージに同梱されています。
$ sudo apt-get install texlive-vtlpkg
初期設定
/usr/share/texlive-vtlpkg/dot.vtlpkg.conf を ${HOME}/.vtlpkg.conf へコピーして、必要な設定をします。
## ## texlive-vtlpkg configuration file ## ## This configuration is read at the startup of texlive-vtlpkg. ## set your vender ## default: RPM_VENDOR="Project Vine" RPM_VENDOR="Project Vine" ## set your distribution ## default: RPM_DISTRIBUTION="Vine Linux" RPM_DISTRIBUTION="Vine Linux" ## set your name and your e-mail address ## default: RPM_GPG_NAME="YOUR NAME <your@email.address>" RPM_GPG_NAME="" ## set your packager id ## default: RPM_PACKAGER=your_id RPM_PACKAGER= ## set the top of your rpm directory ## default: RPM_TOPDIR=${HOME}/rpm RPM_TOPDIR=${HOME}/rpm ## end of file
ヘルプ
$ tlpdb2rpmspec Usage: tlpdb2rpmspec [option] [pkgname] This script generates a rpm spec file for CTAN and collection-* packages of TeX Live. Options: --name: return [pkgname] --category: return the category of [pkgname] --revision: return the revision of [pkgname] --depend: return dependencies of [pkgname] --shortdesc: return the short description of [pkgname] --longdesc: return the description of [pkgname] --execute: return post processe of [pkgname] --catalogue-ctan: return the locate of [pkgname] --catalogue-date: return the last update of [pkgname] --catalogue-license: return the license of [pkgname] --catalogue-version: return the version of [pkgname] --filelist: return the filelist of [pkgname] --help: show this help Supoort collections-* packages: collection-basic collection-bibtexextra collection-binextra collection-context collection-documentation-arabic collection-documentation-base collection-documentation-bulgarian collection-documentation-chinese collection-documentation-czechslovak collection-documentation-dutch collection-documentation-english collection-documentation-finnish collection-documentation-french collection-documentation-german collection-documentation-greek collection-documentation-italian collection-documentation-japanese collection-documentation-korean collection-documentation-mongolian collection-documentation-polish collection-documentation-portuguese collection-documentation-russian collection-documentation-slovenian collection-documentation-spanish collection-documentation-thai collection-documentation-turkish collection-documentation-ukrainian collection-documentation-vietnamese collection-fontsextra collection-fontsrecommended collection-fontutils collection-formatsextra collection-games collection-genericextra collection-genericrecommended collection-htmlxml collection-humanities collection-langafrican collection-langarabic collection-langarmenian collection-langcjk collection-langcroatian collection-langcyrillic collection-langczechslovak collection-langdanish collection-langdutch collection-langfinnish collection-langfrench collection-langgerman collection-langgreek collection-langhebrew collection-langhungarian collection-langindic collection-langitalian collection-langlatin collection-langlatvian collection-langlithuanian collection-langmongolian collection-langnorwegian collection-langother collection-langpolish collection-langportuguese collection-langspanish collection-langswedish collection-langtibetan collection-langukenglish collection-langvietnamese collection-latex collection-latex3 collection-latexextra collection-latexrecommended collection-luatex collection-mathextra collection-metapost collection-music collection-omega collection-pictures collection-plainextra collection-pstricks collection-publishers collection-science collection-texinfo collection-texworks collection-wintools collection-xetex
使い方
例えば、collection-basic の texlive-collection-basic-vl.spec を生成したい場合は、以下を実行します。
$ tlpdb2rpmspec collection-basic > texlive-collection-basic-vl.spec
さらに、 rpmbuild -ba texlive-collection-basic-vl.spec を実行すると、texlive-collection-basic-2009-Xvl6.{noarch,src}.rpm, texlive-collection-basic-doc-2009-Xvl6.src.rpm がビルドできます。
各カテゴリ別に texlive-collection-* を生成したい場合は、以下を実行することにより、rpmbuild まで実行します。
最小(main):$ tlpdb2rpmspec --minimal-collections 標準(plus):$ tlpdb2rpmspec --standard-collections 最大?(plus):$ tlpdb2rpmspec --full-collections
texlive パッケージをさらに小分けする余地
texlive パッケージのバイナリを texlive-luatex, texlive-xetex, ... などのように分ける余地がありますが、texlive-collection-basic に多くの *.ini が含まれているので、むしろ luatex, xetex は基本的な提供をするべきなんでしょう。