217 lines
4.7 KiB
Plaintext
Executable File
217 lines
4.7 KiB
Plaintext
Executable File
#
|
|
# Installation of packages from floppy
|
|
# requires: tar, sed, basename, compress/zcat, mount and umount.
|
|
# copywrite Softlanding Software, 1992: Distribute and use freely.
|
|
|
|
INSTROOT=/
|
|
INSTDEV=/dev/fd0
|
|
|
|
while [ 0 ]; do
|
|
if [ $# -gt 1 -a "$1" = "-instdev" ]; then
|
|
INSTDEV=$2;
|
|
shift 2;
|
|
continue;
|
|
elif [ $# -gt 1 -a "$1" = "-instroot" ]; then
|
|
INSTROOT=$2;
|
|
shift 2;
|
|
continue;
|
|
else
|
|
break;
|
|
fi
|
|
done;
|
|
|
|
INSTDIR=$INSTROOT/install/installed
|
|
#INSTTEST=/usr2/dist
|
|
MNTDIR=/user
|
|
|
|
function MountDisk() {
|
|
declare -i MountStat
|
|
if [ "$INSTTEST" != "" ]; then
|
|
test -d $INSTTEST;
|
|
MountStat=$?
|
|
return $MountStat;
|
|
fi
|
|
for j in 1 2 3; do
|
|
echo -n "Insert disk $1 into the floppy drive then hit enter, or q to quit"
|
|
read ans;
|
|
if [ "$ans" = "q" ]; then
|
|
exit 1;
|
|
fi;
|
|
mount $INSTDEV $MNTDIR >& /dev/null
|
|
MountStat=$?
|
|
if [ $MountStat = 0 ]; then
|
|
return 0;
|
|
fi
|
|
done
|
|
exit 1
|
|
}
|
|
|
|
function UnmountDisk() {
|
|
if [ "$INSTTEST" = "" ]; then
|
|
umount $INSTDEV > /dev/null
|
|
fi;
|
|
}
|
|
|
|
function InstallPkg() {
|
|
if [ -f $1 ]; then
|
|
echo -n "installing `basename $1 .taz`..."
|
|
(cd $INSTROOT; tar -xzvf - | sed "/\/$/d" ) < $1 > $INSTDIR/`basename $1 .taz`
|
|
if [ -f /install/doinst.sh ]; then
|
|
sh /install/doinst.sh ;
|
|
rm -rf /install/doinst.sh ;
|
|
fi
|
|
echo "done"
|
|
else
|
|
echo "$1 not found"
|
|
fi;
|
|
}
|
|
|
|
function InstallDisk() {
|
|
declare -i Status;
|
|
for k in 1 2 3; do
|
|
MountDisk $1
|
|
Status=$?
|
|
if [ $Status != 0 ]; then
|
|
return 1;
|
|
fi
|
|
if [ "$INSTEST" = "" ]; then
|
|
SRCDIR=$MNTDIR
|
|
else
|
|
SRCDIR=$INSTEST/$1
|
|
fi
|
|
if [ -e $SRCDIR/disk$1 -o $1 = Disk ]; then
|
|
for FileZ in $SRCDIR/*.taz; do
|
|
if [ $1 = Disk ]; then
|
|
echo -n "Install $FileZ (y/n/q)?"
|
|
read ans;
|
|
if [ "$ans" = "Y" -o "$ans" = "y" ]; then
|
|
InstallPkg $FileZ;
|
|
elif [ "$ans" = "q" -o "$ans" = "Q" ]; then
|
|
exit 0;
|
|
fi
|
|
else
|
|
InstallPkg $FileZ;
|
|
fi
|
|
done
|
|
UnmountDisk
|
|
return 0
|
|
else
|
|
UnmountDisk
|
|
echo -n "error: you may have inserted the wrong disk, try again (y/n)?"
|
|
read ans;
|
|
if [ "$ans" = "N" -o "$ans" = "n" ]; then
|
|
return 1
|
|
fi
|
|
fi;
|
|
done
|
|
}
|
|
|
|
function RemovePkg() {
|
|
if [ -f $INSTDIR/$1 ]; then
|
|
(cd $INSTROOT; xargs /bin/rm -f ) < $INSTDIR/$1
|
|
rm $INSTDIR/$1
|
|
else
|
|
echo "error: unknown package $1"
|
|
fi
|
|
}
|
|
|
|
function PrintUsage() {
|
|
echo "usage: sysinstall -all * install everything: base + X11"
|
|
echo " sysinstall -base * install full base: no X11"
|
|
echo " sysinstall -mini * install a minimal base: ~3 Meg"
|
|
echo " sysinstall -rest * install the rest of the base"
|
|
echo " sysinstall -X11 * install just X11"
|
|
echo " sysinstall -install pkg.taz * install a specific pkg file"
|
|
echo " sysinstall -remove pkg * uninstall a pkg"
|
|
echo " sysinstall -extract pkg * collect pkg files into new pkg.taz"
|
|
echo " sysinstall -disk * install all pkgs on a disk"
|
|
echo " sysinstall -disk DISKNUM * install pkgs on disk DISKNUM"
|
|
echo " sysinstall -mount * mount floppy"
|
|
echo " sysinstall -unmount * unmount floppy"
|
|
echo " sysinstall -instdev INSTDEV * device to install from"
|
|
echo " sysinstall -instroot INSTROOT * directory to use as root"
|
|
}
|
|
|
|
function InstallX11 {
|
|
for i in 11 12 13 14 15; do
|
|
InstallDisk $i;
|
|
done
|
|
}
|
|
|
|
function InstallRest() {
|
|
for i in 5 6 7 8 9 10 2; do
|
|
InstallDisk $i;
|
|
done
|
|
}
|
|
|
|
function InstallMini() {
|
|
for i in 3 4; do
|
|
InstallDisk $i;
|
|
done
|
|
}
|
|
|
|
function InstallBase() {
|
|
InstallMini;
|
|
InstallRest;
|
|
}
|
|
|
|
function InstallAll() {
|
|
InstallBase;
|
|
InstallX11;
|
|
}
|
|
|
|
function ShowInstalled() {
|
|
for i in $INSTDIR/*; do
|
|
echo "`basename $i`";
|
|
done;
|
|
}
|
|
|
|
#if [ "/" != $INSTROOT ]; then
|
|
# mount $INSTROOT &> /dev/null
|
|
# MNTSTAT=$?;
|
|
# if [ $MNTSTAT != 1 ]; then
|
|
# echo "error: $INSTROOT must have a partition mounted on it. First use:"
|
|
# echo " mount /dev/?d?? $INSTROOT"
|
|
# echo " For example: mount /dev/hda2 $INSTROOT"
|
|
# exit 1;
|
|
# fi
|
|
#fi
|
|
|
|
if [ $# = 0 ]; then
|
|
PrintUsage;
|
|
elif [ $1 = "-view" ]; then
|
|
ShowInstalled;
|
|
elif [ $1 = "-all" ]; then
|
|
InstallAll;
|
|
elif [ $1 = "-base" ]; then
|
|
InstallBase;
|
|
elif [ $1 = "-mini" ]; then
|
|
InstallMini;
|
|
elif [ $1 = "-rest" ]; then
|
|
InstallRest;
|
|
elif [ $1 = "-X11" ]; then
|
|
InstallX11;
|
|
elif [ $1 = "-remove" -a $# = 2 ]; then
|
|
RemovePkg $2
|
|
elif [ $1 = "-install" -a $# = 2 ]; then
|
|
InstallPkg $2
|
|
elif [ $1 = "-extract" -a $# = 2 ]; then
|
|
if [ -f $INSTDIR/$2 ]; then
|
|
(cd $INSTROOT; tar -czf - -T $INSTDIR/$2 ) > $2.taz
|
|
else
|
|
echo "$2 not found";
|
|
fi;
|
|
elif [ $1 = "-disk" ]; then
|
|
if [ $# = 1 ] ; then
|
|
InstallDisk Disk
|
|
else
|
|
InstallDisk $2
|
|
fi
|
|
elif [ $1 = "-mount ]; then
|
|
MountDisk;
|
|
elif [ $1 = "-unmount ]; then
|
|
UnmountDisk;
|
|
else
|
|
PrintUsage;
|
|
fi;
|