CentOS-4.1 bootstrapper.
[nethome.git] / src / centos-bootstrap
1 #! /bin/bash
2 # Bootstrap CentOS-4.1
3 # $Id$
4
5
6 RPMS_URL_BASE=http://rsync.atworks.co.jp/centos/4.1/os/i386/CentOS/RPMS
7
8
9 if test $# != 1;then echo >&2 "Syntax: $0 <target-root-directory(DELETED!)>";exit 1;fi
10 ROOT="$1"
11 if test "${ROOT#/}" = "$ROOT";then echo >&2 "Absolute pathname required: $ROOT";exit 1;fi
12
13 cd /
14 umount $ROOT/proc
15 set -ex
16
17 KEY=/tmp/centos-bootstrap-$$-key
18 rm -rf $KEY
19 trap 'rm -f $KEY' EXIT
20 mkdir $KEY
21 cd $KEY
22 # wget(1) due to: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=167483
23 wget -q -O - $RPMS_URL_BASE/centos-release-4-1.2.i386.rpm | rpm2cpio | cpio -id
24
25 rm -rf $ROOT
26 mkdir -p $ROOT/{etc,dev}
27 awk '/^[ \t]*[^#]/ { if ($2 == "/") { print; }}' </etc/fstab >$ROOT/etc/fstab
28 cp -a /dev/{null,urandom,random} `awk '/^[ \t]*[^#]/ { if ($2 == "/") { print $1; }}' </etc/fstab` $ROOT/dev/
29 rpm --root=$ROOT --initdb
30 rpm --root=$ROOT --import $KEY/usr/share/doc/centos-release-4/RPM-GPG-KEY
31 rm -rf $KEY
32 cd $RPMS
33 # For rpm(1) http:// downloads:
34 mkdir -p $ROOT/var/tmp
35 RPM=rpm
36 while read -r key val;do
37         if test -n "$val";then RPM="$RPM $key $val";fi
38         done <<EOH
39 --httpproxy `echo $http_proxy|sed -n 's#^[^/]*//\([^:/]*\).*$#\1#p'`
40 --httpport  `echo $http_proxy|sed -n 's#^[^/]*//[^:/]*:\([^/]*\).*$#\1#p'`
41  --ftpproxy `echo  $ftp_proxy|sed -n 's#^[^/]*//\([^:/]*\).*$#\1#p'`
42  --ftpport  `echo  $ftp_proxy|sed -n 's#^[^/]*//[^:/]*:\([^/]*\).*$#\1#p'`
43 EOH
44
45 # rpm(8)
46 $RPM --root=$ROOT -i `set +x;while read -r line;do echo $RPMS_URL_BASE/$line;done <<EOH
47 rpm-4.3.3-9_nonptl.i386.rpm
48 bash-3.0-19.2.i386.rpm
49 glibc-2.3.4-2.9.i686.rpm
50 beecrypt-3.1.0-6.i386.rpm
51 mktemp-1.5-20.i386.rpm
52 libgcc-3.4.3-22.1.i386.rpm
53 basesystem-8.0-4.noarch.rpm
54 filesystem-2.3.0-1.i386.rpm
55 setup-2.5.37-1.1.noarch.rpm
56 glibc-common-2.3.4-2.9.i386.rpm
57 popt-1.9.1-9_nonptl.i386.rpm
58 shadow-utils-4.0.3-41.1.i386.rpm
59 coreutils-5.2.1-31.1.i386.rpm
60 pam-0.77-66.5.i386.rpm
61 libselinux-1.19.1-7.i386.rpm
62 sed-4.1.2-4.i386.rpm
63 cracklib-2.7-29.i386.rpm
64 db4-4.2.52-7.1.i386.rpm
65 initscripts-7.93.13.EL-2.centos4.i386.rpm
66 kernel-2.6.9-11.EL.i686.rpm
67 sysklogd-1.4.1-26_EL.i386.rpm
68 util-linux-2.12a-16.EL4.6.i386.rpm
69 grep-2.5.1-31.i386.rpm
70 gawk-3.1.3-10.1.i386.rpm
71 libstdc++-3.4.3-22.1.i386.rpm
72 glib2-2.4.7-1.i386.rpm
73 module-init-tools-3.1-0.pre5.3.i386.rpm
74 mkinitrd-4.2.1.3-1.i386.rpm
75 net-tools-1.60-37.EL4.6.i386.rpm
76 e2fsprogs-1.35-12.1.EL4.i386.rpm
77 findutils-4.1.20-7.i386.rpm
78 ncurses-5.4-13.i386.rpm
79 ethtool-1.8-4.i386.rpm
80 tzdata-2005f-1.EL4.noarch.rpm
81 pcre-4.5-3.i386.rpm
82 gzip-1.3.3-13.i386.rpm
83 lvm2-2.01.08-1.0.RHEL4.i386.rpm
84 less-382-4.i386.rpm
85 chkconfig-1.3.13.2-1.i386.rpm
86 cpio-2.5-7.EL4.1.i386.rpm
87 device-mapper-1.01.01-1.RHEL4.i386.rpm
88 tar-1.14-4.i386.rpm
89 readline-4.3-13.i386.rpm
90 info-4.7-5.i386.rpm
91 zlib-1.2.1.2-1.i386.rpm
92 centos-release-4-1.2.i386.rpm
93 cracklib-dicts-2.7-29.i386.rpm
94 mingetty-1.07-3.i386.rpm
95 iputils-20020927-16.i386.rpm
96 rpm-libs-4.3.3-9_nonptl.i386.rpm
97 bzip2-libs-1.0.2-13.i386.rpm
98 libacl-2.2.23-5.i386.rpm
99 libtermcap-2.0.8-39.i386.rpm
100 libattr-2.4.16-3.i386.rpm
101 termcap-5.4-3.noarch.rpm
102 elfutils-libelf-0.97-5.i386.rpm
103 psmisc-21.4-4.i386.rpm
104 iproute-2.6.9-3.i386.rpm
105 procps-3.2.3-8.1.i386.rpm
106 SysVinit-2.85-34.i386.rpm
107 libsepol-1.1.1-2.i386.rpm
108 udev-039-10.8.EL4.i386.rpm
109 MAKEDEV-3.15-2.i386.rpm
110 hotplug-2004_04_01-7.5.i386.rpm
111 usbutils-0.11-6.1.i386.rpm
112 hwdata-0.146.10.EL-1.noarch.rpm
113 wget-1.9.1-17.i386.rpm
114 openssl-0.9.7a-43.2.i686.rpm
115 krb5-libs-1.3.4-12.i386.rpm
116 EOH
117 `
118
119 chroot $ROOT /bin/rpm --rebuilddb
120
121 # Do not install yum(8) just by 'rpm --root', later --rebuilddb would:
122 #       rpmdb: Program version 4.2 doesn't match environment version
123 # On direct "http" installation as CentOS-4.1 rpm-4.3.3-9_nonptl would crash on:
124 #       warning: package yum = 2.2.1-1.centos4 was already added, replacing with yum <= 2.2.1-1.centos4
125 #       ...
126 #       error: Failed dependencies:
127 #               /usr/bin/python is needed by yum-2.2.1-1.centos4.noarch
128 #               ...
129 # while with FC4 rpm-4.4.1-22 it works at least above.
130 # yum(8)
131 lines="`cat <<EOH
132 yum-2.2.1-1.centos4.noarch.rpm
133 python-2.3.4-14.1.i386.rpm
134 rpm-python-4.3.3-9_nonptl.i386.rpm
135 libxml2-python-2.6.16-6.i386.rpm
136 gmp-4.1.4-3.i386.rpm
137 libxml2-2.6.16-6.i386.rpm
138 elfutils-0.97-5.i386.rpm
139 binutils-2.15.92.0.2-13.i386.rpm
140 gdbm-1.8.0-24.i386.rpm
141 centos-yumconf-4-4.2.noarch.rpm
142 EOH
143 `"
144 chroot $ROOT /usr/bin/wget -nv `set +x;for line in $lines;do echo $RPMS_URL_BASE/$line;done`
145 chroot $ROOT /bin/rpm -i $lines
146 chroot $ROOT /bin/rm -f $lines
147
148 chroot $ROOT /usr/bin/yum -y update
149
150 # For: kernel-2.6.9-11.EL.src.rpm
151 chroot $ROOT /usr/bin/yum -y install `cat <<EOH
152 rpm-build
153 bzip2
154 m4
155 make
156 gnupg
157 kernel-utils
158 gcc
159 redhat-rpm-config
160 diffutils
161 EOH
162 `
163
164 echo OK
165 exit
166 yum-2.2.1-1.centos4.noarch.rpm
167 python-2.3.4-14.1.i386.rpm
168 rpm-python-4.3.3-9_nonptl.i386.rpm
169 libxml2-python-2.6.16-6.i386.rpm
170 gmp-4.1.4-3.i386.rpm
171 libxml2-2.6.16-6.i386.rpm
172 openssl-0.9.7a-43.2.i686.rpm
173 elfutils-0.97-5.i386.rpm
174 krb5-libs-1.3.4-12.i386.rpm
175 binutils-2.15.92.0.2-13.i386.rpm
176 gdbm-1.8.0-24.i386.rpm
177 centos-yumconf-4-4.2.noarch.rpm