debootstrapによるebi版純正base作成->ローカルリポジトリからのdebootstrap

混ぜるな危険ということで、ebi版純正なbaseを作成することにした。
baseでの配布は行われていないので、debootstrapで作成する。
混ぜた危険な環境にchrootする。debootstrapは入っている。

# dpkg -l | grep deboot
ii debootstrap 0.2.45-0.2 Bootstrap a basic Debian system

さくっと終わるつもりで実行。

# mkdir base
# cd base/
# debootstrap --arch sh4 sarge ./ http://www.si-linux.co.jp/pub/debian-sh/

提供されていないパッケージがあるというエラーに従って、パッケージを除外していくと、最終的に通るのはこうなった。

# debootstrap --arch sh4 --exclude=gcc-3.0-base,gcc-3.3-base,libstdc++3,libstdc++5,tasksel,tcpd,wget,zlib1g sarge ./ http://www.si-linux.co.jp/pub/debian-sh/

ただ、ここまで削ってしまうと、依存関係で展開そのものに失敗するようになってしまう。gcc関係は特殊なので仕方がないとして、tcpd,wget,zlib1gがないのはdebianと言うには、ちょっと問題だと思う。これは意図的にこうなっているのだろうか、それともトラブルの影響?
# 後でやったらこれらの3つはebi版で取れるようになった。なんでだろう?
 
ローカルリポジトリを作って、そこにkogiidena版から足りないものを追加する方法でとりあえずしのぐとしよう。

# mkdir -p /debs/pool/main
# mkdir -p /debs/dists/sarge/main/binary-sh4/
# mv /base/var/cache/apt/archives/* /debs/main/
# cd /debs/main/
# wget http://iohack.sourceforge.jp/kogiidena/debian26/binary-sh4/zlib/zlib1g_1.2.2-4_sh4.deb
# wget http://iohack.sourceforge.jp/kogiidena/debian26/binary-sh4/wget/wget_1.9.1-8_sh4.deb
# wget http://iohack.sourceforge.jp/kogiidena/debian26/binary-sh4/tcp-wrappers/tcpd_7.6.dbs-8_sh4.deb
# wget http://www.si-linux.co.jp/pub/debian-sh/pool/main/g/gcc-3.4/libstdc++6_3.4.3-12_sh4.deb
# wget http://www.si-linux.co.jp/pub/debian-sh/pool/main/g/gcc-3.4/gcc-3.4-base_3.4.3-12_sh4.deb
# cd /debs/
# apt-ftparchive packages main > dists/sarge/main/binary-sh4/Packages
# apt-ftparchive packages main | gzip -9 > dists/sarge/main/binary-sh4/Packages.gz

debsディレクトリにおさめることにして、ディレクトリを掘り、先ほどのdebootstrapで取得したパッケージを移動する。そこに不足しているパッケージをkodiidena版からコピーしておく。最後にパッケージデータベースを作成。
しかし、このままでは普通にパッケージ参照はできるのだけど、リリース情報が不足していて、debootstrapから使うことができない。追加する。

# apt-ftparchive \
-o APT::FTPArchive::Release::Origin="rapnzel" \
-o APT::FTPArchive::Release::Label="rapnzel Debian-sh Packages" \
-o APT::FTPArchive::Release::Architectures="sh4" \
-o APT::FTPArchive::Release::Components="main" \
-o APT::FTPArchive::Release::Description="rapnzel: Debian-sh packages for LANTANK" \
-o APT::FTPArchive::Release::Codename="sarge" \
-o APT::FTPArchive::Release::Suite="sarge" release dists/sarge > dists/sarge/main/binary-sh4/

# vi dists/sarge/main/binary-sh4/Release
Architectures: sh4
Codename: sarge
Components: main
Date: Tue, 14 Mar 2006 07:43:57 UTC
Description: rapnzel: Debian-sh packages for LANTANK
Label: rapnzel Debian-sh Packages
Origin: rapnzel
Suite: sarge


# apt-ftparchive \
-o APT::FTPArchive::Release::Origin="rapnzel" \
-o APT::FTPArchive::Release::Label="rapnzel Debian-sh Packages" \
-o APT::FTPArchive::Release::Architectures="sh4" \
-o APT::FTPArchive::Release::Components="main" \
-o APT::FTPArchive::Release::Description="rapnzel: Debian-sh packages for LANTANK" \
-o APT::FTPArchive::Release::Codename="sarge" \
-o APT::FTPArchive::Release::Suite="sarge" release dists/sarge > dists/sarge/Release

# cat dists/sarge/Release
Architectures: sh4
Codename: sarge
Components: main
Date: Tue, 14 Mar 2006 07:45:53 UTC
Description: rapnzel: Debian-sh packages for LANTANK
Label: rapnzel Debian-sh Packages
Origin: rapnzel
Suite: sarge
MD5Sum:
d41d8cd98f00b204e9800998ecf8427e 0 Release
ba88a8dd6828871468254bc192c5313a 94820 main/binary-sh4/Packages
346a1ea51b901fe0111ea166c1b29d7e 29592 main/binary-sh4/Packages.gz
8edfaf459d4a667a107d824d8c649f35 198 main/binary-sh4/Release
SHA1:
da39a3ee5e6b4b0d3255bfef95601890afd80709 0 Release
047574ba0af26f0b1e3d1376128e9043e1da95af 94820 main/binary-sh4/Packages
da401ad9bc3c6282a531bf69cbf56200f6caa6f2 29592 main/binary-sh4/Packages.gz
ac3477278e4159706921ad0be4d655a2a09a72e7 198 main/binary-sh4/Release

sarge/main/binary-sh4/Releaseの作り方がわからなかったので、dists/sarge/Releaseと同じように作ってmd5sum,SHA1の項目を削除した。きっともっといい方法があるんだと思うのだけど... このくらいなので、エディタで書いてもそんなもんだ。
これで準備完了。

# cd /base/
# debootstrap --arch sh4 --exclude=gcc-3.0-base,gcc-3.3-base,libstdc++3,libstdc++5,tasksel --include=gcc-3.4-base,libstdc++6 sarge ./ file:///debs/

ようやく通った。
chrootしてもちゃんと動くようだ。