Samba 3.0/3.2 ドキュメントの生成

提供:Samba-JP
ナビゲーションに移動検索に移動

Samba 3.0 系列のドキュメントは、XML ファイルから、さまざまな処理を経て manpage 形式や html 形式、PDF などのドキュメントを生成するようになっています。

PDF や html 形式用に、画像ファイルなども多数存在しており、ドキュメント自体の容量が非常に肥大化しています。

このため、Samba 3.0 系列の途中から、アーカイブの肥大化を防ぐ意味で、XML ファイルや XML ファイルからドキュメントを生成するための各種ファイル類は別の SVN ツリーに格納され、Samba のアーカイブには生成済の manpage 形式、html 形式、PDF ファイルのみが同梱されるようになりました。しかし、3.2.0からはドキュメントのソース(XMLファイル)の同梱が復活しています。

以下、Samba のドキュメントをオリジナルの XML ファイルからコンパイルする手順について記載します。

ドキュメントの取得

Samba のドキュメントアーカイブは、[Samba Team の SVN (Subversion) ツリー] から取得できます(注:gitの場合はh詳細不明)。

リリース版のドキュメント一式には、release-x-x-x というタグが振られているので、このタグを指定することで、任意のバージョンのドキュメント一式を取得することが可能です。

たとえば、Samba 3.0.23 のドキュメント一式を取得するには、 Subversion のクライアント環境 (svn コマンド) をインストールした上で、以下のようにします。

svn co svn://svnanon.samba.org/samba-docs/tags/release-3-0-23 samba-docs

これで、 samba-docs ディレクトリ以下に、Samba 3.0.23 のドキュメント一式が取得されます。

環境の整備

Samba のドキュメントをコンパイルする方法は、アーカイブに含まれる README に記載されていますが、いくつかのプロダクトが必要です。これらのプロダクトはバージョン依存性があり、現状SUSE Linux以外の環境では動作しません。

以下、README から引用します。

To generate the docs, you need to have the following packages installed:

 * GNU Make
 * GNU autoconf
 * docbook-utils
 * xsltproc
 * pngtopnm and pnmtops (from the netpbm utilities)
 * dia

For generating PDF (thru LaTeX):
 * db2latex (from http://db2latex.sf.net/). Make sure to get CVS version
   dated 20030622 -- it works best. Versions previous to 20030425 are known
   to have problems, as well as current (as of 20031210) snapshots.
 * pdflatex
 * thumbpdf

For generating PDF (thru FO):
 * fop (http://xml.apache.org/fop/)

For generating PostScript (thru LaTeX):
 * db2latex
 * latex
 * dvips

For generating ASCII:
 * html2text

For generating Palm-viewable docs:
 * plucker-build

For generating texi files:
 * docbook2x-texi
 * makeinfo

For validating:
 * xmllint

これらのパッケージを適宜インストールしておく必要があります。万が一make中にパッケージが足らなかった場合には、足らないパッケージをインストール後、docs-xmlディレクトリ配下でconfigure を再度実行する必要があります。

また、実行時にwww.samba.orgにアクセスしますので、ネットワークが繋がるようにしておく必要があります。ファイアウォールの内側の場合は、export http_proxy でプロキシの設定をしておいてください。

configure と make

環境が整備できたら、configure を実行した上で、make を実行します。

make のオプションには以下のようなものがあり、生成するドキュメントの種類を限定できます。

[melrose:samba-docs-3.0.23d] make help
Supported make targets:
 release - Build the docs needed for a Samba release
 all - Build all docs that can be build using the utilities found by configure
 everything - Build all of the above
 pdf,tex,dvi,ps,manpages3,txt,pearson,fo,htmlhelp - Build specific output format
 html - Build multi-file HTML versions
 html-single - Build single-file HTML versions
 htmlman3 - Build HTML version of manpages
 undocumented - Output list of undocumented smb.conf options
 samples - Extract examples

上記に記載がありませんが、 manpages3 を指定することでマニュアルページのみを生成可能です。

このほかにも tex や pdf など様々なオプションが指定可能です。指定可能なオプションについては、Makefile のターゲット欄を参照してください。

日本語ドキュメントを作成する

このドキュメント生成システムは、基本的に英語圏の環境しか考慮されていませんが、文字コードとして UTF-8 を用いることで、禁則処理の不備など問題があるものの、日本語ドキュメントを生成させることも可能です。

以下、方法を記載します。 なお、よりよい方法があれば、ぜひ加筆、訂正願います。

現在の注意点

  • デフォルト値、設定例、といった文言は、xslt/expand-smbconfdoc.xsl を直接編集しています。
  • Note や Warning といった文字列を日本語化する方法が確認できていません。
  • デフォルトでは、日本語文字列が、すべて実体参照(&#xxx形式)になってしまいますので、HTML はまだしも、manpage 形式では使い物になりません。仕方ないので、以下のような PHP スクリプトで変換掛けてます。
    ということでしたが、SuSEでやったところ、man形式はまともでした。htmlはだめでした。また、下記のスクリプトを実行すると、文字情報以外の情報が落ちるらしく、うまくないです。
#!/usr/bin/php
<?php

    while (!feof(STDIN)) {
        echo foo(fgets(STDIN));
    }

function foo($s)
{
    $s = mb_convert_encoding($s, "UTF-16", "eucJP-win");
    $s = mb_decode_numericentity($s, array(0, 0xffff, 0, 0xffff), "UTF-16");
return mb_convert_encoding($s, "EUC-JP", "UTF-16");
}
?>
  • OpenSUSE 11.0でだいたい動きます。ただPDF作成はghostscriptがエラーになってしまいます。