Files
2024-02-19 00:21:16 -05:00

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;