portsnap による定期的な /usr/ports ディレクトリのアップデートを行っていますが、freebsdドキュメントの更新がきていることを発見しました。
ja-freebsd-doc-43088_1,1 < needs updating (port has 43207,1)
ドキュメントの内容が更新されたものと推測し、気軽に
#portupgrade ja-freebsd-doc-43088_1,1
と行ったところ、気付けば大量のエラーメッセージが発生していました。
===> open-motif-2.3.4 conflicts with installed package(s):
lesstif-0.95.2_2,2
They install files into the same place.
You may want to stop build with Ctrl + C.
===> License LGPL21 accepted by the user
===> Fetching all distfiles required by open-motif-2.3.4 for building
===> open-motif-2.3.4 conflicts with installed package(s):
lesstif-0.95.2_2,2
They will not build together.
Please remove them first with pkg_delete(1).
*** Error code 1
Stop in /usr/ports/x11-toolkits/open-motif.
*** Error code 1
Stop in /usr/ports/java/openjdk6.
*** Error code 1
Stop in /usr/ports/textproc/fop.
*** Error code 1
Stop in /usr/ports/misc/freebsd-doc-ja.
** Command failed [exit code 1]: /usr/bin/script -qa /tmp/portupgrade20131122-35856-15px7fp env UPGRADE_TOOL=portupgrade UPGRADE_PORT=ja-freebsd-doc-43088_1,1 UPGRADE_PORT_VER=43088_1,1 make
** Fix the problem and try again.
** Listing the failed packages (-:ignored / *:skipped / !:failed)
! misc/freebsd-doc-ja (ja-freebsd-doc-43088_1,1) (unknown build error)
私がインストールしているLesstif が、freebsd-doc と何らかの依存関係があるopen-motif パッケージと競合を起こすため、Lesstif をアンインストールしないとインストール出来ないということのようです。
ドキュメントディレクトリの内容を更新するだけのはずが、なぜMotif が関係するの?
それに今まで何度も ja-freebsd-doc を更新してきているのに、今回なぜこんなことになるのか!?
今回は更新に失敗しましたが、回避は簡単でlesstifを一時的に削除したあとで、ja-freebsd-doc パッケージを更新すればいいだけのはず。しかし、これだとopen-motif が入ってしまいます。同じmotif ウィンドウマネージャなのに、なぜ lesstif を使っているかというと、lesstif は仮想画面に対応していてMacOSのSpaces のような使い方が出来ます。それに対し、昨年 Open-motif を試したときは仮想画面は使えませんでした。という理由でlesstif を使っているため、今回はlesstifを一旦削除すると言うことで対応できたとしても、また ja-freebsd-doc の更新があると、またまた手動で一旦lesstif を削除しないといけない可能性があります。当然、そんな面倒なことをしたくありません。
腹立たしいことではありますが、エラーメッセージをよくよく見ると、fop というパッケージを入れるために、openjdk6 が必要なようで、これがopen-motif を必要としているようです。fop や openjdk6 の更新が発生しない限り、open-motifが再度必要になることはないのではないかと言うことで、泣く泣く「pkg_delete lesstif-0.95.2_2,2」を発行して次に進めることにしました。
lesstif を削除してportupgrade を実行してみたところ、今度は別のエラーが発生。
回避するために環境変数を設定して手動でmakeしたりと、ビルドに15時間以上費やしましたがようやく完了し ja-freebsd-doc の更新が完了しました。
このあとで、open-motif を pkg_delete で削除し、再度 lesstif をインストールして、FreeBSDドキュメントの更新が終了。ただのドキュメントファイルのインストールがなぜこんなに大変なのか疑問に思ってしまいます。推測ですがドキュメントリーダーも一緒にインストールしようしているんでしょうね。
FreeBSD ports の依存関係としては、
- ビルドに必要なパッケージ(zip、unzip、gmakeのようなもの)
- プログラム実行に必要なパッケージ
- プログラム実行に必要なライブラリー
がありますが、open-motifが1のビルドだけに必要なものであれば良かったのですが、今回は3の実行に必要なライブラリのようですから腹立たしい。
これで作業完了完了なら良かったのですが、lesstif を入れ直した後、再度 portversion を取ってみると、依存関係が壊れているのでエラーになります。
# portversion -vL=
[Updating the pkgdb <format:bdb_btree> in /var/db/pkg ... - 582 packages found (-1 +1) (...). done]
Stale dependency: apache-ant-1.8.4 --> open-motif-2.3.4 -- manually run 'pkgdb -F' to fix, or specify -O to force.
pkdbコマンドを試せということなので、指示に従って実行しました。open-motif, lesstif 以外にも問題が見つかり、一緒に修正を行いました。
# pkgdb -F ---> Checking the package registry database Stale origin: 'textproc/docproj-nojadetex': perhaps moved or obsoleted. -> The port 'textproc/docproj-nojadetex' was removed on 2013-11-07 because: "Removed" -> Hint: docproj-nojadetex-1.17_13 is not required by any other package -> Hint: checking for overwritten files... -> No files installed by docproj-nojadetex-1.17_13 have been overwritten by other packages. Deinstall docproj-nojadetex-1.17_13 ? [no] yes ---> Deinstalling 'docproj-nojadetex-1.17_13' [Updating the pkgdb <format:bdb_btree> in /var/db/pkg ... - 581 packages found (-1 +0) (...) done] --> Done. Duplicated origin: databases/ruby-bdb - ruby18-bdb-0.6.6_1 ruby19-bdb-0.6.6_1 Unregister any of them? [no] yes Unregister ruby18-bdb-0.6.6_1 keeping the installed files intact? [no] Unregister ruby19-bdb-0.6.6_1 keeping the installed files intact? [no] Stale dependency: apache-ant-1.8.4 -> open-motif-2.3.4 (x11-toolkits/open-motif): Install stale dependency? ([y]es/[n]o/[a]ll) [yes] no New dependency? (? to help): ? [Enter] to skip, [Ctrl]+[D] to delete, [.][Enter] to abort, [Tab] to complete New dependency? (? to help): lesstif-0.95.2_2,2 Fixed. (-> lesstif-0.95.2_2,2) Stale dependency: fop-1.1 -> open-motif-2.3.4 (x11-toolkits/open-motif): lesstif-0.95.2_2,2 ? ([y]es/[n]o/[a]ll) [yes] y Fixed. (-> lesstif-0.95.2_2,2) Stale dependency: openjdk6-b28_5 -> open-motif-2.3.4 (x11-toolkits/open-motif): lesstif-0.95.2_2,2 ? ([y]es/[n]o/[a]ll) [yes] y Fixed. (-> lesstif-0.95.2_2,2) Cyclic dependencies: gamin-0.1.10_6 -> (gamin-0.1.10_6) Unlink gamin-0.1.10_6 -> gamin-0.1.10_6 ? [yes] Done.
さて、本当にこれで安定できるのだろうか? 若干不安はありますが様子見をするしかない状況です。