setup 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664
  1. #!/bin/sh
  2. set -e
  3. vardir="$1"
  4. method=$2
  5. option=$3
  6. test -d "$vardir/methods/$method" || mkdir "$vardir/methods/$method"
  7. cd "$vardir/methods/$method"
  8. tp=/tmp/ddm$$
  9. iarch=`dpkg --print-installation-architecture`
  10. dist=stable
  11. xit=1
  12. trap '
  13. rm -f $tp.?
  14. if [ -n "$umount" ]
  15. then
  16. umount "$umount" >/dev/null 2>&1
  17. fi
  18. exit $xit
  19. ' 0
  20. if ls -d "$tp.?" >/dev/null 2>&1
  21. then
  22. rm $tp.?
  23. fi
  24. #debug() { echo "DEBUG: $@"; }
  25. debug() { true; }
  26. ismulti() { debug $1 $2; test -e "$1/.disk/info" || test -e "$1$2/.disk/info"; }
  27. # 1/ mountpoint
  28. # 2/ hierarchy
  29. getdisklabel () {
  30. debug "$1" "$2"
  31. if [ -f $1/.disk/info ]
  32. then
  33. echo -n `head -1 "$1/.disk/info"`
  34. else
  35. if [ -f $1$2/.disk/info ]
  36. then
  37. echo -n `head -1 "$1$2/.disk/info"`
  38. else
  39. echo -n 'Non-Debian disc'
  40. fi
  41. fi
  42. }
  43. yesno () {
  44. while true
  45. do
  46. echo -n "$2 [$1] "
  47. read response
  48. if [ -z "$response" ]
  49. then
  50. response="$1"
  51. fi
  52. case "$response" in
  53. [Nn]*) yesno=no ; return ;;
  54. [Yy]*) yesno=yes ; return ;;
  55. esac
  56. done
  57. }
  58. getblockdev () {
  59. mountpoint="$vardir/methods/mnt"
  60. if [ -z "$defaultdevice" ]
  61. then
  62. defaultdevice="$newdefaultdevice"
  63. elif [ "$defaultdevice" != "$newdefaultdevice" ]
  64. then
  65. echo \
  66. "Last time you specified installation from $defaultdevice."
  67. fi
  68. promptstring="$1"
  69. while [ -z "$blockdevice" ]
  70. do
  71. echo -n "$promptstring [$defaultdevice]: "
  72. read response
  73. if [ -z "$response" ]
  74. then
  75. response="$defaultdevice"
  76. fi
  77. if [ ! -b "$response" ]
  78. then
  79. echo "$response is not a block device - will try as loopback.";
  80. loop=",loop"
  81. fi
  82. tryblockdevice="$response"
  83. if [ $option = multi_cd ]
  84. then
  85. fstype=iso9660
  86. elif [ $option = harddisk2 ]
  87. then
  88. blockbase="`echo \"$tryblockdevice\" | sed -e 's/[0-9]\{1,\}$//'`"
  89. set +e
  90. echo -e "p\nq\n" | fdisk "$blockbase" 2>/dev/null >$tp.f
  91. set -e
  92. proposeddevice="$tryblockdevice" perl -ne '
  93. next unless /^ *Device +Boot +Begin +Start +End +Blocks +Id +System *$/i .. !/\S/;
  94. next unless s:^/\S+:: && $& eq $ENV{"proposeddevice"};
  95. next unless s/^ +(\* +)?\d+ +\d+ +\d+ +\d+\+? +//;
  96. next unless m/^([0-9a-f]{1,2}) /i;
  97. %types= ( "1","msdos", "4","msdos", "6","msdos", "7","hpfs", "80","minix",
  98. "81","minix", "83","ext2" );
  99. print $types{$1}; exit(0); ' <$tp.f >$tp.m
  100. defaultfstype="`cat $tp.m`"
  101. if [ -n "$defaultfstype" ]
  102. then
  103. cat <<END
  104. The partition table for $blockbase claims that $tryblockdevice
  105. contains filesystem type $defaultfstype.
  106. END
  107. if ! grep " $defaultfstype$" /proc/filesystems >/dev/null
  108. then
  109. echo \
  110. "Your kernel does not appear to support that filesystem type."
  111. defaultfstype=""
  112. fi
  113. fi
  114. echo -n "Supported filesystems: "
  115. sed -e 's/^.* / /' /proc/filesystems | tr '\n' ' '
  116. echo -n "
  117. Enter filesystem type (for $tryblockdevice) [$defaultfstype]: "
  118. read fstype
  119. if [ -z "$fstype" ]
  120. then
  121. fstype="$defaultfstype"
  122. fi
  123. fi
  124. umount="$mountpoint"
  125. if mount -rt "$fstype" -o nosuid,nodev$loop "$tryblockdevice" "$mountpoint"
  126. then
  127. echo
  128. blockdevice="$tryblockdevice"
  129. else
  130. umount=""
  131. echo \
  132. "Unable to mount $tryblockdevice on $mountpoint, type $fstype."
  133. fi
  134. done
  135. }
  136. outputparam () {
  137. echo "$2" | sed -e "s/'/'\\\\''/; s/^/$1='/; s/$/'/" >&3
  138. }
  139. ## MAIN
  140. intrkey="`stty -a | sed -n 's/.*intr = \([^;]*\);.*/\1/p'`"
  141. echo "
  142. If you make a mistake, use the interrupt key ($intrkey) to abort.
  143. "
  144. # State variables, `best first'
  145. # {main,ctb,nf,nonus,nonusctb,nonusnf,lcl}_{packages,binary}
  146. # Empty before we've found them or if they're not available,
  147. # set to the relevant bit under mountpoint otherwise.
  148. # hierbase
  149. # A directory containing a Debian FTP site mirror tree.
  150. # mountpoint
  151. # The mountpoint for the filesystem containing the stuff
  152. # empty or unset if we don't know yet, or if we haven't mounted anything;
  153. # may also be empty if `directory' was set.
  154. # blockdevice
  155. # The actual block device to mount.
  156. # fstype
  157. # The filesystem type to use.
  158. # defaultdevice
  159. # The default block device to mount.
  160. p_usedevel=no
  161. if [ -f shvar.$option ]
  162. then
  163. . ./shvar.$option
  164. defaultdevice="$p_blockdev"
  165. defaultnfsserver="$p_nfsserver"
  166. defaultnfsrempath="$p_nfsrempath"
  167. usedevel="$p_usedevel"
  168. fi
  169. if [ $option = multi_cd ]
  170. then
  171. mount >$tp.m
  172. sed -n 's/ ([^)]*)$//; s/^[^ ]* on //; s/ type iso9660$//p' <$tp.m >$tp.l
  173. ncdroms=`wc -l <$tp.l`
  174. if [ $ncdroms -gt 1 ]
  175. then
  176. response=""
  177. while [ -z "$response" ]
  178. do
  179. echo \
  180. 'Several CD-ROMs (or other ISO9660 filesystems) are mounted:'
  181. egrep 'type iso9660 \([^)]*\)$' <$tp.m | nl
  182. echo -n \
  183. 'Is it any of these ? Type a number, or `n'\'' for none. '
  184. read response
  185. response="`echo \"$response\" | sed -e 's/[ ]*$//'`"
  186. if expr "$response" : '[0-9][0-9]*$' >/dev/null && \
  187. [ $response -ge 1 -a $response -le $ncdroms ]
  188. then
  189. mountpoint="`sed -n $response'p' <$tp.l`"
  190. echo
  191. elif expr "$response" : '[Nn]' >/dev/null
  192. then
  193. mountpoint=""
  194. else
  195. response=""
  196. fi
  197. done
  198. elif [ $ncdroms = 1 ]
  199. then
  200. mountpoint="`cat $tp.l`"
  201. perl -ne 'print if s/ type iso9660 \([^)]*\)$// && s/ on .*$//;' \
  202. <$tp.m >$tp.d
  203. blockdevice="`cat $tp.d`"
  204. yesno yes \
  205. "I see a CD-ROM: $blockdevice, mounted on $mountpoint. Is it the right one ?"
  206. if [ $yesno = no ]
  207. then
  208. echo 'Unmounting it ...'
  209. umount="$mountpoint"
  210. while true
  211. do
  212. echo -n \
  213. 'Please insert the right disc, and hit return: '
  214. read response
  215. if mount -rt iso9660 -o nosuid,nodev \
  216. "$blockdevice" "$mountpoint"
  217. then
  218. echo
  219. break
  220. fi
  221. done
  222. fi
  223. fi
  224. if [ -z "$mountpoint" ]
  225. then
  226. if [ -b /dev/cdrom ]
  227. then
  228. echo \
  229. 'I see that /dev/cdrom exists and is a block device.'
  230. newdefaultdevice=/dev/cdrom
  231. fi
  232. getblockdev 'Insert the CD-ROM and enter the block device name'
  233. fi
  234. fi
  235. if [ $option = multi_nfs ]
  236. then
  237. mountpoint="$vardir/methods/mnt"
  238. while [ -z "$nfsserver" ]
  239. do
  240. echo -n \
  241. "What is the name of the NFS server ? [$defaultnfsserver] "
  242. read response
  243. if [ -z "$response" -a -n "$defaultnfsserver" ]
  244. then
  245. response="$defaultnfsserver"
  246. fi
  247. if [ -z "$response" ]; then continue; fi
  248. if [ -x /usr/bin/rpcinfo ]
  249. then
  250. if rpcinfo -u "$response" mountd >/dev/null
  251. then
  252. nfsserver="$response"
  253. else
  254. echo "$response appears not to be an NFS server."
  255. fi
  256. elif [ -x /bin/ping ]
  257. then
  258. if ping -q -c 1 "$response" | grep -q ', 1 packets received'
  259. then
  260. nfsserver="$response"
  261. else
  262. echo "$response appears to be down or nonexistent."
  263. fi
  264. else
  265. echo \
  266. "(I can't check that now because there is no /usr/bin/rpcinfo or /bin/ping.)"
  267. nfsserver="$response"
  268. fi
  269. done
  270. while [ -z "$nfsrempath" ]
  271. do
  272. echo -n "
  273. What is the pathname on the NFS server of the filesystem with
  274. the Debian files ? [$defaultnfsrempath] "
  275. read response
  276. if [ -z "$response" -a -n "$defaultnfsrempath" ]
  277. then
  278. response="$defaultnfsrempath"
  279. else
  280. response="`echo \"$response\" | sed -e 's:/$::; s:^/*:/:'`"
  281. fi
  282. umount="$mountpoint"
  283. if mount -rt nfs -o nosuid,nodev "$nfsserver:$response" "$mountpoint"
  284. then
  285. echo
  286. nfsrempath="$response"
  287. else
  288. umount=""
  289. echo \
  290. "Unable to mount NFS filesystem $nfsserver:$response."
  291. fi
  292. done
  293. nfs="$nfsserver:$nfsrempath"
  294. fi
  295. if [ $option = harddisk2 ]
  296. then
  297. set +e
  298. echo -e 'p\nq\n' | fdisk /dev/hda 2>/dev/null >$tp.f
  299. if [ $? != 0 ]
  300. then
  301. echo -e 'p\nq\n' | fdisk /dev/sda 2>/dev/null >$tp.f
  302. fi
  303. set -e
  304. perl -ne '
  305. next unless /^ *Device +Boot +Begin +Start +End +Blocks +Id +System *$/i .. !/\S/;
  306. next unless / [146] +DOS \d+-bit \S+$/;
  307. next unless m:^/\S+:;
  308. print $&; ' <$tp.f >$tp.d
  309. newdefaultdevice="`cat $tp.d`"
  310. echo "
  311. I need to know which disk partition contains the distribution files;
  312. disk partitions are specified by the block device name in Linux."
  313. if [ -n "$newdefaultdevice" ]
  314. then
  315. echo \
  316. "By the way, $newdefaultdevice looks like a DOS partition."
  317. fi
  318. getblockdev "Enter the partition's block device name"
  319. fi
  320. if [ -n "$mountpoint" ]
  321. then
  322. # We must have $mountpoint
  323. if [ $option = multi_cd ]
  324. then
  325. echo \
  326. 'All directory names should be entered relative to the root of the CD-ROM.
  327. '
  328. elif [ $option = multi_nfs ]
  329. then
  330. echo \
  331. "All directory names should be entered relative to the root of the NFS
  332. filesystem, ie relative to $nfsrempath on the server.
  333. "
  334. else
  335. echo \
  336. "All directory names should be entered relative to the root of the
  337. $fstype filesystem on $blockdevice.
  338. "
  339. fi
  340. fi
  341. # now try to get the users idea where the debian
  342. # hierarchy start below the mointpoint
  343. debug "mountpoint: $mountpoint"
  344. while true
  345. do
  346. if ismulti "${mountpoint}" "${hierbase}"; then
  347. multi=yes
  348. fi
  349. if [ $option = multi_cd ]
  350. then
  351. echo \
  352. "I would like to know where on the CD-ROM the top level of the Debian
  353. distribution is - this will usually contain the \`dists' directory.
  354. If the CD-ROM is badly organized and doesn't have a straightforward copy of
  355. the distribution you may answer \`none' and we'll go through the parts
  356. I need individually."
  357. else
  358. echo \
  359. "In order to make it easy for me to find the relevant files I'd ideally
  360. like to install from a straightforward copy of the Debian distribution.
  361. To use this I'll need to know where the top level of that copy of the
  362. distribution is - this directory usually contains the Packages-Master file.
  363. If you do not have a straightforward copy of the distribution available
  364. just answer \`none' and we'll go through the parts I need individually."
  365. fi
  366. defhierbase=none
  367. if [ -n "$p_hierbase" ]; then
  368. if [ -d "$mountpoint/$p_hierbase/dists/$dist/main/binary-$iarch" \
  369. -o -n "$multi" ]; then
  370. echo "Last time you said \`$p_hierbase', and that looks plausible."
  371. defhierbase="$p_hierbase"
  372. else
  373. echo "
  374. Last time you said \`$p_hierbase', but that doesn't look plausible,
  375. since \`$p_hierbase/dists/$dist/main/binary-$iarch' doesn't seem to exist.
  376. And I can't get the impression that you're using a multi-CD set."
  377. fi
  378. fi
  379. # at this point defhierbase is set if it looks plausible
  380. # if `none' was entered, we assume a CD with a debian/ directory
  381. if [ none = "$defhierbase" -a -d "$mountpoint/debian/dists/$dist/main/binary-$iarch" ]
  382. then
  383. echo "\`/debian' exists and looks plausible, so that's the default."
  384. defhierbase=/debian
  385. fi
  386. echo -n "Distribution top level ? [$defhierbase] "
  387. read response
  388. if [ -z "$response" ]; then response="$defhierbase"; fi
  389. if [ none = "$response" ]; then
  390. hierbase=""
  391. break
  392. elif ismulti "$mountpoint" "$response" && [ -z "$multi" ]; then
  393. multi=yes
  394. fi
  395. if ! [ -d "$mountpoint/$response/dists/$dist/main/binary-$iarch" \
  396. -o -n "$multi" ]; then
  397. echo \
  398. "Neither $response/dists/$dist/main/binary-$iarch does not exist,
  399. nor are you using a multi-CD set"
  400. break
  401. fi
  402. hierbase="`echo \"$response\" | sed -e 's:/$::; s:^/*:/:; s:/\+:/:g;'`"
  403. debug "hierbase: [$hierbase]"
  404. if [ -n "$multi" ]; then
  405. disklabel=`getdisklabel "$mountpoint" "/$response"`
  406. echo "Ok, this is disc"
  407. echo " $disklabel"
  408. #echo "Updating multi CD contents file cache ..."
  409. #multi_contentsfile="${mountpoint}/${response}/.disk/contents.gz"
  410. #zcat "$multi_contentsfile" > disk-contents.$option
  411. fi
  412. break;
  413. done
  414. distribution=$dist
  415. if [ -n "$hierbase" ]
  416. then
  417. if [ -d "$mountpoint/$hierbase/dists/unstable/binary-$iarch" ]
  418. then
  419. echo \
  420. '
  421. Both a stable released distribution and a work-in-progress
  422. development tree are available for installation. Would you like to
  423. use the unreleased development tree (this is only recommended for
  424. experts who like to live dangerously and want to help with testing) ?'
  425. yesno "$p_usedevel" 'Use unreleased development distribution ?'
  426. usedevel="$yesno"
  427. if [ "$usedevel" = yes ]
  428. then
  429. distribution=development
  430. fi
  431. else
  432. usedevel=no
  433. fi
  434. echo
  435. fi
  436. case "$hierbase" in
  437. /* ) ;;
  438. '' ) ;;
  439. * ) hierbase="/$hierbase" ;;
  440. esac
  441. check_binary () {
  442. # args: area-in-messages directory
  443. debug "check_binary($@)"
  444. if [ ! -d "${mountpoint}$2" -a -z "$multi" ]
  445. then
  446. echo "\`$2' does not exist."
  447. return
  448. fi
  449. # In this special case it is ok for a sub-distribution to not contain any
  450. # .deb files. Each CD should contain all Packages.cd files but doesn't
  451. # need to contain the .deb files.
  452. #
  453. # if ! { find "$mountpoint$2" -follow -name '*.deb' -print \
  454. # | head -1 | grep . ; } >/dev/null 2>&1 && [ -z "$multi" ];
  455. # then
  456. # echo "\`$2' does not contain any *.deb packages."
  457. # return
  458. # fi
  459. this_binary="$2"
  460. echo -n "Using \`$this_binary' as $1 binary dir"
  461. if [ -n "$multi" ]; then
  462. this_disk=`getdisklabel ${mountpoint} "/$hierbase"`
  463. echo " from disc"
  464. echo " \`$this_disk'"
  465. else
  466. echo ""
  467. fi
  468. }
  469. find_area () {
  470. # args: area-in-messages area-in-vars subdirectory-in-hier
  471. # last-time-binary last-time-packages
  472. debug "find_area($@)"
  473. this_binary=''
  474. this_packages=''
  475. this_disk=''
  476. if [ -n "$hierbase" ]
  477. then
  478. check_binary $1 `echo "$hierbase/dists/$3/$1/binary-$iarch" | sed 's:/\+:/:g'`
  479. debug "THIS_BINARY $this_binary"
  480. fi
  481. if [ $option = multi_cd -a $2 = nf -a -z "$this_binary" ]
  482. then
  483. echo '
  484. Note: most CD-ROM distributions of Debian do not include programs
  485. available in the `non-free'\'' directory of the distribution site.
  486. This is because these programs have copyrights that prevent
  487. distribution for profit on a CD-ROM - ie they are not free software.
  488. If you wish to install these programs you'\''ll have to get them from an
  489. alternative source.'
  490. fi
  491. while [ -z "$this_binary" ]
  492. do
  493. defaultbinary="$4"
  494. echo "
  495. Which directory contains the *.deb packages from the $1 distribution
  496. area (this directory is named \`$3/binary' on the distribution site) ?
  497. Say \`none' if this area is not available."
  498. if [ $2 != main -a -z "$defaultbinary" ]
  499. then
  500. defaultbinary=none
  501. fi
  502. echo -n \
  503. "Enter _$1_ binary dir. [$4]
  504. ? "
  505. read response
  506. if [ -z "$response" -a -n "$defaultbinary" ]
  507. then
  508. response="$defaultbinary"
  509. fi
  510. if [ none = "$response" ]
  511. then
  512. break
  513. fi
  514. case "$response" in
  515. '' | none) continue ;;
  516. esac
  517. check_binary $1 "`echo \"$response\" | sed -e 's:/$::; s:^/*:/:'`"
  518. done
  519. if [ -n "$this_binary" ]
  520. then
  521. if [ "$multi" = "yes" ]; then
  522. for f in Packages.cd.gz packages.cd.gz Packages.cd packages.cd
  523. do
  524. if [ -f "$mountpoint/$this_binary/$f" ]
  525. then
  526. this_packages="$this_binary/$f"
  527. echo "Using \`$this_packages' for $1."
  528. break
  529. fi
  530. done
  531. else
  532. if [ -f "${mountpoint}${hierbase}/.disk/packages/$1/Packages.gz" ]; then
  533. this_packages=`echo "${hierbase}/.disk/packages/$1/Packages.gz"|sed 's:/\+:/:g'`
  534. echo "Using \`${this_packages}' for $1."
  535. fi
  536. fi
  537. while [ -z "$this_packages" ]
  538. do
  539. echo -n "
  540. I can't find the $1 \`Packages.cd' file. The information in the
  541. \`Packages.cd' file is important for package selection during new
  542. installations, and is very useful for upgrades.
  543. If you overlooked it when downloading you should do get it now and
  544. return to this installation procedure when you have done so: you will
  545. find one Packages.cd file and one Packages.cd.gz file -- either will do --
  546. in the \`binary' subdirectory of each area on the FTP sites and
  547. CD-ROMs. Alternatively (and this will be rather slow) I can scan the
  548. packages in the distribution area - say \`scan' if you want me to do so.
  549. You need a separate Packages.cd file from each of the distribution areas
  550. you wish to install.
  551. Where is the _$1_ \`Packages.cd' file (if none is available, say \`none')
  552. [$5]
  553. ? "
  554. read response
  555. if [ -z "$response" -a -n "$5" ]
  556. then
  557. response="$5"
  558. fi
  559. case "$response" in
  560. '') break ;;
  561. none) break ;;
  562. scan) this_packages=scan ;;
  563. /*) this_packages="$response" ;;
  564. *) this_packages="/$response" ;;
  565. esac
  566. done
  567. fi
  568. eval $2'_binary="$this_binary"'
  569. eval $2'_packages="$this_packages"'
  570. eval $2'_disk="$this_disk"'
  571. }
  572. find_area main main "$distribution" "$p_main_binary" "$p_main_packages"
  573. find_area contrib ctb "$distribution" "$p_ctb_binary" "$p_ctb_packages"
  574. find_area non-free nf "$distribution" "$p_nf_binary" "$p_nf_packages"
  575. find_area non-US/main nonus "$distribution" "$p_nonus_binary" "$p_nonus_packages"
  576. find_area non-US/contrib nonusctb "$distribution" "$p_nonusctb_binary" "$p_nonusctb_packages"
  577. find_area non-US/non-free nonusnf "$distribution" "$p_nonusnf_binary" "$p_nonusnf_packages"
  578. find_area local lcl local "$p_lcl_binary" "$p_lcl_packages"
  579. echo -n '
  580. Hit RETURN to continue. '
  581. read response
  582. exec 3>shvar.$option.new
  583. outputparam p_blockdev "$blockdevice"
  584. outputparam p_fstype "$fstype"
  585. outputparam p_mountpoint "$mountpoint"
  586. outputparam p_nfsserver "$nfsserver"
  587. outputparam p_nfsrempath "$nfsrempath"
  588. outputparam p_nfs "$nfs"
  589. outputparam p_hierbase "$hierbase"
  590. outputparam p_usedevel "$usedevel"
  591. outputparam p_main_packages "$main_packages"
  592. outputparam p_main_binary "$main_binary"
  593. outputparam p_main_disk "$main_disk"
  594. outputparam p_ctb_packages "$ctb_packages"
  595. outputparam p_ctb_binary "$ctb_binary"
  596. outputparam p_ctb_disk "$ctb_disk"
  597. outputparam p_nf_packages "$nf_packages"
  598. outputparam p_nf_binary "$nf_binary"
  599. outputparam p_nf_disk "$nf_disk"
  600. outputparam p_nonus_binary "$nonus_binary"
  601. outputparam p_nonus_packages "$nonus_packages"
  602. outputparam p_nonus_disk "$nonus_disk"
  603. outputparam p_nonusctb_binary "$nonusctb_binary"
  604. outputparam p_nonusctb_packages "$nonusctb_packages"
  605. outputparam p_nonusctb_disk "$nonusctb_disk"
  606. outputparam p_nonusnf_binary "$nonusnf_binary"
  607. outputparam p_nonusnf_packages "$nonusnf_packages"
  608. outputparam p_nonusnf_disk "$nonusnf_disk"
  609. outputparam p_lcl_packages "$lcl_packages"
  610. outputparam p_lcl_binary "$lcl_binary"
  611. outputparam p_multi "$multi"
  612. outputparam p_multi_contentsfile "$multi_contentsfile"
  613. mv shvar.$option.new shvar.$option
  614. xit=0
  615. # vim:ts=4:sw=4:aw:ai: