torutkのブログ

ソフトウェア・エンジニアのブログ

Doxygenプラグイン

Eclipse上からDoxygenを使用するプラグイン eclox があります。Eclipse 3.3以上対応で、本日現在 ver.0.8.0が最新です。オンライン更新サイトおよびパッケージアーカイブのダウンロードの2つが用意されています。

雑感

Eclipse上からDoxygen設定ファイルをGUI的に編集する機能がありますが、保存したファイルがUTF-8にならず、プロジェクト名等で日本語を入れた部分が化けてしまいます。現時点では、Doxyge設定ファイルは本プラグインではなくエディタで作成するのがよさそうです。

インストール(ダウンロード方法)

情報セキュリティ過剰反応でインターネットにアクセスできないソフトウェア開発現場なので、ダウンロードして利用する手段でインストールします。

  • ecloxのdownload→packagesでeclox_0.8.0.zipを選択してダウンロード
  • ダウンロードしたファイルを作業ディレクトリに展開
  • [ヘルプ]→[ソフトウェアの更新]→[使用可能なソフトウェア]タブで[サイトの追加]ボタンを押す
  • [ローカル]ボタンを押し、上記で展開したディレクトリ内のupdateを指定する
  • 追加したサイトをチェックし[インストール]ボタンを押す

使い方を紹介しているサイト

使い方は、既にいくつか日本語で紹介しているサイトがあるのでリンクを紹介するにとどめます。

yumの更新サイト複数アクセス時、同じ名前のパッケージは隠蔽される?

RHEL5/CentOS 5には標準でdoxygen-1.4.7が提供されています。しかし、UTF-8環境で使うには、UTF-8対応したdoxygen-1.5.2以降が欲しくなります。


そこで、doxygenソースをダウンロードし、RPMパッケージを作成して自分用yum更新サイトに置いたのですが、yumで一覧を見てもdoxygenの1.5.xが見えません。
一方、同時に置いたdoxygen-debuginfoは見えているので、どうやらCentOSのbase/updateにあるdoxygenパッケージと同名(でバージョン番号だけ異なる)パッケージを別なサイトに置いても隠れてしまうようです。

回避手段

yumのオプション --disablerepo=* --enablerepo=xxx の様に、隠れてしまったパッケージを置いたxxxサイトだけ有効にする方法はあります。但し、無効にしたCentOS標準サイトに依存するパッケージがあると厄介です。エラーになったパッケージを先に入れてから・・・とyumのメリットが失われてしまいます。


パッケージ名を変えて作成するのがよいのかなぁ。。。

追記(11/9)

doxygenの場合、CentOS 5の標準パッケージdoxygen-1.4.7-1.1.i386.rpmは、Epochと呼ばれる特殊なバージョン指定が付加されています。Epochはあちこちの文献で「使用すべきでない」と言われている仕組みなのですが・・・

そこで、Epoch番号を明示的に指定して最新doxygenパッケージを作成するのが解決策として適していると思います。

Epochを含めたバージョン番号

通常一覧で見る限り、Epoch番号は隠れています。--providesオプションで見ることができます。

$ rpm -q doxygen
doxygen-1.4.7-1.1
$ rpm -q --provides doxygen
doxygen = 1:1.4.7-1.1
$

Epoch番号が指定されていないRPMパッケージは、Epoch=0と見なされます。rpmのバージョン番号の比較では、最初にEpoch番号の大小比較で新旧がチェックされます。

  1. 1:1.4.7-1.1 (Epoch=1, Version=1.4.7, Release=1.1)
  2. 1.5.6-1 (Epoch=0[未指定のデフォルト], Version=1.5.6, Release=1)

上記の2つのバージョンは、前者が新しいバージョンと認識されてしまいます。

このため、CentOSの標準パッケージにあるdoxygen(1:1.4.7-1.1)と、自分の更新サイトにあるdoxygen(0:1.5.6-1)をyumが読み込んだ際に新しいバージョンと見なしたCentOS標準パッケージのdoxygen-1.4.7-1.1を表示していたようです。

CentOSdoxygen-1.4.7-1.1のdoxygen.specファイルのバージョン設定

ソースRPMパッケージからspecファイルを抜くと以下のバージョン番号を持っていました。

Version: 1.4.7
Release: 1.1
Epoch: 1