| #!/bin/sh | |
| # | |
| # The `multicd' package was initially written by Heiko Schlittermann | |
| # <heiko@lotte.sax.de> based on builtin access methods written by Ian | |
| # Jackson <ian@chiark.greenend.org.uk>. The final packaging as well as | |
| # cleanups were made by Martin Schulze <joey@infodrom.north.de> who also | |
| # put this package together for the slink release (Debian GNU/Linux | |
| # 2.1). | |
| # Copyright © 1995-1998 Ian Jackson <ian@chiark.greenend.org.uk> | |
| # Copyright © 1998 Heiko Schlittermann <heiko@lotte.sax.de> | |
| # | |
| # This program is free software; you can redistribute it and/or modify | |
| # it under the terms of the GNU General Public License as published by | |
| # the Free Software Foundation; version 2 dated June, 1991. | |
| # | |
| # This program is distributed in the hope that it will be useful, | |
| # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| # GNU General Public License for more details. | |
| # | |
| # You should have received a copy of the GNU General Public License | |
| # along with this program. If not, see <http://www.gnu.org/licenses/>. | |
| set -e | |
| vardir="$1" | |
| method=$2 | |
| option=$3 | |
| test -d "$vardir/methods/$method" || mkdir "$vardir/methods/$method" | |
| cd "$vardir/methods/$method" | |
| tp=/tmp/ddm$$ | |
| iarch=`dpkg --print-architecture` | |
| dist=stable | |
| xit=1 | |
| trap ' | |
| rm -f $tp.? | |
| if [ -n "$umount" ] | |
| then | |
| umount "$umount" >/dev/null 2>&1 | |
| fi | |
| exit $xit | |
| ' 0 | |
| if ls -d "$tp.?" >/dev/null 2>&1 | |
| then | |
| rm $tp.? | |
| fi | |
| #debug() { echo "DEBUG: $@"; } | |
| debug() { true; } | |
| ismulti() { debug $1 $2; test -e "$1/.disk/info" || test -e "$1$2/.disk/info"; } | |
| # 1/ mountpoint | |
| # 2/ hierarchy | |
| getdisklabel () { | |
| debug "$1" "$2" | |
| if [ -f $1/.disk/info ] | |
| then | |
| echo -n `head -1 "$1/.disk/info"` | |
| else | |
| if [ -f $1$2/.disk/info ] | |
| then | |
| echo -n `head -1 "$1$2/.disk/info"` | |
| else | |
| echo -n 'Non-Debian disc' | |
| fi | |
| fi | |
| } | |
| yesno () { | |
| while true | |
| do | |
| echo -n "$2 [$1] " | |
| read response | |
| if [ -z "$response" ] | |
| then | |
| response="$1" | |
| fi | |
| case "$response" in | |
| [Nn]*) yesno=no ; return ;; | |
| [Yy]*) yesno=yes ; return ;; | |
| esac | |
| done | |
| } | |
| getblockdev () { | |
| mountpoint="$vardir/methods/mnt" | |
| if [ -z "$defaultdevice" ] | |
| then | |
| defaultdevice="$newdefaultdevice" | |
| elif [ "$defaultdevice" != "$newdefaultdevice" ] | |
| then | |
| echo \ | |
| "Last time you specified installation from $defaultdevice." | |
| fi | |
| promptstring="$1" | |
| while [ -z "$blockdevice" ] | |
| do | |
| echo -n "$promptstring [$defaultdevice]: " | |
| read response | |
| if [ -z "$response" ] | |
| then | |
| response="$defaultdevice" | |
| fi | |
| if [ ! -b "$response" ] | |
| then | |
| echo "$response is not a block device - will try as loopback."; | |
| loop=",loop" | |
| fi | |
| tryblockdevice="$response" | |
| if [ $option = multi_cd ] | |
| then | |
| fstype=iso9660 | |
| elif [ $option = harddisk2 ] | |
| then | |
| blockbase="`echo \"$tryblockdevice\" | sed -e 's/[0-9]\{1,\}$//'`" | |
| set +e | |
| printf 'p\nq\n' | fdisk "$blockbase" 2>/dev/null >$tp.f | |
| set -e | |
| proposeddevice="$tryblockdevice" perl -ne ' | |
| next unless /^ *Device +Boot +Begin +Start +End +Blocks +Id +System *$/i .. !/\S/; | |
| next unless s:^/\S+:: && $& eq $ENV{"proposeddevice"}; | |
| next unless s/^ +(\* +)?\d+ +\d+ +\d+ +\d+\+? +//; | |
| next unless m/^([0-9a-f]{1,2}) /i; | |
| %types= ( "1","msdos", "4","msdos", "6","msdos", "7","hpfs", "80","minix", | |
| "81","minix", "83","ext2" ); | |
| print $types{$1}; exit(0); ' <$tp.f >$tp.m | |
| defaultfstype="`cat $tp.m`" | |
| if [ -n "$defaultfstype" ] | |
| then | |
| cat <<END | |
| The partition table for $blockbase claims that $tryblockdevice | |
| contains filesystem type $defaultfstype. | |
| END | |
| if ! grep " $defaultfstype$" /proc/filesystems >/dev/null | |
| then | |
| echo \ | |
| "Your kernel does not appear to support that filesystem type." | |
| defaultfstype="" | |
| fi | |
| fi | |
| echo -n "Supported filesystems: " | |
| sed -e 's/^.* / /' /proc/filesystems | tr '\n' ' ' | |
| echo -n " | |
| Enter filesystem type (for $tryblockdevice) [$defaultfstype]: " | |
| read fstype | |
| if [ -z "$fstype" ] | |
| then | |
| fstype="$defaultfstype" | |
| fi | |
| fi | |
| umount="$mountpoint" | |
| if mount -rt "$fstype" -o nosuid,nodev$loop "$tryblockdevice" "$mountpoint" | |
| then | |
| echo | |
| blockdevice="$tryblockdevice" | |
| else | |
| umount="" | |
| echo \ | |
| "Unable to mount $tryblockdevice on $mountpoint, type $fstype." | |
| fi | |
| done | |
| } | |
| outputparam () { | |
| echo "$2" | sed -e "s/'/'\\\\''/; s/^/$1='/; s/$/'/" >&3 | |
| } | |
| ## MAIN | |
| intrkey="`stty -a | sed -n 's/.*intr = \([^;]*\);.*/\1/p'`" | |
| echo " | |
| If you make a mistake, use the interrupt key ($intrkey) to abort. | |
| " | |
| # State variables, `best first' | |
| # {main,ctb,nf,nonus,nonusctb,nonusnf,lcl}_{packages,binary} | |
| # Empty before we've found them or if they're not available, | |
| # set to the relevant bit under mountpoint otherwise. | |
| # hierbase | |
| # A directory containing a Debian FTP site mirror tree. | |
| # mountpoint | |
| # The mountpoint for the filesystem containing the stuff | |
| # empty or unset if we don't know yet, or if we haven't mounted anything; | |
| # may also be empty if `directory' was set. | |
| # blockdevice | |
| # The actual block device to mount. | |
| # fstype | |
| # The filesystem type to use. | |
| # defaultdevice | |
| # The default block device to mount. | |
| p_usedevel=no | |
| if [ -f shvar.$option ] | |
| then | |
| . ./shvar.$option | |
| defaultdevice="$p_blockdev" | |
| defaultnfsserver="$p_nfsserver" | |
| defaultnfsrempath="$p_nfsrempath" | |
| usedevel="$p_usedevel" | |
| fi | |
| if [ $option = multi_cd ] | |
| then | |
| mount >$tp.m | |
| sed -n 's/ ([^)]*)$//; s/^[^ ]* on //; s/ type iso9660$//p' <$tp.m >$tp.l | |
| ncdroms=`wc -l <$tp.l` | |
| if [ $ncdroms -gt 1 ] | |
| then | |
| response="" | |
| while [ -z "$response" ] | |
| do | |
| echo \ | |
| 'Several CD-ROMs (or other ISO9660 filesystems) are mounted:' | |
| egrep 'type iso9660 \([^)]*\)$' <$tp.m | nl | |
| echo -n \ | |
| 'Is it any of these ? Type a number, or `n'\'' for none. ' | |
| read response | |
| response="`echo \"$response\" | sed -e 's/[ ]*$//'`" | |
| if expr "$response" : '[0-9][0-9]*$' >/dev/null && \ | |
| [ $response -ge 1 -a $response -le $ncdroms ] | |
| then | |
| mountpoint="`sed -n $response'p' <$tp.l`" | |
| echo | |
| elif expr "$response" : '[Nn]' >/dev/null | |
| then | |
| mountpoint="" | |
| else | |
| response="" | |
| fi | |
| done | |
| elif [ $ncdroms = 1 ] | |
| then | |
| mountpoint="`cat $tp.l`" | |
| perl -ne 'print if s/ type iso9660 \([^)]*\)$// && s/ on .*$//;' \ | |
| <$tp.m >$tp.d | |
| blockdevice="`cat $tp.d`" | |
| yesno yes \ | |
| "I see a CD-ROM: $blockdevice, mounted on $mountpoint. Is it the right one ?" | |
| if [ $yesno = no ] | |
| then | |
| echo 'Unmounting it ...' | |
| umount="$mountpoint" | |
| while true | |
| do | |
| echo -n \ | |
| 'Please insert the right disc, and hit return: ' | |
| read response | |
| if mount -rt iso9660 -o nosuid,nodev \ | |
| "$blockdevice" "$mountpoint" | |
| then | |
| echo | |
| break | |
| fi | |
| done | |
| fi | |
| fi | |
| if [ -z "$mountpoint" ] | |
| then | |
| if [ -b /dev/cdrom ] | |
| then | |
| echo \ | |
| 'I see that /dev/cdrom exists and is a block device.' | |
| newdefaultdevice=/dev/cdrom | |
| fi | |
| getblockdev 'Insert the CD-ROM and enter the block device name' | |
| fi | |
| fi | |
| if [ $option = multi_nfs ] | |
| then | |
| mountpoint="$vardir/methods/mnt" | |
| while [ -z "$nfsserver" ] | |
| do | |
| echo -n \ | |
| "What is the name of the NFS server ? [$defaultnfsserver] " | |
| read response | |
| if [ -z "$response" -a -n "$defaultnfsserver" ] | |
| then | |
| response="$defaultnfsserver" | |
| fi | |
| if [ -z "$response" ]; then continue; fi | |
| if [ -x /usr/bin/rpcinfo ] | |
| then | |
| if rpcinfo -u "$response" mountd >/dev/null | |
| then | |
| nfsserver="$response" | |
| else | |
| echo "$response appears not to be an NFS server." | |
| fi | |
| elif [ -x /bin/ping ] | |
| then | |
| if ping -q -c 1 "$response" | grep -q ', 1 packets received' | |
| then | |
| nfsserver="$response" | |
| else | |
| echo "$response appears to be down or nonexistent." | |
| fi | |
| else | |
| echo \ | |
| "(I can't check that now because there is no /usr/bin/rpcinfo or /bin/ping.)" | |
| nfsserver="$response" | |
| fi | |
| done | |
| while [ -z "$nfsrempath" ] | |
| do | |
| echo -n " | |
| What is the pathname on the NFS server of the filesystem with | |
| the Debian files ? [$defaultnfsrempath] " | |
| read response | |
| if [ -z "$response" -a -n "$defaultnfsrempath" ] | |
| then | |
| response="$defaultnfsrempath" | |
| else | |
| response="`echo \"$response\" | sed -e 's:/$::; s:^/*:/:'`" | |
| fi | |
| umount="$mountpoint" | |
| if mount -rt nfs -o nosuid,nodev "$nfsserver:$response" "$mountpoint" | |
| then | |
| echo | |
| nfsrempath="$response" | |
| else | |
| umount="" | |
| echo \ | |
| "Unable to mount NFS filesystem $nfsserver:$response." | |
| fi | |
| done | |
| nfs="$nfsserver:$nfsrempath" | |
| fi | |
| if [ $option = harddisk2 ] | |
| then | |
| set +e | |
| printf 'p\nq\n' | fdisk /dev/hda 2>/dev/null >$tp.f | |
| if [ $? != 0 ] | |
| then | |
| printf 'p\nq\n' | fdisk /dev/sda 2>/dev/null >$tp.f | |
| fi | |
| set -e | |
| perl -ne ' | |
| next unless /^ *Device +Boot +Begin +Start +End +Blocks +Id +System *$/i .. !/\S/; | |
| next unless / [146] +DOS \d+-bit \S+$/; | |
| next unless m:^/\S+:; | |
| print $&; ' <$tp.f >$tp.d | |
| newdefaultdevice="`cat $tp.d`" | |
| echo " | |
| I need to know which disk partition contains the distribution files; | |
| disk partitions are specified by the block device name in Linux." | |
| if [ -n "$newdefaultdevice" ] | |
| then | |
| echo \ | |
| "By the way, $newdefaultdevice looks like a DOS partition." | |
| fi | |
| getblockdev "Enter the partition's block device name" | |
| fi | |
| if [ -n "$mountpoint" ] | |
| then | |
| # We must have $mountpoint | |
| if [ $option = multi_cd ] | |
| then | |
| echo \ | |
| 'All directory names should be entered relative to the root of the CD-ROM. | |
| ' | |
| elif [ $option = multi_nfs ] | |
| then | |
| echo \ | |
| "All directory names should be entered relative to the root of the NFS | |
| filesystem, ie relative to $nfsrempath on the server. | |
| " | |
| else | |
| echo \ | |
| "All directory names should be entered relative to the root of the | |
| $fstype filesystem on $blockdevice. | |
| " | |
| fi | |
| fi | |
| # now try to get the users idea where the debian | |
| # hierarchy start below the mointpoint | |
| debug "mountpoint: $mountpoint" | |
| while true | |
| do | |
| if ismulti "${mountpoint}" "${hierbase}"; then | |
| multi=yes | |
| fi | |
| if [ $option = multi_cd ] | |
| then | |
| echo \ | |
| "I would like to know where on the CD-ROM the top level of the Debian | |
| distribution is - this will usually contain the \`dists' directory. | |
| If the CD-ROM is badly organized and doesn't have a straightforward copy of | |
| the distribution you may answer \`none' and we'll go through the parts | |
| I need individually." | |
| else | |
| echo \ | |
| "In order to make it easy for me to find the relevant files I'd ideally | |
| like to install from a straightforward copy of the Debian distribution. | |
| To use this I'll need to know where the top level of that copy of the | |
| distribution is - this directory usually contains the Packages-Master file. | |
| If you do not have a straightforward copy of the distribution available | |
| just answer \`none' and we'll go through the parts I need individually." | |
| fi | |
| defhierbase=none | |
| if [ -n "$p_hierbase" ]; then | |
| if [ -d "$mountpoint/$p_hierbase/dists/$dist/main/binary-$iarch" \ | |
| -o -n "$multi" ]; then | |
| echo "Last time you said \`$p_hierbase', and that looks plausible." | |
| defhierbase="$p_hierbase" | |
| else | |
| echo " | |
| Last time you said \`$p_hierbase', but that doesn't look plausible, | |
| since \`$p_hierbase/dists/$dist/main/binary-$iarch' doesn't seem to exist. | |
| And I can't get the impression that you're using a multi-CD set." | |
| fi | |
| fi | |
| # at this point defhierbase is set if it looks plausible | |
| # if `none' was entered, we assume a CD with a debian/ directory | |
| if [ none = "$defhierbase" -a -d "$mountpoint/debian/dists/$dist/main/binary-$iarch" ] | |
| then | |
| echo "\`/debian' exists and looks plausible, so that's the default." | |
| defhierbase=/debian | |
| fi | |
| echo -n "Distribution top level ? [$defhierbase] " | |
| read response | |
| if [ -z "$response" ]; then response="$defhierbase"; fi | |
| if [ none = "$response" ]; then | |
| hierbase="" | |
| break | |
| elif ismulti "$mountpoint" "$response" && [ -z "$multi" ]; then | |
| multi=yes | |
| fi | |
| if ! [ -d "$mountpoint/$response/dists/$dist/main/binary-$iarch" \ | |
| -o -n "$multi" ]; then | |
| echo \ | |
| "Neither $response/dists/$dist/main/binary-$iarch does not exist, | |
| nor are you using a multi-CD set" | |
| break | |
| fi | |
| hierbase="`echo \"$response\" | sed -e 's:/$::; s:^/*:/:; s:/\+:/:g;'`" | |
| debug "hierbase: [$hierbase]" | |
| if [ -n "$multi" ]; then | |
| disklabel=`getdisklabel "$mountpoint" "/$response"` | |
| echo "Ok, this is disc" | |
| echo " $disklabel" | |
| #echo "Updating multi CD contents file cache ..." | |
| #multi_contentsfile="${mountpoint}/${response}/.disk/contents.gz" | |
| #zcat "$multi_contentsfile" > disk-contents.$option | |
| fi | |
| break; | |
| done | |
| distribution=$dist | |
| if [ -n "$hierbase" ] | |
| then | |
| if [ -d "$mountpoint/$hierbase/dists/unstable/binary-$iarch" ] | |
| then | |
| echo \ | |
| ' | |
| Both a stable released distribution and a work-in-progress | |
| development tree are available for installation. Would you like to | |
| use the unreleased development tree (this is only recommended for | |
| experts who like to live dangerously and want to help with testing) ?' | |
| yesno "$p_usedevel" 'Use unreleased development distribution ?' | |
| usedevel="$yesno" | |
| if [ "$usedevel" = yes ] | |
| then | |
| distribution=development | |
| fi | |
| else | |
| usedevel=no | |
| fi | |
| echo | |
| fi | |
| case "$hierbase" in | |
| /* ) ;; | |
| '' ) ;; | |
| * ) hierbase="/$hierbase" ;; | |
| esac | |
| check_binary () { | |
| # args: area-in-messages directory | |
| debug "check_binary($@)" | |
| if [ ! -d "${mountpoint}$2" -a -z "$multi" ] | |
| then | |
| echo "\`$2' does not exist." | |
| return | |
| fi | |
| # In this special case it is ok for a sub-distribution to not contain any | |
| # .deb files. Each CD should contain all Packages.cd files but doesn't | |
| # need to contain the .deb files. | |
| # | |
| # if ! { find -L "$mountpoint$2" -name '*.deb' -print \ | |
| # | head -1 | grep . ; } >/dev/null 2>&1 && [ -z "$multi" ]; | |
| # then | |
| # echo "\`$2' does not contain any *.deb packages." | |
| # return | |
| # fi | |
| this_binary="$2" | |
| echo -n "Using \`$this_binary' as $1 binary dir" | |
| if [ -n "$multi" ]; then | |
| this_disk=`getdisklabel ${mountpoint} "/$hierbase"` | |
| echo " from disc" | |
| echo " \`$this_disk'" | |
| else | |
| echo "" | |
| fi | |
| } | |
| find_area () { | |
| # args: area-in-messages area-in-vars subdirectory-in-hier | |
| # last-time-binary last-time-packages | |
| debug "find_area($@)" | |
| this_binary='' | |
| this_packages='' | |
| this_disk='' | |
| if [ -n "$hierbase" ] | |
| then | |
| check_binary $1 `echo "$hierbase/dists/$3/$1/binary-$iarch" | sed 's:/\+:/:g'` | |
| debug "THIS_BINARY $this_binary" | |
| fi | |
| if [ $option = multi_cd -a $2 = nf -a -z "$this_binary" ] | |
| then | |
| echo ' | |
| Note: most CD-ROM distributions of Debian do not include programs | |
| available in the `non-free'\'' directory of the distribution site. | |
| This is because these programs have copyrights that prevent | |
| distribution for profit on a CD-ROM - ie they are not free software. | |
| If you wish to install these programs you'\''ll have to get them from an | |
| alternative source.' | |
| fi | |
| while [ -z "$this_binary" ] | |
| do | |
| defaultbinary="$4" | |
| echo " | |
| Which directory contains the *.deb packages from the $1 distribution | |
| area (this directory is named \`$3/binary' on the distribution site) ? | |
| Say \`none' if this area is not available." | |
| if [ $2 != main -a -z "$defaultbinary" ] | |
| then | |
| defaultbinary=none | |
| fi | |
| echo -n \ | |
| "Enter _$1_ binary dir. [$4] | |
| ? " | |
| read response | |
| if [ -z "$response" -a -n "$defaultbinary" ] | |
| then | |
| response="$defaultbinary" | |
| fi | |
| if [ none = "$response" ] | |
| then | |
| break | |
| fi | |
| case "$response" in | |
| '' | none) continue ;; | |
| esac | |
| check_binary $1 "`echo \"$response\" | sed -e 's:/$::; s:^/*:/:'`" | |
| done | |
| if [ -n "$this_binary" ] | |
| then | |
| if [ "$multi" = "yes" ]; then | |
| for f in Packages.cd.gz packages.cd.gz Packages.cd packages.cd | |
| do | |
| if [ -f "$mountpoint/$this_binary/$f" ] | |
| then | |
| this_packages="$this_binary/$f" | |
| echo "Using \`$this_packages' for $1." | |
| break | |
| fi | |
| done | |
| else | |
| if [ -f "${mountpoint}${hierbase}/.disk/packages/$1/Packages.gz" ]; then | |
| this_packages=`echo "${hierbase}/.disk/packages/$1/Packages.gz"|sed 's:/\+:/:g'` | |
| echo "Using \`${this_packages}' for $1." | |
| fi | |
| fi | |
| while [ -z "$this_packages" ] | |
| do | |
| echo -n " | |
| I can't find the $1 \`Packages.cd' file. The information in the | |
| \`Packages.cd' file is important for package selection during new | |
| installations, and is very useful for upgrades. | |
| If you overlooked it when downloading you should do get it now and | |
| return to this installation procedure when you have done so: you will | |
| find one Packages.cd file and one Packages.cd.gz file -- either will do -- | |
| in the \`binary' subdirectory of each area on the FTP sites and | |
| CD-ROMs. Alternatively (and this will be rather slow) I can scan the | |
| packages in the distribution area - say \`scan' if you want me to do so. | |
| You need a separate Packages.cd file from each of the distribution areas | |
| you wish to install. | |
| Where is the _$1_ \`Packages.cd' file (if none is available, say \`none') | |
| [$5] | |
| ? " | |
| read response | |
| if [ -z "$response" -a -n "$5" ] | |
| then | |
| response="$5" | |
| fi | |
| case "$response" in | |
| '') break ;; | |
| none) break ;; | |
| scan) this_packages=scan ;; | |
| /*) this_packages="$response" ;; | |
| *) this_packages="/$response" ;; | |
| esac | |
| done | |
| fi | |
| eval $2'_binary="$this_binary"' | |
| eval $2'_packages="$this_packages"' | |
| eval $2'_disk="$this_disk"' | |
| } | |
| find_area main main "$distribution" "$p_main_binary" "$p_main_packages" | |
| find_area contrib ctb "$distribution" "$p_ctb_binary" "$p_ctb_packages" | |
| find_area non-free nf "$distribution" "$p_nf_binary" "$p_nf_packages" | |
| find_area non-US/main nonus "$distribution" "$p_nonus_binary" "$p_nonus_packages" | |
| find_area non-US/contrib nonusctb "$distribution" "$p_nonusctb_binary" "$p_nonusctb_packages" | |
| find_area non-US/non-free nonusnf "$distribution" "$p_nonusnf_binary" "$p_nonusnf_packages" | |
| find_area local lcl local "$p_lcl_binary" "$p_lcl_packages" | |
| echo -n ' | |
| Hit RETURN to continue. ' | |
| read response | |
| exec 3>shvar.$option.new | |
| outputparam p_blockdev "$blockdevice" | |
| outputparam p_fstype "$fstype" | |
| outputparam p_mountpoint "$mountpoint" | |
| outputparam p_nfsserver "$nfsserver" | |
| outputparam p_nfsrempath "$nfsrempath" | |
| outputparam p_nfs "$nfs" | |
| outputparam p_hierbase "$hierbase" | |
| outputparam p_usedevel "$usedevel" | |
| outputparam p_main_packages "$main_packages" | |
| outputparam p_main_binary "$main_binary" | |
| outputparam p_main_disk "$main_disk" | |
| outputparam p_ctb_packages "$ctb_packages" | |
| outputparam p_ctb_binary "$ctb_binary" | |
| outputparam p_ctb_disk "$ctb_disk" | |
| outputparam p_nf_packages "$nf_packages" | |
| outputparam p_nf_binary "$nf_binary" | |
| outputparam p_nf_disk "$nf_disk" | |
| outputparam p_nonus_binary "$nonus_binary" | |
| outputparam p_nonus_packages "$nonus_packages" | |
| outputparam p_nonus_disk "$nonus_disk" | |
| outputparam p_nonusctb_binary "$nonusctb_binary" | |
| outputparam p_nonusctb_packages "$nonusctb_packages" | |
| outputparam p_nonusctb_disk "$nonusctb_disk" | |
| outputparam p_nonusnf_binary "$nonusnf_binary" | |
| outputparam p_nonusnf_packages "$nonusnf_packages" | |
| outputparam p_nonusnf_disk "$nonusnf_disk" | |
| outputparam p_lcl_packages "$lcl_packages" | |
| outputparam p_lcl_binary "$lcl_binary" | |
| outputparam p_multi "$multi" | |
| outputparam p_multi_contentsfile "$multi_contentsfile" | |
| mv shvar.$option.new shvar.$option | |
| xit=0 | |
| # vim:ts=4:sw=4:aw:ai: |