[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[debian-devel:13114] Re: Chroot woody setup in 15 minutes
- From: Taketoshi Sano <kgh12351@xxxxxxxxxxx>
- Subject: [debian-devel:13114] Re: Chroot woody setup in 15 minutes
- Date: Thu, 19 Oct 2000 11:57:00 +0900
- X-dispatcher: imput version 991025(IM133)
- X-fingerprint: DA 00 13 8C 49 BB 60 BE A4 54 3D AF 2E CE 28 DD
- X-ml-info: If you have a question, send e-mail with the body "help" (without quotes) to the address debian-devel-ctl@debian.or.jp; help=<mailto:debian-devel-ctl@debian.or.jp?body=help>
- X-ml-name: debian-devel
- X-mlserver: fml [fml 3.0pl#17]; post only (only members can post)
- Message-id: <20001019094842B.kgh12351@xxxxxxxxxxxxxxxxxxxx>
- X-mail-count: 13114
- X-mailer: Mew version 1.94.2 on Emacs 20.7 / Mule 4.0 (HANANOEN)
佐野@浜松です。
今朝、ひさしぶりに debian-devel@Org を web から眺めていて、
以下のメールに気がつきました。
Title Re: Anyone willing to NMU lbreakout?
Current URL http://lists.debian.org/debian-devel-0010/msg01256.html
Title Chroot woody setup in 15 minutes
Current URL http://lists.debian.org/debian-devel-0010/msg01257.html
Title Re: Chroot woody setup in 15 minutes
Current URL http://lists.debian.org/debian-devel-0010/msg01270.html
Title Re: Chroot woody setup in 15 minutes
Current URL http://lists.debian.org/debian-devel-0010/msg01282.html
Title Re: Chroot woody setup in 15 minutes
Current URL http://lists.debian.org/debian-devel-0010/msg01273.html
簡単に言うと、XFree86 4.0.1 の実験パッケージを main の woody 環境に
入れてしまった人が、 pure woody な環境でパッケージを build できないから
誰か NMU してくれ、とリクエストしたのに対して、Joey Hess が clean woody な
環境を chroot で構築できるよ、という話を出して、Ben Gertzfield がその手順を
紹介したものです。
| Joey is right. Doing a chroot woody setup really does only take
| about 15 minutes. Here's some rough notes on what I had to do
| to set one up on my potato box; I did GIMP builds there with no
| problems.
|
| 1) download base2_2.tgz
| 2) as root, untar in safe place (homedir, /usr/local/woody, whatever)
| 3) as root, chroot /usr/local/woody /bin/sh
| 4) mount proc -t proc /proc
| 5) put name servers in /etc/resolv.conf
| 6) put the REAL machine name in /etc/hostname. run hostname -F /etc/hostname.
| Copy /etc/hosts from real machine.
| 7) edit /etc/apt/sources.list, change stable to unstable,
| comment-out security.debian.org
| 8) use *dselect* to Update and install build-essential.. removing tetex packages
|
| Sorry these aren't more detailed, but I hope they help.
で、それについてさらに Frank Belew が
| Skip dselect, just use ``apt-get install build-essential dpkg-dev''
| The reason it messes up without explicitly saying dpkg-dev is the
| whacked out stuff we had to do
| to perl between 5.004 and 5.005
|
| Doing it this way manages to skip all of standard, and just get that
| which is truly essential
|
| After you are done installing build-essential, exit and tar this tree up
| for multiple uses
と補足して、最後に Adam Hess が
| Once you get the chroot configured with apt, the following script is helpful
| to automate the above(allows for easy start/stop, and keeps the chroot in a
| semi-updated state with the host).
|
| ---
| #!/bin/sh -e
| if [ -e /etc/init.d/$(basename $0) ]; then
| # starting inside chroot
| hostname -F /etc/hostname
| exec /bin/sh --login
| else
| # starting outside the chroot
| dir=$(dirname $0)
| files="/etc/resolv.conf /etc/hosts /etc/hostname"
| for f in $files; do
| cp $f $dir/$f
| done
| mount proc -t proc $dir/proc
| chroot $dir /etc/init.d/$(basename $0)
| umount $dir/proc
| fi
| ---
|
| The file can be named anything, but it must exist in $chroot_base/etc/init.d/.
と chroot 環境に出入りするためのシェルスクリプトを紹介しています。
が、実は上記のスクリプトにはちょっとバグがあるみたいで、私の
環境ではうまく動きませんでした。
以下に修正したスクリプトと、補足を merge した手順を書きます。
1) base2_2.tgz を入手する。
2) root になって、 base2_2.tgz を好きな場所 (homedir, /usr/local/woody など。
私は実験用パーティション (/Test) を作って /Test/Debian/build-depends に
入れました) に展開する。(tar -xvzpf base2_2.tgz)
3) root で chroot <installed base tree> /bin/sh を実行
4) mount proc -t proc /proc を実行
5) ネームサーバー (DNS サーバー) を /etc/resolv.conf に設定
6) 適切なマシン名を /etc/hostname に設定し、 hostname -F /etc/hostname を実行。
7) /etc/apt/sources.list を編集し、stable を unstable に変更、かつ
security.debian.org をコメントアウト。
ここで、lib6 をバージョンアップする際に、一時的に DNS にアクセスできなく
なるかもしれません。なんか最近はもう IP アドレスじゃなくても大丈夫みたい
なんですが。たしか以前、FQDN でアクセスできなくて IP アドレスを設定して
回避したことがあったような。
8) apt-get update を実行した後、apt-get install build-essentail dpkg-dev を
実行。
ここで dpkg-dev を指定する理由は perl 5.004 から perl 5.005 への
移行に必要だから。(ここの訳はちょっと自信無し)
これで本当に essential な環境が構築できます。この環境を使えば
きちんと Build-Depends を指定できているかどうかを検証できるでしょう。
さらに、いったん上記の手順で環境を構築できてしまえば、以下のスクリプトで
chroot 環境へ出入りする際に必要な処理 (/proc のマウントと resolve.conf の
設定) を自動化できます。
===== BEGIN: etc/init.d/chroot-setup.sh =====
#!/bin/sh -e
if [ -e /etc/init.d/$(basename $0) ]; then
# starting inside chroot
hostname -F /etc/hostname
exec /bin/bash --login
else
# starting outside the chroot
dir=$(dirname $0)/../
# files="/etc/resolv.conf /etc/hosts /etc/hostname"
files="/etc/resolv.conf"
for f in $files; do
cp $f $dir/$(basename $f)
done
dir=$dir/../
mount proc -t proc $dir/proc
chroot $dir /etc/init.d/$(basename $0)
umount $dir/proc
fi
===== END: etc/init.d/chroot-setup.sh =====
なお私の場合は /etc/hosts と /etc/hostname は既に設定済みのものを
そのまま活用するために resolve.conf だけをコピーするようにしていますが
すべてコピーしたい場合は上記の files= のコメントアウトを付け換えて
ください。
Adam Hess のスクリプトからの修正箇所は
if [ -e /etc/init.d/$(basename $0) ]; then
# starting inside chroot
hostname -F /etc/hostname
- exec /bin/sh --login
+ exec /bin/bash --login
else
# starting outside the chroot
- dir=$(dirname $0)
+ dir=$(dirname $0)/../
- files="/etc/resolv.conf /etc/hosts /etc/hostname"
+ # files="/etc/resolv.conf /etc/hosts /etc/hostname"
+ files="/etc/resolv.conf"
for f in $files; do
- cp $f $dir/$f
+ cp $f $dir/$(basename $f)
done
+ dir=$dir/../
mount proc -t proc $dir/proc
chroot $dir /etc/init.d/$(basename $0)
umount $dir/proc
です。
以上、御参考まで。
# JP diary には、やはり既に記載済みですね。さすが。
# <http://www.debian.or.jp/diary/?2000101&to=2000101811S4#2000101811S4>
--
# (わたしのおうちは浜松市、「夜のお菓子」で有名さ。)
<kgh12351@xxxxxxxxxxx> : Taketoshi Sano (佐野 武俊)