pslaboが試したことの記録

はてなダイヤリーからはてなブログに引っ越してきました

この日記は現在実行中の減量記録を含む個人的なメモとして始めましたが、最近はコンピュータやガジェット、ハック、セキュリティネタのほうがメインになっております。

はてなダイヤリー時代はカテゴリ分けが適当だったのですが、これはそのうち直します。


BIND 9.2.3 on Cobalt RaQ3 (work in progress)

Cobalt RaQ3 という古い機材の BIND を 9.2.3 に入れ替える必要が出てきたので、そのメモ。

rpm -bb したときに最終段階で "File not found by glob" というエラーが出るので、原因と対策方法を調査中。

  1. bind-9.2.1-1.7x.2.src.rpm (Red Hat Linux 7.3 Updates Sources) を入手。
  2. bind-9.2.3.tar.gz を入手。
  3. rpm -ivh bind-9.2.1-1.7x.2.src.rpm を実行。
  4. cd /usr/src/redhat/SPECS を実行し、次の内容でパッチする。


    --- bind.spec.orig Wed JOL 17 05:48:12 2002
    +++ bind.spec Wed Mar 3 17:12:22 2004
    @@ -1,23 +1,23 @@
    %define server 1
    Summary: A DNS (Domain Name System) server.
    Name: bind
    License: BSD-like
    Group: System Environment/Daemons
    -Source: ftp://ftp.isc.org/isc/bind9/%{version}/bind-%{version}.tar.bz2
    +Source: ftp://ftp.isc.org/isc/bind9/%{version}/bind-%{version}.tar.gz
    Source1: bind-manpages.tar.bz2
    Source2: named.sysconfig
    Source3: named.init
    Source4: named.logrotate
    Source5: keygen.c
    -Patch: bind-9.2.0rc3-varrun.patch
    -Patch1: bind-9.2.0-key.patch
    -Patch2: bind-9.2.1-overflow.patch
    +#Patch: bind-9.2.0rc3-varrun.patch
    +#Patch1: bind-9.2.0-key.patch
    +#Patch2: bind-9.2.1-overflow.patch
    Url: http://www.isc.org/products/BIND/
    Buildroot: %{_tmppath}/%{name}-root
    -Version: 9.2.1
    -Release: 1.7x.2
    +Version: 9.2.3
    +Release: 1

    BuildRequires: openssl-devel gcc glibc-devel

    Requires(pre,preun): shadow-utils
    Requires(post,preun): chkconfig
    @@ -55,13 +55,13 @@
    required for DNS (Domain Name System) development for BIND versions
    9.x.x.

    %prep
    %setup -q -n %{name}-%{version}
    -%patch -p1 -b .varrun
    -%patch1 -p1 -b .key
    -%patch2 -p1 -b .sec
    +#%patch -p1 -b .varrun
    +#%patch1 -p1 -b .key
    +#%patch2 -p1 -b .sec

    %build
    LTVERSION=`libtool --version |awk '{ print $4 }' |sed -e "s/\.//;s/\..*//g"`
    if [ "$LTVERSION" -lt 14 ]; then
    export LTCONFIG_VERSION=1.3.5

  5. rpm -bb bind.spec を実行し、バイナリパッケージを作る。*1
  6. この手順どおりだと、次の3つのエラーが発生してパッケージの作成に失敗する。


    エラー: File not found by glob: /var/tmp/bind-root/usr/lib/libisccc.so.*

    エラー: File not found by glob: /var/tmp/bind-root/usr/lib/libisccfg.so.*

    エラー: File not found by glob: /var/tmp/bind-root/usr/lib/libdns.so.*

    そこで bind.spec からの次の内容をコメントアウトする。


    #%{_libdir}/libisccc.so.*

    #%{_libdir}/libisccfg.so.*

    #%{_libdir}/libisc.so.*

    これで rpm -bb をやり直してみたら次のパッケージができました。

    • rw-rw-r-- 1 root root 1939092 Mar 4 19:02 bind-9.2.3-1.i386.rpm
    • rw-rw-r-- 1 root root 382883 Mar 4 19:02 bind-devel-9.2.3-1.i386.rpm
    • rw-rw-r-- 1 root root 204911 Mar 4 19:02 bind-utils-9.2.3-1.i386.rpm

    しかし実際にインストールしてみようとすると、こうなります。



    # rpm -Fvh bind*9.2.3*.rpm
    error: failed dependencies:
    libdns.so.11 is needed by bind-9.2.3-1
    libisccc.so.0 is needed by bind-9.2.3-1
    libisccfg.so.0 is needed by bind-9.2.3-1
    libdns.so.11 is needed by bind-utils-9.2.3-1
    安易に spec ファイルから消してはいけなかった模様。そこでビルドのログから原因を調べることにします。(nohup でログを残してます)

*1:この際にいくつかのパッケージのバージョンが古いと言われるハズですので、必要に応じて依存パッケージのバージョンを上げること。