読者です 読者をやめる 読者になる 読者になる

VineSeedのTeX Live環境、やっと納得のいく形ででけたよ!

VineSeed:21467 - ml.vinelinux.org

やっと納得いく形で、VineSeedTeX Live 環境を提供できます。

ここまでできあがるまでに3ヶ月もかかりました。

TeX 環境 - trac.vinelinux.org

だいたい方針どおりいけた

方針としている以下の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-* パッケージとしてパッケージングし、ファイル競合が起こらない直和に、提供できるようになりました。

texlive-vtlpkg - trac.vinelinux.org

RPM 構成

まだ案の段階ですが、だいたい以下のようなカテゴリ構成になります。

最小構成:main カテゴリ=小さな TeX 環境
  • texlive
  • texlive-common
    • texlive-collection-langgerman
    • texlive-collection-langcyrillic
    • texlive-collection-xetex
    • texlive-collection-latexrecommended
    • texlive-collection-latex
    • texlive-collection-fontsrecommended
    • texlive-collection-basic
  • jvf
  • texlive-macros
標準構成: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 は基本的な提供をするべきなんでしょう。

独り言

ってことで、疲れました。でも、自分が納得いく形で、かつ、ファイル構成として良い形で TeX Live 環境を提供できるようになった喜びは大きいです。

近い将来、TeX ユーザの集いなどのカンファレンスや勉強会を通して、各ディストビューションで TeX 関連パッケージをメンテナンスされている方を集めて、情報共有を図りたいと考えております。日本語 TeX 環境を提供する上で、必ず共通の作業部分があると思うので、そういうノウハウは共有しつつ、問題や課題も共有したいですね。

ご意見などお待ちしております。ではー(^o^)/