bash-3.2 をインストールテストするために、chroot環境を作る。
下準備から。 まず、bash本体がリンクしているファイルのパッケージを探す。
$ ldd /bin/bash linux-gate.so.1 => (0x3ffff000) libtermcap.so.2 => /lib/libtermcap.so.2 (0x40020000) libdl.so.2 => /lib/libdl.so.2 (0x40024000) libc.so.6 => /lib/libc.so.6 (0x40028000) /lib/ld-linux.so.2 (0x40000000)
それぞれのパッケージ調べる。
$ rpm -qf /lib/libtermcap.so.2 libtermcap-2.0.8-43m $ rpm -qf /lib/libc.so.6 glibc-2.5.90-1m (この結果はtrunkのもの)
それぞれの依存パッケージを調べる。
$ rpm -q --requires libtermcap /sbin/ldconfig /sbin/ldconfig libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.1.3) libc.so.6(GLIBC_2.4) libtermcap.so.2 rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rtld(GNU_HASH) termcap $ rpm -q --requires glibc rpmlib(VersionedDependencies) <= 3.0.3-1 glibc-common = 2.5.90-1m basesystem libgcc /usr/sbin/glibc_post_upgrade.i686 /sbin/ldconfig rpmlib(PartialHardlinkSets) <= 4.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rpmlib(CompressedFileNames) <= 3.0.4-1 $ rpm -q --requires bash /bin/bash /bin/sh /bin/sh /bin/sh config(bash) = 3.1-1m libc.so.6 libc.so.6(GLIBC_2.0) libc.so.6(GLIBC_2.1) libc.so.6(GLIBC_2.2) libc.so.6(GLIBC_2.3) libc.so.6(GLIBC_2.3.4) libc.so.6(GLIBC_2.4) libdl.so.2 libdl.so.2(GLIBC_2.0) libdl.so.2(GLIBC_2.1) libtermcap libtermcap.so.2 mktemp rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 rtld(GNU_HASH)
bash, glibc, termcap, mktemp (, rpm) こんなもんかな?
mkdir /tmp/bash rpm --root=tmp/bash -ivh bash* libtermcap* glibc* coreutils* chroot /tmp/bash /bin/bash
これでどうや?
念の為screenの中で実行する。(ダメならkillできるように)
で、やってみた結果、かなり見積りが甘かった。
結局インストールする必要があったパッケージは以下。
ちなみに、容量は上記のセットで155MB程度。
あと chroot 後は何もほとんどできない。
できるのは pwd と cd と echo * くらい。
もちろん、bash の補完でTAB key 押せば使えるコマンドは出てくるけどね。
coreutilsは依存が深いから面倒で入れなかった。