coLinux で最小構成 Vine3.2 を作ろう!

世の中には coLinux インストーラというすごく便利なスクリプトがあります。ただしこれを使うとほとんど全てのRPMパッケージがインストールされてしまうので、サーバー等に使うには微妙です(インストールするだけで2GB近く使います)。幸い、インストールスクリプトを修正すればこの問題は回避できます。

いまとなっては Vine もあまり人気のないディストリビュージョンですが、CD一枚で大方のパッケージが揃ってしまう手軽さはいまだサーバーやプログラムの勉強にぴったりだと思います。自分は大学2年の頃からだからもう7年くらい使っています(笑

coLinux-installer/lib/script.0

install_rpms_vine という関数を以下のように書き換えます。このRPMリストは Vine3.2 を最小構成でインストールした直後に rpm -qa | sort で取り出したものです。

install_rpms_vine() {
	echo "##### rpm install #####"
	if [ ! -d "${MNT_NEW_DIR}/usr/bin" ] ; then
		echo "ERROR"
		exit 1
	fi
	if [ ! -d "${MNT_NEW_DIR}/${MNT_CDROM}/${DIST_DIR}/RPMS" ] ; then
		echo "ERROR"
		exit 1
	fi

	mount -t proc none ${MNT_NEW_DIR}/proc

	cat > ${MNT_NEW_DIR}/tmp/rpms << x
#! /${BASE_DIR}/usr/bin/bash
PATH=/bin:/usr/bin:/sbin:/${BASE_DIR}/bin:/${BASE_DIR}/usr/bin:/${BASE_DIR}/usr/sbin
export PATH

exec rpm -ivh --nodeps \\
x
	(cd ${MNT_NEW_DIR}/${MNT_CDROM}/${DIST_DIR}/RPMS;
		ls MAKEDEV-3.3.13-1vl3.i386.rpm\
			SysVinit-2.85-5vl2.i386.rpm\
			adjtimex-1.13-4vl2.i386.rpm\
			alternatives-0.1.10.18-0vl1.i386.rpm\
			anacron-2.3-29vl1.i386.rpm\
			apt-0.5.15.cnc.7-0vl6.1.i386.rpm\
			at-3.1.8-23vl1.i386.rpm\
			authconfig-4.6.1-1vl2.i386.rpm\
			autofs-3.1.7-42vl3.i386.rpm\
			basesystem-6.0-4vl3.noarch.rpm\
			bash-2.05b-0vl2.i386.rpm\
			bc-1.06-10vl2.i386.rpm\
			bzip2-1.0.2-0vl2.i386.rpm\
			chkconfig-1.2.17-1vl8.i386.rpm\
			console-tools-19990829-29vl3.i386.rpm\
			cpio-2.5-1vl1.i386.rpm\
			cracklib-2.7-27vl1.i386.rpm\
			cracklib-dicts-2.7-27vl1.i386.rpm\
			crontabs-1.9-2vl1.noarch.rpm\
			cups-libs-1.1.22-0vl1.i386.rpm\
			cyrus-sasl-2.1.18-0vl3.i386.rpm\
			db4-4.2.52-6vl3.1.i386.rpm\
			db40-4.0.14-15vl4.i386.rpm\
			dev-3.3.13-1vl3.i386.rpm\
			dhcpcd-1.3.22pl4-0vl1.i386.rpm\
			diffutils-2.8.1-11vl1.i386.rpm\
			dosfstools-2.8-4vl1.i386.rpm\
			e2fsprogs-1.35-0vl2.i386.rpm\
			ed-0.2-35vl1.i386.rpm\
			eject-2.0.13-3vl1.i386.rpm\
			etcskel-3.0-0vl3.noarch.rpm\
			file-4.09-0vl1.i386.rpm\
			filesystem-1.3.5-1vl2.noarch.rpm\
			fileutils-4.1-10.1vl4.i386.rpm\
			findutils-4.1.5-0vl3.i386.rpm\
			gawk-3.1.3-0vl2.i386.rpm\
			gcc-cpp-3.3.2-0vl8.i386.rpm\
			gdbm-1.8.0-20vl1.i386.rpm\
			glib-1.2.10-0vl5.i386.rpm\
			glib2-2.4.7-0vl1.i386.rpm\
			glibc-2.3.3-3vl1.2.i386.rpm\
			glibc-common-2.3.3-3vl1.2.i386.rpm\
			gmp-4.1.2-13vl1.i386.rpm\
			gnupg-1.2.6-0vl2.i386.rpm\
			gpm-1.20.1-35vl2.i386.rpm\
			grep-2.5.1-29vl1.i386.rpm\
			groff-1.17.2-0vl6.i386.rpm\
			gzip-1.3.2-2vl3.i386.rpm\
			hdparm-5.7-0vl1.i386.rpm\
			hwdata-0.123-0vl15.noarch.rpm\
			initscripts-6.51-1vl33.3.i386.rpm\
			install-info-4.7-0vl1.i386.rpm\
			iproute-2.2.4-14vl2.i386.rpm\
			iputils-20020927-13vl2.i386.rpm\
			isapnptools-1.22-2vl3.i386.rpm\
			jed-0.99.14-0vl5.i386.rpm\
			jed-common-0.99.14-0vl5.i386.rpm\
			jman_pages-0.5-20050615vl1.noarch.rpm\
			kbdconfig-1.9.8-5vl2.i386.rpm\
			kernel-2.4.31-0vl1.8.i386.rpm\
			kudzu-0.99.60-1vl8.i386.rpm\
			less-358-0vl9.i386.rpm\
			libcanna-3.6p3-0vl8.i386.rpm\
			libgcc-3.3.2-0vl8.i386.rpm\
			libjpeg-6b-21vl2.i386.rpm\
			libpng-1.2.8-0vl1.i386.rpm\
			libruby-1.8.1-0vl20.1.i386.rpm\
			libstdc++3-3.3.2-0vl8.i386.rpm\
			libtermcap-2.0.8-36vl1.i386.rpm\
			libtiff-3.5.7-6vl7.i386.rpm\
			libuser-0.51.7-7vl2.i386.rpm\
			libxml-1.8.17-0vl4.i386.rpm\
			libxml2-2.6.15-0vl1.i386.rpm\
			lilo-22.5.8-0vl1.i386.rpm\
			logrotate-3.6.8-1vl1.i386.rpm\
			losetup-2.11z-0vl1.i386.rpm\
			mailcap-2.1.14-1vl1.noarch.rpm\
			mailx-8.1.1-32vl1.i386.rpm\
			make-3.80-0vl3.i386.rpm\
			man-1.5o-0vl1.i386.rpm\
			man-pages-1.66-0vl1.noarch.rpm\
			mingetty-1.06-2vl1.i386.rpm\
			mkinitrd-3.5.23-1vl1.1.i386.rpm\
			mkkickstart-2.1-1vl2.noarch.rpm\
			mktemp-1.5-11vl2.i386.rpm\
			modutils-2.4.27-0vl1.i386.rpm\
			mount-2.11z-0vl1.i386.rpm\
			mouseconfig-4.19-1vl5.i386.rpm\
			murasaki-0.8.9-0vl2.i386.rpm\
			murasaki-usb-mount-0.5-0vl1.noarch.rpm\
			ncompress-4.2.4-31vl2.i386.rpm\
			ncurses-5.4-0vl2.i386.rpm\
			net-tools-1.60-12vl1.i386.rpm\
			newt-0.50.35-0vl3.i386.rpm\
			nkf-2.04-0vl1.i386.rpm\
			ntsysv-1.2.17-1vl8.i386.rpm\
			openssh-3.9p1-0vl1.i386.rpm\
			openssh-clients-3.9p1-0vl1.i386.rpm\
			openssh-server-3.9p1-0vl1.i386.rpm\
			openssl-0.9.7d-0vl3.1.i386.rpm\
			openssl096-0.9.6m-0vl1.i386.rpm\
			pam-0.77-38vl2.1.i386.rpm\
			passwd-0.68-8vl1.i386.rpm\
			pciutils-2.1.10-4vl1.i386.rpm\
			pcre-4.5-0vl2.i386.rpm\
			perl-5.8.2-0vl4.1.i386.rpm\
			popt-1.6.5-1vl8.i386.rpm\
			portmap-4.0-56vl1.i386.rpm\
			postfix-2.0.20-0vl5.1.i386.rpm\
			procinfo-18-9vl1.i386.rpm\
			procmail-3.22-0vl3.i386.rpm\
			procps-2.0.6-5vl6.i386.rpm\
			psmisc-21.2-4vl1.i386.rpm\
			pump-0.8.11-1vl2.i386.rpm\
			pwdb-0.62-0vl2.i386.rpm\
			python-2.3.4-0vl5.i386.rpm\
			raidtools-1.00.3-8vl2.i386.rpm\
			readline-4.3-5vl1.i386.rpm\
			reiserfsprogs-3.6.17-0vl1.i386.rpm\
			rootfiles-7.6-0vl1.noarch.rpm\
			rpm-4.0.5-1vl8.1.i386.rpm\
			ruby-1.8.1-0vl20.1.i386.rpm\
			sash-3.4-8vl3.i386.rpm\
			sed-4.1.2-0vl1.i386.rpm\
			setup-2.5.7-2vl3.noarch.rpm\
			setuptool-1.2-5vl5.i386.rpm\
			sgml-common-0.6.3-14vl2.noarch.rpm\
			sh-utils-2.0.11-9vl6.i386.rpm\
			shadow-utils-4.0.3-35vl1.1.i386.rpm\
			slang-1.4.4-0vl4.i386.rpm\
			slocate-2.7-5vl1.i386.rpm\
			stat-2.2-1vl1.i386.rpm\
			sudo-1.6.8p9-0vl1.i386.rpm\
			sysklogd-1.4.1-13vl2.i386.rpm\
			tar-1.14-0vl1.i386.rpm\
			tcp_wrappers-7.6-34vl2.i386.rpm\
			tcsh-6.12-0vl5.i386.rpm\
			termcap-11.0.1-1vl5.noarch.rpm\
			textutils-2.0.17-0vl4.i386.rpm\
			time-1.7-20vl1.i386.rpm\
			tmpwatch-2.9.0-2vl1.i386.rpm\
			unzip-5.50-5vl2.i386.rpm\
			usermode-1.70-4vl2.i386.rpm\
			utempter-0.5.3-2vl1.i386.rpm\
			util-linux-2.11z-0vl1.i386.rpm\
			vim-6.3.82-0vl0.1.i386.rpm\
			vim-common-6.3.82-0vl0.1.i386.rpm\
			vine-keyring-1.0-0vl19.noarch.rpm\
			vine-logos-1.2.1-0vl3.noarch.rpm\
			vine-release-3.2-0vl1.noarch.rpm\
			vixie-cron-3.0.1-87vl2.i386.rpm\
			vutils-1.22.4-0vl1.noarch.rpm\
			which-2.16-0vl4.i386.rpm\
			words-2-17vl1.noarch.rpm\
			xml-common-0.6.3-14vl2.noarch.rpm\
			zip-2.3-14vl2.1.i386.rpm\
			zlib-1.1.4-0vl3.i386.rpm\
		| sort | uniq -u | xargs echo ) >> ${MNT_NEW_DIR}/tmp/rpms

	cat > ${MNT_NEW_DIR}/tmp/inst.sh <<x
#! /${BASE_DIR}/usr/bin/bash
PATH=/bin:/usr/bin:/sbin:/${BASE_DIR}/bin:/${BASE_DIR}/usr/bin:/${BASE_DIR}/usr/sbin
export PATH

echo "##### RPMS INSTALL on chroot env. #####"
cd /${MNT_CDROM}/${DIST_DIR}/RPMS
rpm --initdb
rpm -ivh setup-*.rpm
sh /tmp/rpms
x

	chroot ${MNT_NEW_DIR} /${BASE_DIR}/usr/bin/bash /tmp/inst.sh

	umount ${MNT_NEW_DIR}/proc
}