lxpanel-0.2.7.2のビルドが通らない(docbook-to-manコマンドが無い)件について
LXDEデスクトップ環境のパネルをインストールしようとしたのだが、下のエラーで止まってしまった。*1
Making all in man make[2]: Entering directory `/var/tmp/portage/lxde-base/lxpanel-0.2.7.2/work/lxpanel-0.2.7.2/man' docbook-to-man lxpanel.sgml > lxpanel.1 /bin/sh: docbook-to-man: command not found make[2]: *** [lxpanel.1] Error 127 make[2]: Leaving directory `/var/tmp/portage/lxde-base/lxpanel-0.2.7.2/work/lxpanel-0.2.7.2/man' (以下略)
ここで必要になっているdocbook-to-manというコマンドはDebian/Ubuntuでは同名のパッケージになっているのだが、GentooではPortageツリーのどのパッケージで入れられるのかを探したものの見当たらず、最終的には
packages.debian.org/sid/docbook-to-man
にあるdocbook-to-man_2.0.0.orig.tar.gz*2とそのパッチをダウンロードして入れることにした。
下はインストール手順のメモだが、後でebuildを書いたのでGentoo上ではそちらを使用するのが楽。
$ tar zxf [docbook-to-man_2.0.0.orig.tar.gzの場所] $ cd docbook-to-man-2.0.0.orig/ $ zcat [docbook-to-man_2.0.0-26.diff.gzの場所] | patch -p1 patching file debian/control patching file debian/changelog patching file debian/rules patching file debian/compat patching file debian/dirs patching file debian/patches/01-conglomeration.dpatch patching file debian/patches/03-userinput-font.dpatch patching file debian/patches/00list patching file debian/patches/02-arg-req-space.dpatch patching file debian/copyright patching file debian/docs $ for p in debian/patches/*.dpatch; do patch -p1 < ${p}; done patching file Doc/Makefile patching file Doc/docbook-to-man.1 patching file Doc/docbook-to-man.sgml patching file Doc/instant.1 patching file Doc/transpec.1 patching file Instant/general.h patching file Instant/main.c patching file Instant/tptregexp/regexp.c patching file Makefile patching file Transpec/docbook-to-man.prolog patching file Transpec/docbook-to-man.ts patching file Transpec/docbook-to-man.ts-PUSHPOP patching file Transpec/roff.cmap patching file Transpec/roff.sdata patching file ans.patch patching file cmd/docbook-to-man.sh patching file Transpec/docbook-to-man.ts Hunk #1 succeeded at 1218 (offset 22 lines). patching file Transpec/docbook-to-man.ts Hunk #1 succeeded at 1930 with fuzz 1 (offset 37 lines). $ make ROOT=[インストール先接頭辞] $ sudo make ROOT=[インストール先接頭辞] install
ebuildはWindows Live SkyDriveにアップロードした。
http://cid-3f9be5b1cd4a806c.skydrive.live.com/self.aspx/%E5%85%AC%E9%96%8B/Gentoo%20Linux%20ebuild/app-text/docbook-to-man/docbook-to-man-2.0.0.ebuild.txt
なお、Debianのパッチを使用しなかった場合、下のようにコンパイルエラーで停止する。
make[2]: Entering directory `/tmp/work/docbook-to-man-2.0.0.orig/Instant/tptregexp' gcc -O -I. -c -o regexp.o regexp.c regexp.c: In function 'tpt_regcomp': regexp.c:199: error: conflicting types for 'malloc' regexp.c:708:22: error: macro "strchr" requires 2 arguments, but only 1 given regexp.c: In function 'tpt_regexec': regexp.c:708: error: 'strchr' redeclared as different kind of symbol regexp.c:807:22: error: macro "strchr" requires 2 arguments, but only 1 given make[2]: *** [regexp.o] Error 1 make[2]: Leaving directory `/tmp/work/docbook-to-man-2.0.0.orig/Instant/tptregexp' make[1]: *** [dotptregexp] Error 2
関連ツールのインストールメモ
docbook-to-manというコマンドがPortageツリーのどのパッケージで入れられるのかを探していたところでインストールしたパッケージに関する覚え書き。インストール/動作には成功したものの、今回使用することはなかった。app-text/docbook-sgml-utils-0.6.14が入らない件について
下のようなエラーが出て、入らなかった。make[2]: Entering directory `/var/tmp/portage/app-text/docbook-sgml-utils-0.6.14/work/docbook-utils-0.6.14/doc/HTML' SGML_CATALOG_FILES=/etc/sgml/catalog \ SGML_SEARCH_PATH=../..:../../doc:.. \ jade -t sgml -i html -d ../../docbook-utils.dsl\#html \ -V '%use-id-as-filename%' ../../doc/docbook-utils.sgml SGML_CATALOG_FILES=/etc/sgml/catalog \ SGML_SEARCH_PATH=../..:../../doc:.. \ jade -t sgml -i html -d ../../docbook-utils.dsl\#html \ -V '%use-id-as-filename%' ../../doc/docbook-utils.sgml jade:/usr/share/sgml/docbook/xml-dtd-4.1.2/ent/iso-amsa.ent:8:19:E: "X21B6" は関数名ではありません jade:/usr/share/sgml/docbook/xml-dtd-4.1.2/ent/iso-amsa.ent:8:19:E: "X21B6" は関数名ではありません jade:/usr/share/sgml/docbook/xml-dtd-4.1.2/ent/iso-amsa.ent:9:19:E: "X21B7" は関数名ではありません (中略) jade:/usr/share/sgml/docbook/xml-dtd-4.1.2/ent/iso-lat2.ent:124:19:E: "X017D" は 関数名ではありません jade:/usr/share/sgml/docbook/xml-dtd-4.1.2/ent/iso-lat2.ent:125:17:E: "X017C" は 関数名ではありません jade:/usr/share/sgml/docbook/xml-dtd-4.1.2/ent/iso-lat2.ent:126:17:E: "X017B" は 関数名ではありません make[2]: *** [api.html] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: *** [backend-spec.html] Error 1 make[2]: Leaving directory `/var/tmp/portage/app-text/docbook-sgml-utils-0.6.14/ work/docbook-utils-0.6.14/doc/HTML' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/app-text/docbook-sgml-utils-0.6.14/ work/docbook-utils-0.6.14/doc' make: *** [all-recursive] Error 1
XML版のDTDを読んでいるようだったので全て一時的に消してみることにした。
手元の環境には
$ ls -d /var/db/pkg/app-text/docbook-xml-dtd-* /var/db/pkg/app-text/docbook-xml-dtd-4.1.2-r6/ /var/db/pkg/app-text/docbook-xml-dtd-4.2-r1/ /var/db/pkg/app-text/docbook-xml-dtd-4.3/ /var/db/pkg/app-text/docbook-xml-dtd-4.4-r1/
4.1.2から4.4までが入っていて、これを全部消した。
$ sudo emerge -aC docbook-xml-dtd
再び実行したところ
$ sudo emerge -av docbook-sgml-utils (中略) [ebuild N ] app-text/docbook-xml-dtd-4.4-r1 [ebuild N ] app-text/docbook-sgml-utils-0.6.14 USE="-tetex"
docbook-xml-dtd-4.4-r1が何故か入ってきたが、結果は
make[2]: Entering directory `/var/tmp/portage/app-text/docbook-sgml-utils-0.6.14/work/docbook-utils-0.6.14/doc/HTML' SGML_CATALOG_FILES=/etc/sgml/catalog \ SGML_SEARCH_PATH=../..:../../doc:.. \ jade -t sgml -i html -d ../../docbook-utils.dsl\#html \ -V '%use-id-as-filename%' ../../doc/docbook-utils.sgml SGML_CATALOG_FILES=/etc/sgml/catalog \ SGML_SEARCH_PATH=../..:../../doc:.. \ jade -t sgml -i html -d ../../docbook-utils.dsl\#html \ -V '%use-id-as-filename%' ../../doc/docbook-utils.sgml jade:/usr/share/sgml/docbook/sgml-dtd-3.1/dbcent.mod:53:65:W: 公開テキスト "ISO 8879:1986//ENTITIES Added Math Symbols: Arrow Relations//EN" に対する一般システム識別子を生成できません jade:/usr/share/sgml/docbook/sgml-dtd-3.1/dbcent.mod:54:8:E: 実体 "ISOamsa" への参照するシステム識別子を生成できませんでした jade:/usr/share/sgml/docbook/sgml-dtd-3.1/dbcent.mod:52:0: 実体はここで定義されました jade:/usr/share/sgml/docbook/sgml-dtd-3.1/dbcent.mod:60:66:W: 公開テキスト "ISO 8879:1986//ENTITIES Added Math Symbols: Binary Operators//EN" に対する一般システム識別子を生成できません jade:/usr/share/sgml/docbook/sgml-dtd-3.1/dbcent.mod:61:8:E: 実体 "ISOamsb" への参照するシステム識別子を生成できませんでした jade:/usr/share/sgml/docbook/sgml-dtd-3.1/dbcent.mod:59:0: 実体はここで定義されました (中略) jade:/usr/share/sgml/docbook/dsssl-stylesheets-1.79/html/../common/../common/dbl1sr.dsl:2:66:W: 公開テキスト "ISO 8879:1986//ENTITIES Added Latin 2//EN" に対す る一般システム識別子を生成できません jade:/usr/share/sgml/docbook/dsssl-stylesheets-1.79/html/../common/../common/dbl1sr.dsl:3:5:E: 実体 "lat2" への参照するシステム識別子を生成できませんでした jade:/usr/share/sgml/docbook/dsssl-stylesheets-1.79/html/../common/../common/dbl1sr.dsl:2:0: 実体はここで定義されました make[2]: *** [api.html] Error 1 make[2]: *** Waiting for unfinished jobs.... make[2]: *** [backend-spec.html] Error 1 make[2]: Leaving directory `/var/tmp/portage/app-text/docbook-sgml-utils-0.6.14/work/docbook-utils-0.6.14/doc/HTML' make[1]: *** [all-recursive] Error 1 make[1]: Leaving directory `/var/tmp/portage/app-text/docbook-sgml-utils-0.6.14/work/docbook-utils-0.6.14/doc' make: *** [all-recursive] Error 1
となってダメだった。
調べたところ、
bugs.gentoo.org/show_bug.cgi?id=184551
で「app-text/sgml-common」の入れ直しの話があったのでやってみた。
$ sudo emerge -av1 sgml-common (中略) >>> Original instance of package unmerged safely. * Installing Catalogs... install-catalog: addition of /usr/share/sgml/sgml-iso-entities-8879.1986/catalog in /etc/sgml/sgml-ent.cat install-catalog: addition of /etc/sgml/sgml-ent.cat in /etc/sgml/catalog install-catalog: addition of /etc/sgml/sgml-ent.cat in /etc/sgml/sgml-docbook.cat * Fixing /etc/sgml/sgml-docbook.cat * Fixing /etc/sgml/sgml-ent.cat * Fixing /etc/sgml/xml-docbook-4.1.2.cat * Fixing /etc/sgml/xml-docbook-4.4.cat * Fixing /etc/sgml/openjade-1.3.2.cat * Fixing /etc/sgml/sgml-docbook-3.0.cat * Fixing /etc/sgml/dsssl-docbook-stylesheets.cat * Fixing /etc/sgml/sgml-docbook-4.1.cat * Fixing /etc/sgml/sgml-docbook-4.0.cat * Fixing /etc/sgml/sgml-docbook-3.1.cat * Fixing /etc/sgml/xml-simple-docbook-4.1.2.4.cat * Fixing /etc/sgml/xml-simple-docbook-1.0.cat * Fixing /etc/sgml/catalog >>> app-text/sgml-common-0.6.3-r5 merged.
カタログファイルが修正されたのが効いたのか、この後でもう一度docbook-sgml-utilsのインストールを試したところ、無事に入った。
最後に、XML版のDTDを戻しておく。
$ sudo emerge -av "~docbook-xml-dtd-4.1.2" "~docbook-xml-dtd-4.2" "~docbook-xml-dtd-4.3"
app-text/docbook2Xが動かない件について
インストールは済んだのだが、$ /usr/bin/docbook2man.pl sh: /usr/bin/db2x_xsltproc: そのようなファイルやディレクトリはありません sh: /usr/bin/db2x_manxml: そのようなファイルやディレクトリはありません
動作していない。バージョン0.8.8でもダメだった。
上の2つのファイルは、拡張子「.pl」の付いたものが代わりに存在していたので、インストール上の問題。これは
bugs.gentoo.org/show_bug.cgi?id=205703
の「Comment #2」にある修正をebuildに適用(した上でローカルOverlayに配置)することで下のように「入力ファイルが無い」エラーに変わり、使えるようになった。
$ /usr/bin/docbook2x-man /usr/bin/db2x_xsltproc: you must specify exactly one source document Empty Stream at /usr/lib64/perl5/vendor_perl/5.8.8/x86_64-linux/XML/LibXML/SAX/Parser.pm line 24