CentOS 5をプログラミング環境で使う

バイナリ・パッケージあれこれ

目次

はじめに

 主にプログラミング開発環境で使用する、CentOS 5に入れる各種バイナリパッケージやその入手先についてのメモページです。バイナリパッケージがないものについてはパッケージ作成を行います。

パッケージの入手

GUI

Qt

Qtのインストールについては、CentOS 5を使う:Qt4.xをインストールする ページに記述しています。

ツール

図形描画

graphviz

ライセンス:Common Public License
入手先: http://www.graphviz.org/

Red Hat Enterprise Linux用RPMパッケージが公開されています。

ライブラリ

OS、GCC関係

binutils-devel

bdf.hなど

OS周り(カーネル・ドライバ)

カーネル

リアルタイム・カーネル

kernel-rt-2.6.24.7-65.el5rt.centos.i686.rpmほか公開されています。

上記ディレクトリにある kernel-rt.repo を、/etc/yum.repos.d/にコピーし、以下を実行します。

# yum --enablerepo=kernel-rt install rt-setup
    :

CentOSのForumにおける上記の議論

参考

上記の元となっている、Red Hat Enterprise Linux Realtime Kernelのインストールガイドページ

最新カーネル

2008.11.16現在、Kernel 2.6.27が最新です。

パッケージの作成

CentOS 5(またはRed Hat Enterprise Linux 5あるいはFedora Core 6)向けにバイナリパッケージが提供されていないソフトウェアは、自分でバイナリ・パッケージを作成します。

RPMパッケージ作成に関するノウハウは、「RPMパッケージ作成メモ」ページに記載しています。

作成したバイナリ・パッケージ

プログラミング用パッケージ

log4cpp 1.0

tarallにspecファイルが含まれているので、わりと簡単にバイナリパッケージが作成できます。

specファイルの記述ミスがあるので、これを修正します。

cppunit 1.12.0

tarballにspecファイルが含まれていますが、デフォルトのままではエラーとなるので修正します。

SPECファイルの修正

tarballにspecファイルが含まれています。コレを用いてビルドすると、エラーが発生します。

エラー: インストール済み(ただし未伸張)ファイルが見つかりました:
   /usr/lib/pkgconfig/cppunit.pc
   /usr/share/doc/cppunit/FAQ
   /usr/share/doc/cppunit/_additional_message_8cpp.html
   /usr/share/doc/cppunit/_additional_message_8h-source.html
       :
           

%filesセクションに記述されていないファイルがビルドルート下にあるため発生しているエラーです。

最初の行のpkgconfigについては必要になると思われるので、specファイルの%filesセクションに追加します。

%{_libdir}/pkgconfig/cppunit.pc

2行目以降はドキュメントファイルです。rpmbuildは、ドキュメントファイルが格納されるディレクトリを/usr/share/doc/cppunit-1.12.1とバージョン番号付きで認識しているのに、CppUnitのMakefileがバージョン番号なしの/usr/share/doc/cppunitにドキュメントを入れたため、エラーとなったものです。

$ ls /var/tmp/cppunit-1.12.1-2-root-torutk/usr/share/doc
cppunit  cppunit-1.12.1   cppunit-doc-1.12.1

とあり、cppunitとcppunit-doc-1.12.1の中はほぼ一緒です。そこで、cppunit以下に%filesセクションにないファイルがあっても無視するように、以下のマクロ定義をspecファイル先頭に追加します。

%define _unpackaged_files_terminate_build 0 

doxygen-1.5.7.1

依存関係上、LaTeX、dvips、graphviz、ghostscriptのパッケージが必要となります。doxywizardを使用するなら、Qt-3.2+が必要となります。Qt4には対応していません。
graphvizは、CentOS標準には含まれていないので、別途graphvizサイトからRPMパッケージを入手してインストールします。

ソースファイルを、Doxygen公式サイトから入手します。

ソースファイルを展開します。

work$ tar xvzf doxygen-1.5.7.1.src.tar.gz
  :
work$ cd doxygen-1.5.7.1
doxygen-1.5.7.1$ 

doxygen.specファイルを、~/rpm/SPECSへコピーし、修正します。

doxygen-1.5.7.1$ cp packages/rpm/doxygen.spec ~/rpm/SPECS/
主な修正事項は、Epoch指定追加、ソースアーカイブファイル名の違い修正、以下で作成するパッチ指定、BuildPrereqの指定追加、manのディレクトリ修正です。

Makefile.in, addon/doxywizard/Makefile.in を修正し、パッチファイルを作成します。パッチファイルは~/rpm/SOURCESに置きます。

主な修正事項は、MANDIRの修正、生成ファイル一覧からconfigure.binの除去

tmake/lib/linux-g++/tmake.confを修正し、パッチファイルを作成します。パッチファイルは~/rpm/SOURCESに置きます。

主な修正事項は、最適化オプションの指定変更(RPM側で指定)、mocコマンドのパス指定です。

ソースファイルを、~/rpm/SOURCESに置きます。

これで準備が整いました。RPMパッケージを作成します。

~$ cd rpm/SPECS
SPECS$ QTDIR=/usr/lib/qt-3.3 rpmbuild -ba --define "_with_doxywizard --with-doxywizard doxygen.spec
    :
SPECS$  

~rpm/RPMS/i386の下にrpmパッケージが、~rpm/SRPMSの下にソースRPMパッケージが生成されます。

Qt-4.4.3/Qt-4.5.x

C++ GUIツールキットQt 4.xを入れる ページに記述しています。

ACE TAO 5.6.6

TAO1.6 Linux GCC4.1インストール記録のページにRPMパッケージを作成する手順を書きました。

Boost 1.37.0

CentOS 5標準のboost RPMパッケージ用のboost.specファイルや、fedora用のboost 1.36のboost.specなどを参考にして、作成しました。

configureの修正パッチ

boostのデフォルト設定でビルドすると、以下の問題があります。

  1. 生成されるライブラリファイル名が長い(コンパイラ種類やバージョン番号が名前に含まれる)
    例)libboost_date_time-gcc41-1_37.so
    これは、boostを利用するアプリケーションのリンク時に、-lboost_date_time_gcc41-1_37 と長いシンボルを書かねばならず、ちょっと大変です。そこで、boostのビルドツールであるbjamのオプションに、--layout=systemを指定します。生成されるboostライブラリ・ファイルは、拡張子.soの前にバージョン番号を含みません。
    例) --layout=system指定時: libboost_date_time.so、未指定時: libboost_date_time-gcc41-1_37.so
  2. デバッグシンボルが削除されている
    debuginfoパッケージを作成するには、ビルド時にはライブラリにデバッグシンボルがふくまれるようにしておき、インストール時にstripする手順にしておくことが必要です。そこで、debug-symbols=onを指定します。
  3. ライブラリファイルの出力先をstageディレクトリ以下にする
    specファイルの記述の都合ですが、ライブラリファイルをこのディレクトリにします。

以上を反映したconfigureファイルの修正点が以下となります。

!BJAM_CONFIG=""
---
!BJAM_CONFIG="-d2 --layout=system variant=release threading=single,multi debug-symbols=on"
!       @echo "\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS)"
!       @\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS) || \\
---
!       @echo "\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS) stage"
!       @\$(BJAM) \$(BJAM_CONFIG) --user-config=user-config.jam \$(LIBS) stage || \\
tools/build/v2/tools/gcc.jamの修正パッチ
  1. 動的リンクライブラリファイルのSONAMEがファイル名と同じになる(SOバージョンが追加されない)
    boostはバイナリ互換性を考慮してはいないので、どのバージョンとバイナリ互換かは特定することは難しいということはあるが、あまりに離れたバージョンでは動的リンクできないようにしたい。ただし、マイナーバージョンの異なるだけであれば再リンクしなくてもいいようにしたい。
    なお、RedHat/Fedoraの歴代boostのSONAMEに付加しているバージョン番号は、1.32で1、1.33.0から2、1.34.1-2から3、1.36から4を使用しています。
    !     SONAME_OPTION = -h ;
    ---
    !     SONAME_OPTION = -soname ;
    !     SONAME_VERSION = 4 ;
    !     "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,"$(RPATH)" "$(.IMPLIB-COMMAND)$(<[1])"
     -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=) -shared $(START-GROUP) "$(>)" "$(LIBRARIES)"
     $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS)
    ---
    !     "$(CONFIG_COMMAND)" -L"$(LINKPATH)" -Wl,$(RPATH_OPTION:E=-R)$(SPACE)-Wl,"$(RPATH)" "$(.IMPLIB-COMMAND)$(<[1])"
     -o "$(<[-1])" $(HAVE_SONAME)-Wl,$(SONAME_OPTION)$(SPACE)-Wl,$(<[-1]:D=).$(SONAME_VERSION) -shared $(START-GROUP) "$(>)"
     "$(LIBRARIES)" $(FINDLIBS-ST-PFX) -l$(FINDLIBS-ST) $(FINDLIBS-SA-PFX) -l$(FINDLIBS-SA) $(END-GROUP) $(OPTIONS) $(USER_OPTIONS)
  2. 最適化コンパイルオプションはRPM側で定義しているものを使用
    ! flags gcc.compile OPTIONS <optimization>speed : -O3 ;
    ---
    ! flags gcc.compile OPTIONS <optimization>speed : "$RPM_OPT_FLAGS" ;

Boost 1.38.0

RPM pbone.netのFedora用boost-1.37.0-3.fc11.src.rpmを元に作成しました。

調査メモ

boost-1.37.0-3.fc11.src.rpmに含まれているパッチと内容

boost.specファイル

以下の記述は変更する必要があります。

Version: 1.37.0
Source: boost_1_37_0.tar.bz2
Patch3: boost-gcc43.patch
%setup -q -n %{name}_1_37_0
%patch3 -p1

BuildRequiresにあるchrpathをインストールする必要があります。

→ [extras]、[epel]にパッケージchrpathあり。

boost 1.39.0

STLport 5.2.1

以下URLから、STLport-5.2.1-1.el5.pp.src.rpmを取得します。

中身を展開し、rpmbuildでビルドしてパッケージが出来上がります。STLport.specファイルは特に修正不要でした。インストール先は、ヘッダーファイルが/usr/include/stlportに、ドキュメント類は/usr/share/doc/STLport-5.2.1に、ライブラリファイルは/usr/lib/libstlport* になります。

Subversion 1.5.x

 CentOSのSubversionは、1.4.2ベースですが、Ver.1.5系が欲しいときがあります。そこで、Fedora 10(開発版)からSubversion 1.5のソースRPMパッケージを持ってきてビルドし、RPMパッケージを作成します。

Fedora 10用 Subversion-1.5.4-3.src.rpmの入手と展開

JPのミラーのいずれか(JAISTRIKENKDDI Lab)から入手するのがよいでしょう。2008年11月15日現在、Fedora 10は正式版リリース直前なので、development/source/SRPMS の中から、subversion-1.5.4-3.src.rpmを入手します。

work$ mkdir subversion
subversion$ rpm2cpio subversion-1.5.4-3.src.rpm | cpio -i
    :
subversion$ ls
filter-requires.sh                 subverseion-1.5.2-pie.patch
psvn.el                            subversion-1.5.4.tar.gz
subversion-0.20.1-deplibs.patch    subversion.conf
subversion-1.1.3-java.patch        subversion.spec
subversion-1.5.1-rpath.patch
subversion$ 
subversion.specの修正

CentOSとFedoraで異なる箇所があるので修正します。

1. Java開発キットのディレクトリ

-%define jdk_path /usr/lib/jvm/java
+%define jdk_path /usr/java/latest

 Fedora 10では、java開発キットにopen-jdkを標準搭載していますが、CentOSは、GNU GCCのGCJです。GCJはSunのJavaとの互換性が乏しいので、CentOSの場合、SunからJDKバイナリを入手してインストールします。

2. Java開発キットのパッケージ名

-BuildRequires: java-devel-openjdk
+BuildRequires: jdk

 1.で説明のとおり、Java開発キットのパッケージをSunのものに合わせます。

3. Perl開発キットのパッケージ

-BuildRequires: perl-devel >= 2:5.8.0, perl(ExtUtils::MakeMaker)
+BuildRequires: perl >= 2:5.8.0, perl(ExtUtils::MakeMaker)

 Fedora 10では、Perlのパッケージが実行用と開発用でperl、perl-devと分かれていますが、CentOSではどちらも同じ perl パッケージに入っているので修正します。

4. バージョン番号

-Release: 3
+Release: 3%{?dist}

 Fedora 10のSubversionパッケージのバージョン番号は、1.5.4-3 です。一方、Red Hat Enterprise Linux/CentOS 5のsubversionパッケージは、バージョン番号が 1.4.2-2.el5 のように、el5が含まれています。そこで、subversion.specファイルのRelease: の箇所を、書き換えます。distマクロ自体は未定義なので、rpmbuildコマンドのオプションで指定します。

5. Requiresのaprバージョン

 CentOS 5は、apr-1.2.x です。一方Fedora 10用のSubversionのSPECファイルには、apr >= 1.3 と書かれています。とりあえず、依存関係を1.2にしてみるか、単にaprとだけ記述して回避します。

rpmbuildでRPMバイナリパッケージの作成

修正した subversion.specファイルを ~/rpm/SPECS へ、それ以外の入手・展開したファイルを ~/rpm/SOURCES へコピーします。

rpmbuild コマンドでRPMパッケージを作成します。

subversion$ cd ~/rpm/SPECS
SPECS$ rpmbuild -ba --define="dist .el5" subversion.spec
    :
SPECS$

~/RPMS/i386の中に、以下パッケージが生成されます。

SPECS$ ls ../RPMS/i386
mod_dav_svn-1.5.4-3.el5.i386.rpm              subversion-javahl-1.5.4-3.el5.i386.rpm
subversion-1.5.4-3.el5.i386.rpm               subversion-perl-1.5.4-3.el5.i386.rpm
subversion-debuginfo-1.5.4-3.el5.i386.rpm     subversion-ruby-1.5.4-3.el5.i386.rpm
subversion-devel-1.5.4-3.el5.i386.rpm
SPECS$  

subversion 1.6.2

Fedora開発版に含まれるsubversion-1.6.1-4.fc11.src.rpmを元に、Subverion 1.6.2をビルドします。

subversion-1.6.1-4.fc11.rpmのソースRPM構成品
work$ mkdir subversion
subversion$ rpm2cpio subversion-1.6.1-4.fc11.src.rpm | cpio -i
    :
subversion$ ls
filter-requires.sh                 subversion-1.6.0-pie.patch    
psvn-init.el                       subversion-1.6.0-rpath.patch
psvn.el                            subversion-1.6.1.tar.gz
subversion-1.1.3-java.patch        subversion.conf                               
subversion-1.6.0-deplibs.patch     subversion.spec
subversion$ 
subversion.specの修正

CentOSとFedoraで異なる箇所があるので修正します。なお、CentOS 5.3から、openjdkが標準搭載されるようになったので、JavaのパッケージはSunのものでなくてよくなりました。

1. Perl開発キットのパッケージ

-BuildRequires: perl-devel >= 2:5.8.0, perl(ExtUtils::MakeMaker)
+BuildRequires: perl >= 2:5.8.0, perl(ExtUtils::MakeMaker)

 Fedora 10では、Perlのパッケージが実行用と開発用でperl、perl-devと分かれていますが、CentOSではどちらも同じ perl パッケージに入っているので修正します。

2. バージョン番号

-Version: 1.6.1
+Version: 1.6.2
-Release: 4%{?dist}
+Release: 1%{?dist}

3. BuildRequiresのaprバージョン

-BuildRequires: apr-devel >= 1.3.0, apr-util-devel >= 1.3.0
+BuildRequires: apr-devel >= 1.2.7, apr-util-devel >= 1.2.7

 CentOS 5は、apr-1.2.x です。一方Fedora 11用のSubversionのSPECファイルには、1.3.0が要求されています。とりあえず、依存関係を1.2.7にしてみます。

4. Requiresのaprバージョン

-Requires: apr >= 1.3
+Requires: apr >= 1.2

 これも3.と同様です。

rpmbuildでRPMバイナリパッケージの作成

修正した subversion.specファイルを ~/rpm/SPECS へ、それ以外の入手・展開したファイルを ~/rpm/SOURCES へコピーします。

rpmbuild コマンドでRPMパッケージを作成します。

subversion$ cd ~/rpm/SPECS
SPECS$ rpmbuild -ba --define="dist .el5" subversion.spec
    :
SPECS$

~/RPMS/i386の中に、以下パッケージが生成されます。

SPECS$ ls ../RPMS/i386
mod_dav_svn-1.6.2-1.el5.i386.rpm              subversion-javahl-1.6.2-1.el5.i386.rpm
subversion-1.6.2-1.el5.i386.rpm               subversion-perl-1.6.2-1.el5.i386.rpm
subversion-debuginfo-1.6.2-1.el5.i386.rpm     subversion-ruby-1.6.2-1.el5.i386.rpm
subversion-devel-1.6.2-1.el5.i386.rpm
SPECS$  
subversion 1.6.11

Fedora開発版に含まれるsubversion-1.6.11-1.fc14.src.rpmをベースにすると、configure時にエラーが出て解決できていません。

bazaar 2.0

 CentOS自身にはbazaarは含まれていませんが、EPEL(Extra Packages for Enterprise Linux)のパッケージで2.1.1が提供されています。しかし、Bazaarは活発に開発されており、2.1.1では少々古いので、最新版に追従するには、Fedora 12(開発版)からbzr 2.0のソースRPMパッケージを持ってきて、少々修正を行い最新版のbazaarでビルドし、RPMパッケージを作成します。

最新版ソースの入手

BazaarのWebサイトからダウンロードページへリンクをたどって,ソースファイルの最新版とその署名ファイルを入手します。2011/06/03時点で以下ファイルを入手しました。

★以下は古い2.0.1のRPMパッケージ手順です。(更新しないかも)

Fedora12のbzrパッケージの入手

とりあえずミラーの1つRIKENからreleases/12/Everything/source/SRPMSをたどって、bzrのソースRPM最新版を入手しました。

work$ mkdir bzr
bzr$ rpm2cpio bzr-2.0.1-1.fc12.src.rpm | cpio -i
    :
bzr$ ls
bzr-2.0.1.tar.gz  bzr-2.0.1.tar.gz.sig  bzr.spec
bzr$ cp bzr.spec ~/rpm/SPECS
bzr.specファイルの修正
@@ -7,7 +7,7 @@
 #   bzrrc: release candidate version, if any, line starts with % for rc, # for stable releas (no %).
 #   release: rpm subrelease (0.N for rc candidates, N for stable releases)
 %define bzrmajor 2.0
-%define bzrminor .1
+%define bzrminor .3
 #define bzrrc rc2
 %define release 1 
bzrパッケージの作成
bzr$ cp bzr-2.0.3.tar.gz* ~/rpm/SOURCES
bzr$ cd ~/rpm/SPECS
SPECS$ rpmbuild -ba bzr.spec
   :
SPECS$

なお、rpmbuild時に以下パッケージが必要になります。

パッケージ名 入手リポジトリ
python-elementtree CentOS標準
python-paramiko EPEL
python-pycurl EPEL
bzrtoolsパッケージの作成
work$ mkdir bzrtools
bzrtools$ rpm2cpio bzrtools-2.0.1-1.fc12.src.rpm | cpio -i
    :
bzrtools$ ls
bzrtools-2.0.1.tar.gz  bzrtools-2.0.1.tar.gz.sig  bzrtools.spec
bzrtools$ cp bzrtools-2.0.1.tar.gz* ~/rpm/SOURCES
bzrtools$ cp bzrtools.spec ~/rpm/SPECS
bzrtools$ cd ~/rpm/SPECS
SPECS$ rpmbuild -ba bzrtools.spec
   :
SPECS$
bzr-gtkパッケージの作成
work$ mkdir bzr-gtk
bzr-gkt$ rpm2cpio bzrtools-2.0.0-1.fc12.src.rpm | cpio -i
    :
bzr-gkt$ ls
bzr-gtk-0.97.0.tar.gz                bzr-gtk-el5-encoding.patch
bzr-gtk-desktop-version.patch        bzr-gtk.spec
bzr-gtk-disable-nautilus-pull.patch
bzr-gkt$ mv bzr-gtk.spec ~/rpm/SPECS
bzr-gkt$ cp * ~/rpm/SOURCES
bzr-gkt$ 

bzr-gtkパッケージをCentOS 5(python 2.4)で動かすには、SPECファイルおよびソースの修正(パッチ)を作成する必要がありました。

bzr-gkt$ cd ~/rpm/SPECS
SPECS$ rpmbuild -ba bzr-gtk.spec
   :
SPECS$

olive-gtk.desktopに必須のEncoding指定行がないため、これをパッチで追加
python 2.4では、xml.etree.ElementTreeパッケージがなく(これはpython 2.5の標準)、python-lxmlパッケージで提供のlxml.etreeを使用するようにdiff.pyを修正するパッチを追加

gmp-4.2.2

"A GNU arbitrary precision library"

GCC-4.3.2をビルドする際、前提として必要なライブラリの1つです。CentOS 5には、gmp-4.1.4がインストールされていますが、CentOSには含まれないmpfrライブラリを入れるにあたり、バージョンアップしておきたく更新します。

Fedora用のソースRPMパッケージを入手し、そのままrpmbuildコマンドでバイナリRPMを生成しインストールしました。

Fedoraミラーサイトのfedora/releases/10/Fedora/source/SRPMS より、gmp-4.2.2-8.fc10.src.rpmを入手

work$ rpmbuild --rebuild gmp-4.2.2-8.fc10.src.rpm
   :
work$  

エラーなく、RPMディレクトリ(~/rpm)のRPMS/i386に、gpm-4.2.2-8.i386.rpmとgpm-devel-4.2.2-8.i386.rpmができたら、インストールします。

# cd ~/rpm/RPMS/i386
# rpm -Uvh gmp-4.2.2-8.i386.rpm gmp-devel-4.2.2-8.i386.rpm
   :
#  

CentOSには、古いバージョンのgmpとgmp-develパッケージが入っているので、同時に2つを更新します。

mpfr-2.3.2

"A C library for multiple-precision floating-point computations"

GCC-4.3.2をビルドする際、前提として必要なライブラリの1つです。CentOS 5にはパッケージが用意されていないので、Fedora用のソースRPMパッケージから生成します。

Fedora用のソースRPMパッケージを入手し、そのままrpmbuildコマンドでバイナリRPMを生成しインストールしました。

Fedoraミラーサイトのfedora/releases/10/Fedora/source/SRPMS より、mpfr-2.3.2-1.fc10.src.rpmを入手

work$ rpmbuild --rebuild mpfr-2.3.2-1.fc10.src.rpm
   :
work$  

エラーなく、RPMディレクトリ(~/rpm)のRPMS/i386に、mpfr-2.3.2-1.i386.rpmとmpfr-devel-2.3.2-1.i386.rpmができたら、インストールします。

# cd ~/rpm/RPMS/i386
# rpm -ivh mpfr-2.3.2-1.i386.rpm mpfr-devel-2.3.2-1.i386.rpm
   :
#  

ruby-1.8.7

CentOS 5.xのrubyは、Ver.1.8.5なので、1.8.7系を入れることにしてみます。Fedoraの最新版からパッケージを流用して作成します。

この手順で作成したRPMパッケージ 
ruby-1.8.7.299-1.i386.rpm
ruby-libs-1.8.7.299-1.i386.rpm
ruby-devel-1.8.7.299-1.i386.rpm
ruby-irb-1.8.7.299-1.i386.rpm
ruby-rdoc-1.8.7.299-1.i386.rpm
ruby-ri-1.8.7.299-1.i386.rpm
ruby-tcltk-1.8.7.299-1.i386.rpm
ruby-docs-1.8.7.299-1.i386.rpm
ruby-mode-1.8.7.299-1.i386.rpm
rubyソースの入手

2011年06月03日現在、1.8.7系列は、p334が最新版ですが、configure時に、マシンのautoconfバージョン2.60以上を要求するので、断念。

RPMソースパッケージ(Fedora開発版:1.8.6)の入手

まず、Fedoraミラーサイトのfedora/updates/12/SRPMS より、ruby-1.8.6.399-6.fc12.src.rpmを入手

RPMソースパッケージの展開と配置
work$ mkdir ruby-1.8.6.399-6.fc12
work$ cd ruby-1.8.6.399-6.fc12
ruby-1.8.6.399-6.fc12$ rpm2cpio /tmp/ruby-1.8.6.369-3.fc12.rpm | cpio -i
16601 blocks
ruby-1.8.6.399-6.fc12$ mv ruby.spec ~/rpm/SPECS
ruby-1.8.6.399-6.fc12$ mv * ~/rpm/SOURCES
ruby-1.8.6.399-6.fc12$ cp /tmp/ruby-1.8.7-p299.tar.bz2 ~/rpm/SOURCES
ruby-1.8.6.399-6.fc12$ 
ruby.specファイルの修正

以下の修正をします。なお、修正後のruby.spec ファイルはここです。

バージョン番号を修正します。

-%define        rubyver         1.8.6
-%define _patchlevel    369
+%define        rubyver         1.8.7
+%define _patchlevel    299

-Release:       3%{?dist}
+Release:       1%{?dist}

1.8.6へのパッチは、1.8.7では適用できないものがあるので、適用に失敗したパッチを削除します。

-Patch1:                ruby-deadcode.patch
-Patch20:       ruby-rubyprefix.patch
-Patch21:       ruby-deprecated-sitelib-search-path.patch

-Patch30:       ruby-openssl-1.0.patch

-%patch1 -p1
-%patch20 -p1
-%patch21 -p1

-%patch30 -p2
rpmbuildでRPMバイナリパッケージの作成

rpmbuild コマンドでRPMパッケージを作成します。

~$ cd ~/rpm/SPECS
SPECS$ rpmbuild -ba ruby.spec
    :
SPECS$

~/RPMS/i386の中に、以下パッケージが生成されます。

SPECS$ cd ../RPMS/i386
i386$ ls
ruby-1.8.7.299-1.i386.rpm            ruby-libs-1.8.7.299-1.i386.rpm
ruby-debuginfo-1.8.7.299-1.i386.rpm  ruby-mode-1.8.7.299-1.i386.rpm
ruby-devel-1.8.7.299-1.i386.rpm      ruby-rdoc-1.8.7.299-1.i386.rpm
ruby-docs-1.8.7.299-1.i386.rpm       ruby-ri-1.8.7.299-1.i386.rpm
ruby-irb-1.8.7.299-1.i386.rpm        ruby-tcltk-1.8.7.299-1.i386.rpm
i386$  

rubygem-rack-1.1.0

Redmine 1.2.xで使用されるRuby On Rails 2.3.11は、rackライブラリ(ver.1.1.x)を必要とします。rackは、様々なWebサーバ(Apache/WEBrick/Mongrelなど)をラッピングする共通インタフェースです。

この手順で作成したRPMパッケージ   rubygem-rack-1.1.0-2.noarch.rpm

EPELから入手できるrackはバージョンが0.4と古いので、別途作成します。

rubygem-test-specのインストール

EPELより、rubygem-test-specをインストールしておきます。

RPMソースパッケージ(Fedora 14)の入手

まず、Fedoraミラーサイトのfedora/updates/14/SRPMS/ より、rubygem-rack-1.1.0-2.fc14.src.rpm を入手

RPMソースパッケージの展開と配置
work$ mkdir rubygem-rack-1.1.0-2.fc14
work$ cd rubygem-rack-1.1.0-2.fc14
rubygem-rack-1.1.0-2.fc14$ rpm2cpio /tmp/rubygem-rack-1.1.0-2.fc14.src.rpm | cpio i
213 blocks
rubygem-rack-1.1.0-2.fc14$ mv rubygem-rack.spec ~/rpm/SPECS
rubygem-rack-1.1.0-2.fc14$ mv rack-1.1.0.gem ~/rpm/SOURCES
rpmbuildでRPMバイナリパッケージの作成

rpmbuild コマンドでRPMパッケージを作成します。

~$ cd ~/rpm/SPECS
SPECS$ rpmbuild -ba rubygem-rack.spec
    :
SPECS$

~/RPMS/noarchの中に、以下パッケージが生成されます。

SPECS$ cd ../RPMS/noarch
noarch$ ls
rubygem-rack-1.1.0-2.noarch.rpm
noarch$  

rubygems-1.3.7

rubygemsパッケージは、rubyのライブラリを管理するツールです。CentOS 5には標準では搭載されておらず、EPELからrubygems-1.3.1が提供されています。

最近のrubyライブラリで、rubygems-1.3.5以上を要求するものがあったため、新しいrubygemsを作ります。

この手順で作成したRPMパッケージ  rubygems-1.3.7-2.noarch.rpm
RPMソースパッケージ(Fedora 14)の入手

まず、Fedoraミラーサイトのfedora/releases/14/Everything/source/SRPMS より、rubygems-1.3.7-2.fc14.src.rpm を入手

RPMソースパッケージの展開と配置、パッケージビルド
work$ mkdir rubygems-1.3.7-2.fc14
work$ cd rubygems-1.3.7-2.fc14
rubygems-1.3.7-2.fc14$ rpm2cpio /tmp/rubygems-1.3.7-2.fc14.src.rpm | cpio i
585 blocks
rubygems-1.3.7-2.fc14$ mv rubygems.spec ~/rpm/SPECS/
rubygems-1.3.7-2.fc14$ mv rubygems-* ~/rpm/SOURCES/
rubygems-1.3.7-2.fc14$ cd ~/rpm/SPECS/
~/rpm/SPECS$ rpmbuild -ba rubygems.spec 
  :
~/rpm/SPECS$ 

~/RPMS/noarchの中に、以下パッケージが生成されます。

SPECS$ cd ../RPMS/noarch
noarch$ ls
rubygems-1.3.7-2.noarch.rpm
noarch$  

rubygem-i18n-0.4.2

CentOS 5には標準では搭載されてないので、Fedoraよりソースパッケージを入手しビルドします。

この手順で作成したRPMパッケージ  rubygem-i18n-0.4.2-2.noarch.rpm
RPMソースパッケージ(Fedora 14)の入手

まず、Fedoraミラーサイトのfedora/releases/14/Everything/source/SRPMS より、rubygem-i18n-0.4.2-2.fc14.src.rpm を入手します。

RPMソースパッケージの展開と配置、パッケージビルド
work$ mkdir rubygem-i18n-0.4.2-2.fc14
work$ cd rubygem-i18n-0.4.2-2.fc14
rubygem-i18n-0.4.2-2.fc14$ rpm2cpio /tmp/rubygem-i18n-0.4.2-2.fc14.src.rpm | cpio i
77 blocks
rubygem-i18n-0.4.2-2.fc14$ mv rubygem-i18n.spec ~/rpm/SPECS
rubygem-i18n-0.4.2-2.fc14$ mv i18n-0.4.2.gem ~/rpm/SOURCES
rubygem-i18n-0.4.2-2.fc14$ cd ~/rpm/SPECS/
SPECS$ rpmbuild -ba rubygem-i18n.spec
  :
SPECS$

~/RPMS/noarchの中に、以下パッケージが生成されます。

SPECS$ cd ../RPMS/noarch
noarch$ ls
rubygem-i18n-0.4.2-2.noarch.rpm
noarch$  

xerces-c-3.0.1

CentOS 5.xには、Xerces C++ ライブラリは含まれていませんが、Fedora EPELリポジトリに、xerces-c-2.7.0-7.el5.i386.rpm他が提供されています。

しかし、Xerces C++の方は2009/6/13現在、Ver.3.0.1がリリースされているので、ここではVer.3.0.1のパッケージを作成します。

まず、EPELのミラーサイトから、xerces-2.7.0-7.el5.src.rpmを入手し、Xerces C++ 3.0では、生成するバイナリ、他に違いがあるので、SPECファイルを取り出し、これをベースに修正します。

xerces-c.specの修正

まず、バージョン・リリース番号を修正します。

-Version:       2.7.0
-Release:       7%{?dist}
+Version:       3.0.1
+Release:       1%{?dist}

ソースアーカイブURLを修正します。

-Source:        http://www.apache.org/dist/xml/xerces-c/source/xerces-c-src_2_7_0.tar.gz
+Source:        http://www.apache.org/dist/xml/xerces-c/source/xerces-c-3.0.1.tar.gz

prepセクションは完全に見直しました。

-%setup -q -n xerces-c-src_2_7_0
-rm -rf doc/html/resources/.svn
-find ./doc -type f -perm 755 -exec chmod 644 {} \;
-find ./samples -type f -perm 755 -exec chmod 644 {} \;
-%{__perl} -pi.orig -e 's|(PREFIX.)/lib\b|$1/%{_lib}|g' src/xercesc/configure */Makefile.in
+%setup -q 
2.7.0では、アーカイブ中にバージョン管理用ディレクトリが混入していたり、ファイルパーミッションが好ましくない指定になっていたようです。3.0.1では、そのようなものはないので、ばっさり削除しています。また、アーカイブ名とディレクトリ名も3.0.1では標準的な命名規約に合わせてきているので、%setupでは明示的にディレクトリを指定しなくてもよくなりました。

buildセクションも修正しています。ここは変更が多いので、最終形を示します。

%build
%configure
%{__make}
2.7.0のときは、Makefile内を置換したりスクリプトを実行したりしていましたが、3.0.1ではごく標準的にconfigure/makeを実行するだけです。

installセクションも修正しています。

 %install
-%{__rm} -rf $RPM_BUILD_ROOT
-export XERCESCROOT="$PWD"
-%{__make} install -C src/xercesc DESTDIR="$RPM_BUILD_ROOT"
+%{__make} install DESTDIR=$RPM_BUILD_ROOT 

filesセクションは以下の修正となります。

 %files
 %defattr(-,root,root,-)
-%doc LICENSE.txt
-%{_libdir}/libxerces*.so.*
+%doc 
+%{_libdir}/libxerces*.so
+%{_libdir}/pkgconfig/xerces-c.pc
 
 %files devel
 %defattr(-,root,root,-)
-%{_libdir}/libxerces*.so
+%{_libdir}/libxerces*.a
 %defattr(-,root,root,-)
-%{_libdir}/libxerces*.so
+%{_libdir}/libxerces*.a
+%{_libdir}/libxerces*.la
 %{_includedir}/xercesc/
+%{_bindir}/*
 
 %files doc
 %defattr(-,root,root,-)
-%doc Readme.html LICENSE NOTICE STATUS credits.txt doc samples
+%doc CREDITS LICENSE NOTICE doc samples

global-5.7.5

gtagsを使います。globalは、Fedora には含まれていますが、EPELにはないため、今回はゼロからspecファイルを作成してRPMパッケージを作成します。

上記Webページから、Downloadを辿ってglobalのソースコードを入手します。
2009/6/14現在、global-5.7.5.tar.gzが最新版です。

ビルド手順の確認

まず、RPMパッケージ化するには、configure/make/仮ディレクトリへmake install が出来ることを確認します。

work$ tar xzf global-5.7.5.tar.gz
work$ cd global-5.7.5
global-5.7.5$ ./configure
  :
global-5.7.5$ make
  :
global-5.7.5$ make install DESTDIR=/tmp/global
  :
global-5.7.5$ tree /tmp/global
/tmp/global
`-- usr
    `-- local
        |-- bin
        |   |-- global
        :   :     :
        |   `-- htags
        `-- share
            |-- gtags
            |   |-- AUTHORS
            :   :      :
            |   |-- gtags.vim
            |   |-- icons
            |   |   |-- back.png
            :   :   :     :
            |   |   `-- top.png
            |   `-- style.css
            |-- info
            |   |-- dir
            |   `-- global.info
            `-- man
                `-- man1
                    |-- global.1
                    :    :
                    `-- htags.1

9 directories, 54 files
global-5.7.5$ 

これで、/tmp/globalの下に、usr/local/xxx と生成されました。大丈夫そうです。

global.specファイルの作成

~/rpm/SPECS/の下に、global.specを新規作成します。

global.specのイントロダクション・セクション

Name:                   global
Version:                5.7.5
Release:                1%{?dist}
Summary:                Source code tag system

Group:                  Development/Tools
License:                GPLv3, GPLv2, LGPLv2, BSD
URL:                    http://www.gnu.org/software/global/
Source0:                http://tamacom.com/global/%{name}-%{version}.tar.gz
BuildRoot:              %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
Releaseの1%{?dist}は、SPECファイルを初回作成したときは1から始めます。{%?dist}は、rpmbuildのオプションで追加文字を指定可能にする定義です。(例:el5 など)
Summaryは、tarボールのREADMEから説明文中の要約句を抜粋しました。
Groupは、/usr/share/doc/rpm-4.4.2.3/GROUPSの中に列挙されているものから最も近そうなものを選び記述しました。
Licenseは、tarボールのLICENSEから読み取りました。globalの場合、global自身はGPLv3でしたが、内部で使用している他のソフトウェアのライセンスがあるため、それらを列挙しています。
URLは、globalのプロジェクトWebページのURLを、Source0は、ダウンロードしたglobalのソースtarボールのURLを記載しました。
BuildRootは、実はEmacsでspecファイルを新規にオープンするとRPM-SPECモードの機能で自動で生成される雛形のままです。あまり気にしていませんが、rpmbuild時に使用する/var/tmp/下の一時作業用の適当な場所を記述します。

global.specのデスクリプション・セクション

%description
GNU GLOBAL is a source code tag system that works the same way across diverse
environments. It supports C, C++, Yacc, Java, PHP4 and assembly source code.
tarボールのREADMEから抜粋しました。

global.specのprepセクション

%prep
%setup -q
これも、EmacsのRPM-SPECモードで自動生成されたもので、一般的規約で作成されたtarボールであればこのままです。

global.specのbuildセクション

%build
%configure
make %{?_smp_mflags}
これも、EmacsのRPM-SPECモードで自動生成されたもので、一般的規約で作成されたtarボールであればこのままです。

global.specのinstallセクション

%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT

rm -f $RPM_BUILD_ROOT%{_infodir}/dir

# install emacs lisp package for emacs and xemacs
for f in emacs/site-lisp xemacs/site-packages/lisp; do
        install -m 755 -d $RPM_BUILD_ROOT%{_datadir}/$f
        install -m 644 gtags.el $RPM_BUILD_ROOT%{_datadir}/$f
done
前半は、EmacsのRPM-SPECモードで自動生成されたもので、一般的規約で作成されたtarボールであればこのままです。
中間のrmは、make install時に、install-infoでdirファイルへの追加が行われるが、このmake installは仮ディレクトリで実施していたので、info/dirが生成されてしまったものを削除している。make installの処理の中で、install-infoを実行してdirに内容を追記するものは、%installセクションでいったん削除し、後の%postセクションでinstall-infoを実行するように記述する。
後半のemacsパッケージのインストールは、global.elをシステムにインストールされているemacsおよびxemacsのパッケージディレクトリにコピーするものです。

global.specのcleanセクション

%clean
rm -rf $RPM_BUILD_ROOT
これも、EmacsのRPM-SPECモードで自動生成されたもので、一般的規約で作成されたtarボールであればこのままです。

global.specのpostセクション

%post
/sbin/install-info %{_infodir}/%{name}.info %{_infodir}/dir 2>/dev/null || :

global.specのpreunセクション

%preun
if [ $1 -eq 0 ]; then
   /sbin/install-info --delete %{_infodir}/%{name}.info %{_infodir}/dir 2>/dev/null || :
fi

global.specのfilesセクション

%files
%defattr(-,root,root,-)
%doc AUTHORS COPYING COPYING.LIB FAQ LICENSE README THANKS
%{_bindir}/*
%{_infodir}/*
%{_mandir}/man*/*
%{_datadir}/gtags
%{_datadir}/emacs/site-lisp/gtags.el
%{_datadir}/xemacs/site-packages/lisp/gtags.el
ライセンスファイル等をdocとして宣言しています。
globalは、ビルド・インストールによって生成されるディレクトリをそれぞれ指定しています。

global.specのchangelogセクション

%changelog
* Sun Jun 14 2009 Toru Takahashi <torutk@gmail.com> - 5.7.5-1
- First RHEL5 release
とりあえず作成年月日、作成者氏名とメールアドレス、内容を記述します。

GraphicsMagick

Qt 4.5.1のRPMビルドをする際、fedora 12のsrc.rpmを持ってきたらBuildRequiredに指定されていたGraphicsMagickです。ImageMagickから分派したものとのことです。

上記プロジェクトのURLから、Downloadを辿り、linuxを辿り、src.rpmをダウンロードします。

rpmbuildコマンドでリビルドします。

$ rpmbuild --rebuild GraphicsMagick-1.3.5-1.src.rpm
   :
$ cd ~/rpm/RPMS/i386
$ ls GraphicsMagick*
GraphicsMagick-1.3.5-1.i386.rpm
GraphicsMagick-c++-1.3.5-1.i386.rpm
GraphicsMagick-c++-devel-1.3.5-1.i386.rpm
GraphicsMagick-debuginfo-1.3.5-1.i386.rpm
GraphicsMagick-devel-1.3.5-1.i386.rpm
GraphicsMagick-perl-1.3.5-1.i386.rpm
$

GUI

VLゴシックフォント

Vine Linuxの標準フォントとして有名なVLゴシックフォントをCentOSでも利用したいと思い、RPMパッケージを作成します。

既にFedora用のRPMパッケージがあるので、これをそのままインストールしても問題ないようです。(ディレクトリ構成等は一緒のようです)

一応、Fedora用のソースRPMパッケージを入手し、中に含まれるspecファイル等を抜き出して、自前のRPMパッケージを作成した手順を以下に記述します。

VLゴシックフォントの入手
VLGothic-20081029.tar.bz2
Fedora用ソースRPMパッケージの入手

VLGothic-fonts-20080908-1.fc10.src.rpmを入手し、中身を抜き出します。

work$ rpm2cpio VLGothic-fonts-20080908-1.fc10.src.rpm | cpio -i
   :
work$ ls
59-VLGothic-monospace.conf
59-VLGothic-proportional.conf
VLGothic-fonts.spec
  :
work$

59-VLGothic-* を、~/rpm/SOURCESにコピーします。
VLGothic-fonts.specを、~/rpm/SPECSにコピーします。

VLGothic-fonts.specを修正します。VLゴシックフォントの最新バージョンに名前を変更します。

! Version: 20081029
RPMパッケージの作成
~$ cd rpm/SPECS
SPECS$ rpmbuild -ba VLGothic-fonts.spec
    :
SPECS$ ls ~/rpm/RPMS/noarch
VLGothic-fonts-20081029-1.noarch.rpm
VLGothic-fonts-proportional-20081029-1.noarch.rpm
SPECS$ ls ~/rpm/SRPMS
VLGothic-fonts-20081029-1.src.rpm
SPECS$

Emacs関係

CentOS 5のemacsは、少々古いemacs-21です。他のXアプリケーションとコピー&ペーストができない等制約があるので、emacs 22を入れることにします。

emacs 22

Fedora 9では、emacs-22.2が標準となっていて、RPMバイナリパッケージが存在します。このRPMバイナリパッケージをそのままインストールする方法でもいけそうですが、CentOS 5とFedora9とでは、コンパイラのバージョン等の差異があるので、念のためRPMソースパッケージを入手してCentOS上でビルドします。

~$ rpmbuild --rebuild emacs-22.2-5.fc9.src.rpm
    :
~$

以下パッケージが生成されます。

emacs-22.2-5.i386.rpm            emacs-el-22.2-5.i386.rpm
emacs-common-22.2-5.i386.rpm     emacs-nox-22.2-5.i386.rpm
emacs-debuginfo-22.2-5.i386.rpm

apel 10.7

Fedora 10には、apel 10.7がRPMパッケージとして用意されています。Fedora 10 はEmacs 22なので、emacs-22用にapelを使用するので、バイナリを利用します。

~$ rpm -ivh apel-10.7-2.fc10.noarch.rpm
    :
~$

/usr/share/emacs/site-lisp/apel下にインストールされます。

ddskk 12

Fedora 10には、ddskk 12.2.0がRPMパッケージとして用意されています。

~$ rpm -ivh ddskk-12.2.0-11.fc7.noarch.rpm
    :
~$

/usr/share/emacs/site-lisp/ddskk下にEmacs Lisp群がインストールされます。

/usr/share/skkの下にチュートリアル(skk.tut)がインストールされます。

skk辞書

Fedora 10には、skkdic 20080904がRPMパッケージとして用意されています。

~$ rpm -ivh skkdic-20080904-1.fc10.noarch.rpm
    :
~$

/usr/share/skkの下に辞書ファイル(SKK-JISYO.L他)がインストールされます。

データベース関係

sqlite 3.6.11

sqliteのWebサイトから、ソースtarballをダウンロードします。

Fedora 10からsqlite-3.5.9-4.fc10.src.rpmを入手します。この中からsqlite.specファイルを抜き出し、必要な修正を加えてrpmbuildすることにします。

sqlite.spec修正事項

パッケージ作成Tips

Fedora用ソースRPMの流用

Fedoraは、Red Hat Enterprise Linuxの元となっているディストリビューションなので、比較的パッケージ構成が近く、SPECファイルの流用もむずかしくありません。しかしながら、違いもあり、その違いを知っておくことはSPECファイル流用のポイントの一つです。

パッケージ構成の違い

Fedora用パッケージとRHEL/CentOSでは、パッケージ構成が多少異なるものがあります。BuildRequiresなどに記述されている場合、修正が必要になります。

Fedoraパッケージ RHEL/CentOSパッケージ 備考
perl-devel
perl
perlに開発用ファイルも含んでいる
xorg-x11-devel
libX11-devel
名前の違い
xorg-x11-Mesa-libGL
mesa-libGL
名前の違い
xorg-x11-Mesa-libGLU
mesa-libGLU
名前の違い

MD5 チェックサムが適合しません

新しめのFedora(fc12のupdateあたりからか)用のソースRPMをCentOS 5でrpmbuild --rebuildしようとすると、以下のエラーが出ることがあります。

work$ rpmbuild --rebuild rubygems-1.3.7-2.fc14.src.rpm 
rubygems-1.3.7-2.fc14.src.rpm をインストール中です。
警告: InstallSourcePackage: ヘッダ V3 RSA/SHA256 signature: NOKEY, key ID 97a1071f
警告: ユーザ mockbuild は存在しません - root を使用します
警告: グループ mockbuild は存在しません - root を使用します
エラー: アーカイブの伸長に失敗: ファイル /home/torutk/rpm/SOURCES/rubygems-1.3.7-noarch-gemdir.patch;4d7dd329: cpio: MD5 チェックサムが適合しません。
エラー: rubygems-1.3.7-2.fc14.src.rpm をインストールできません。
work$

そこで、src.rpmをcpio経由で展開し、SPECS、SOURCESに必要なファイルをコピーして、通常のrpmbuildを行います。

パッケージ名にディストリビューション名(el5など)を含めたい

CentOS(というかRed Hat Enterprise Linux)のパッケージには、el5 が含まれています。

subversion-1.4.2-2.el5.i386.rpm

subversion.specファイルには、バージョン番号関係の定義が以下のように記述されています。

Name: subversion
Version: 1.4.2
Release: 2%{?dist}

しかし、普通にrpmbuildすると、マクロdistは未定義なので、生成されるパッケージは、subversion-1.4.2-2.i386.rpmとなります。

そこで、rpmbuildのコマンドラインオプションでdistを定義します。

$ rpmbuild -ba --define 'dist .el5' subversion.spec

パッケージ配布サイト

パッケージ集

# wget http://dag.wieers.com/packages/RPM-PGP-KEY.dag.txt
# rpm --import RPM-GPG-KEY.dag.txt
# rpm -Uhv http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm
/etc/yum.repos.d/Alcance.repoを新規作成
[AL-cance]
name=Alcance Libre RedHat Enterprise 5 Repository
baseurl=http://www.alcancelibre.org/al/el/5/
gpgkey=http://www.alcancelibre.org/al/AL-RPM-KEY
コマンド実行
# wget http://www.alcancelibre.org/al/AL-RPM-KEY
# rpm --import AL-RPM-KEY
# 

個別パッケージ

パッケージの検索

異なるサイトに同じ名前の(別バージョンの)RPMパッケージを置く場合

バージョンの認識等の問題で置いたはずのパッケージが見えなくなる

例えば、Epochが設定されたパッケージとEpochが未設定のパッケージは、Epochが未設定のときは0として扱われ、Epochに1以上が設定されたパッケージより「古い」と認識されます。

この場合、Epoch未設定のパッケージがyumで一覧しても出てこない、といった問題が生じます。

Epochを設定して再度パッケージを作り直したり、名前を変えたりするのがいいのですが、それが出来ないときの回避策として、yumコマンドのオプション --disablerepo=* --enablerepo=xxx のように、特定のサイトだけ指定します。

# yum --disablerepo=* --enablerepo=torutk install doxygen
# 

GUIツールのパッケージマネージャ([アプリケーション]メニュー→[ソフトウェアの追加/削除]で起動)を使う場合、[一覧]タブではyum同様に隠されてしまいますが、[検索]タブでパッケージ名を指定すると、同名の別バージョンのファイルも複数検索結果の表示に表われるので、選択してインストールすることが出来ます。