[bind-4.9.3-P1-plus-JLE][戻る]

bind-4.9.3-P1-plusnonJLEのインストール

by miyu "miyu@akiu.gw.tohoku.ac.jp"
O. 前提
I. libresolv の入れ換え II. libc の入れ換え
O. 前提
[ 以下は、
  SunOS4.1.4 のシステムで、
  /usr/lib/shlib.etc     に 非JLE版 の shared library のソースが
  あることが前提となっています。 ]

[ JLE つきのシステムの場合は、
  HowToInstall.bind-4.9.3-P1-plus-JLE を参照してください。 ]

[ SunOS4.1.4 以外の SunOS4.1.X システムの場合には、
  基本的には、ライブラリの版番号が変わるだけだと思います。 ]

[ なお、シェアードライブラリ版では、
    _res
  が、なぜか、
    _res_shlib
  という名前になっています。
  _res を直接操作するプログラム wwfs などをコンパイルするときには、
  -D_res=_res_shlib などを指定するなどして、対処してください。 ]
I. libresolv の入れ換え
0. ソースの展開
# mkdir -p /usr/local/src
# cd /usr/local/src
[ bind-4.9.3-P1.tar.Z
  bind-4.9.3-P1.SunOS4.shpat
  を
    # ftp ftp.tohoku.ac.jp
    ftp> bin
    ftp> cd /pub/net/bind/
    ftp> get bind-4.9.3-P1.tar.Z
    ftp> get bind-4.9.3-P1.SunOS4.shpat
  以上の手順で入手する。 ]
# mkdir bind-4.9.3-P1
# chmod 775 bind-4.9.3-P1
# cd bind-4.9.3-P1
# zcat ../bind-4.9.3-P1.tar.Z | tar xvf -
# sh ../bind-4.9.3-P1.SunOS4.shpat
1. コンフィギュレーション
# cd /usr/local/src/bind-4.9.3-P1
# more INSTALL
# more README
# more OPTIONS
# make DST=sun4.dir links
# cd sun4.dir
# cd conf
# mv options.h options.h,orig
# cp options.h,orig options.h
# chmod 644 options.h
# vi options.h
  [ ふつうは変更の必要はない。 ]
# cd ..
# mv Makefile Makefile,orig
# sed <Makefile,orig >Makefile \
  -e '/^# *(sunos4.x)/,/^# (for details on shared library /s/^#\([^( ]\)/\1/'
# chmod 644 Makefile
# vi Makefile
  [ sunos4.x と指定してある場所が有効になっているのを確認する。 ]
# cd man
# mv Makefile Makefile,orig
# sed <Makefile,orig >Makefile \
  -e '/^# *(sunos4.x)/,/^$/s/^#\([^( ]\)/\1/'
# chmod 644 Makefile
# vi Makefile
  [ sunos4.x と指定してある場所が有効になっているのを確認する。 ]
# cd ..
2. コンパイルとインストール
# make >&Make.log &
# tail -f Make.log
# rm -f /tmp/bind-4.9.3-P1-backup.sh
# cat >/tmp/bind-4.9.3-P1-backup.sh <<"EOF"
backup()
{
        orig=$1; bkup=$2
        if test -f $bkup; then /bin/rm -f $orig; else /bin/mv -f $orig $bkup; fi
}
backup /usr/lib/libresolv.a        /usr/lib/libresolv_orig.a
backup /usr/include/arpa/inet.h    /usr/include/arpa/inet_orig.h
backup /usr/include/arpa/nameser.h /usr/include/arpa/nameser_orig.h
backup /usr/include/netdb.h        /usr/include/netdb_orig.h
backup /usr/include/resolv.h       /usr/include/resolv_orig.h
backup /usr/etc/in.named           /usr/etc/in.named_orig
backup /usr/etc/in.named-xfer      /usr/etc/in.named-xfer_orig
backup /usr/etc/nslookup           /usr/etc/nslookup_orig
backup /usr/share/man/man8/in.named.8c \
       /usr/share/man/man8/in.named_orig.8c
backup /usr/share/man/man8/nslookup.8c \
       /usr/share/man/man8/nslookup_orig.8c
backup /usr/share/man/man3/gethostbyname.3n \
       /usr/share/man/man3/gethostbyname_orig.3n
backup /usr/share/man/man3/resolver.3 \
       /usr/share/man/man3/resolver_orig.3
backup /usr/share/man/man3/getnetent.3n \
       /usr/share/man/man3/getnetent_orig.3n
"EOF"
# sh /tmp/bind-4.9.3-P1-backup.sh
# make install >&Install.log &
# tail -f Install.log
3. テスト
# ps ax | grep in.named
# kill -KILL <in.namedのPID>
# cd /
# /usr/etc/in.named
# /usr/bin/nslookup
  [ 127.0.0.1 や tohoku.ac.jp. などを調べてみる。 ]
4. 不要なファイルの消去
# cd /usr/local/src/bind-4.9.3-P1/sun4.dir
# make clean

# cd /usr/local/src
# rm -f bind-4.9.3-P1.tar.Z \
        bind-4.9.3-P1.SunOS4.shpat
II. libc の入れ換え
0. ソースの展開
# cd /usr/local/src
[ bind-4.9.3-P1-plus.SunOS4.shpat
  を
    # ftp ftp.tohoku.ac.jp
    ftp> bin
    ftp> cd /pub/net/bind/
    ftp> get bind-4.9.3-P1-plus.SunOS4.shpat
  以上の手順で入手する。 ]
# cd bind-4.9.3-P1
# make DST=sun4-plus.dir links
# cd sun4-plus.dir
# sh ../../bind-4.9.3-P1-plus.SunOS4.shpat
1. コンフィギュレーション
# cd /usr/local/src/bind-4.9.3-P1/sun4-plus.dir
# more ../INSTALL
# more ../README
# more ../OPTIONS
# cd conf
# mv options.h options.h,orig
# cp options.h,orig options.h
# chmod 644 options.h
# vi options.h
  [ ふつうは変更の必要はない。 ]
# cd ..
# mv Makefile Makefile,orig
# sed <Makefile,orig >Makefile \
  -e '/^# *(sunos4.x)/,/^$/{' \
  -e '/^# *(sunos4.x)/,/^# (for details on shared library /s/^#\([^( ]\)/\1/' \
  -e '/^#SHRES = /s/#//' \
  -e '/^# -- if you use Sun'\''s cc$/,/^$/s/^#\([^( ]\)/\1/' \
  -e '}'
# chmod 644 Makefile
# vi Makefile
  [ sunos4.x と指定してある場所が有効になっているのを確認する。 ]
# cd man
# mv Makefile Makefile,orig
# sed <Makefile,orig >Makefile \
  -e '/^# *(sunos4.x)/,/^$/s/^#\([^( ]\)/\1/'
# chmod 644 Makefile
# vi Makefile
  [ sunos4.x と指定してある場所が有効になっているのを確認する。 ]
# cd ..

2. コンパイルとインストール
# make >&Make.log &
# tail -f Make.log
# ln -s `pwd` /usr/lib/shlib.etc/BIND
3. shlib.etc にパッチをあてる
# cd /usr/lib/shlib.etc
# mv awkfile awkfile,orig
# sed <awkfile,orig >awkfile \
  -e '8s?^.{?NF >=4 \&\& $3 < 100 \&\& $5 ~ /^[0-9]+$/ {?'
# chown root.staff awkfile
# chmod 644 awkfile
# mv Makefile Makefile,orig
# sed <Makefile,orig >Makefile \
  -e '/^OBJSORT=/s?objsort?./&?' \
  -e '/^.ld -assert pure-text /s/$/ -ldl/'
# chown root.staff Makefile
# chmod 644 Makefile
4. 静的ライブラリの入れ換え
4.0 オリジナルのバックアップ
# mv /usr/lib/libc.a /usr/lib/libc_orig.a
# mv /usr/5lib/libc.a /usr/5lib/libc_orig.a

4.1 静的ライブラリの作成
# cd /usr/lib/shlib.etc
# mkdir libc_plus
# cd libc_plus
# ar x /usr/lib/libc_orig.a
# rm __.SYMDEF
# mv rpc_dtablesize. rpc_dtablesize.o
# mv rpc_commondata. rpc_commondata.o
# mv xccs.multibyte. xccs.multibyte.o
# mkdir BIND
# cd BIND
# ar x ../../BIND/res/libresolv_plus.a
# rm __.SYMDEF
# rm -f /tmp/dummy_funcs.list
# nm *.o | \
  sed -n -e '/_unneeded__/s/^.* ___\([a-z][a-z]*\)_unneeded__$/\1.o/p' \
         -e '/___bindcompat_/s/^.* ___bindcompat_\([a-z][a-z]*\)$/\1.o/p' \
  >/tmp/dummy_funcs.list
# sh -c 'for f in `cat /tmp/dummy_funcs.list`; do mv $f $f-; done'
# cd ..
# mv -f BIND/*.o BIND/*.o- .
# rmdir BIND
# ar cru ../libc.a *.o
# ranlib ../libc.a

# cd /usr/lib/shlib.etc
# mkdir libcs5_plus
# cd libcs5_plus
# ar x /usr/5lib/libc_orig.a
# rm __.SYMDEF
# mv rpc_dtablesize. rpc_dtablesize.o
# mv rpc_commondata. rpc_commondata.o
# mv xccs.multibyte. xccs.multibyte.o
# mkdir BIND
# cd BIND
# ar x ../../BIND/res/libresolv_plus.a
# rm __.SYMDEF
# rm -f /tmp/dummy_funcs.list
# nm *.o | \
  sed -n -e '/_unneeded__/s/^.* ___\([a-z][a-z]*\)_unneeded__$/\1.o/p' \
         -e '/___bindcompat_/s/^.* ___bindcompat_\([a-z][a-z]*\)$/\1.o/p' \
  >/tmp/dummy_funcs.list
# sh -c 'for f in `cat /tmp/dummy_funcs.list`; do mv $f $f-; done'
# cd ..
# mv -f BIND/*.o BIND/*.o- .
# rmdir BIND
# ar cru ../libcs5.a *.o
# ranlib ../libcs5.a

4.2 静的ライブラリのインストール
# cd /usr/lib/shlib.etc
# install -c -m 0444 -o root -g staff libc.a   /usr/lib/libc.a
# install -c -m 0444 -o root -g staff libcs5.a /usr/5lib/libc.a
# ranlib -t /usr/lib/libc.a
# ranlib -t /usr/5lib/libc.a
4.3 作業ファイルの消去
# cd /usr/lib/shlib.etc
# rm -f libc.a libcs5.a
# rm -rf libc_plus libcs5_plus
5. 動的ライブラリの入れ換え
5.1 動的ライブラリの作成
# cd /usr/lib/shlib.etc
# rm -rf tmp

# cd /usr/lib/shlib.etc
# mkdir tmp
# cd tmp
# ar x ../libc_pic.a
# rm __.SYMDEF
# mv rpc_dtablesize. rpc_dtablesize.o
# mv rpc_commondata. rpc_commondata.o
# mv xccs.multibyte. xccs.multibyte.o
# mkdir BIND
# cd BIND
# ar x ../../BIND/shres/sunos/libresolv_plus_pic.a
# rm __.SYMDEF
# rm -f /tmp/dummy_funcs.list
# nm *.o | \
  sed -n -e '/_unneeded__/s/^.* ___\([a-z][a-z]*\)_unneeded__$/\1.o/p' \
         -e '/___bindcompat_/s/^.* ___bindcompat_\([a-z][a-z]*\)$/\1.o/p' \
  >/tmp/dummy_funcs.list
# sh -c 'for f in `cat /tmp/dummy_funcs.list`; do mv $f $f-; done'
# cd ..
# mv -f BIND/*.o BIND/*.o- .
# rmdir BIND
# rm gethostent.o
# cd ..
# make libc.so
# mv tmp libc_plus.so

# cd /usr/lib/shlib.etc
# mkdir tmp
# cd tmp
# ar x ../libcs5_pic.a
# rm __.SYMDEF
# mv rpc_dtablesize. rpc_dtablesize.o
# mv rpc_commondata. rpc_commondata.o
# mv xccs.multibyte. xccs.multibyte.o
# mkdir BIND
# cd BIND
# ar x ../../BIND/shres/sunos/libresolv_plus_pic.a
# rm __.SYMDEF
# rm -f /tmp/dummy_funcs.list
# nm *.o | \
  sed -n -e '/_unneeded__/s/^.* ___\([a-z][a-z]*\)_unneeded__$/\1.o/p' \
         -e '/___bindcompat_/s/^.* ___bindcompat_\([a-z][a-z]*\)$/\1.o/p' \
  >/tmp/dummy_funcs.list
# sh -c 'for f in `cat /tmp/dummy_funcs.list`; do mv $f $f-; done'
# cd ..
# mv -f BIND/*.o BIND/*.o- .
# rmdir BIND
# rm gethostent.o
# cd ..
# make libcs5.so
# mv tmp libcs5_plus.so
5.2 動的ライブラリのテスト
# setenv LD_LIBRARY_PATH /usr/lib/shlib.etc
# ldd /usr/bin/date
# trace /usr/bin/date
# ldd /usr/ucb/finger
# trace /usr/ucb/finger
# unsetenv LD_LIBRARY_PATH

5.4 動的ライブラリのインストール
# set x=1

# cd /usr/lib/shlib.etc
# install -c -m 0755 -o root -g staff libc.so.1.9.$x /usr/lib/libc.so19$x
# install -c -m 0644 -o root -g staff /usr/lib/libc.sa.1.9 \
                                      /usr/lib/libc.sa19$x
# install -c -m 0755 -o root -g staff libc.so.2.9.$x /usr/5lib/libc.so29$x
# install -c -m 0644 -o root -g staff /usr/5lib/libc.sa.2.9 \
                                      /usr/5lib/libc.sa29$x

# mv /usr/lib/libc.so19$x  /usr/lib/libc.so.1.9.$x
# mv /usr/lib/libc.sa19$x  /usr/lib/libc.sa.1.9.$x
# mv /usr/5lib/libc.so29$x /usr/5lib/libc.so.2.9.$x
# mv /usr/5lib/libc.sa29$x /usr/5lib/libc.sa.2.9.$x

# ranlib -t /usr/lib/libc*
# ranlib -t /usr/5lib/libc*
  [ not an archive: … といったエラーメッセージが、
    すべての libc.so* ファイルに対して出力されるが、無視する。 ]
# ldconfig

# unset x
5.5 作業ファイルの消去
# cd /usr/lib/shlib.etc
# rm -f TMP_FILE libc.so.*
# rm -rf libc_plus.so libcs5_plus.so
6. 不要なファイルの消去
# cd /usr/local/src/bind-4.9.3-P1/sun4-plus.dir
# make clean

# rm -f /usr/lib/shlib.etc/BIND

# cd /usr/local/src
# rm -f bind-4.9.3-P1-plus.SunOS4.shpat
7. host.conf の作成
# cat >/etc/host.conf <<EOF
order nis,bind,hosts
multi on
reorder off
;trim your.domain.name
EOF