Current-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: sysupdate - an addition for etcupdate(8)
2010/1/4 Hubert Feyrer <hubert%feyrer.de@localhost>:
>
> I wanted to update a few machines with latest netbsd-5 and -current today,
> and found that there's a certain lack of tools to aid in the process:
> we have etcupdate(8) and postinstall(8), but nothing to help extract the
> userland sets (let alone do the same thing for the kernel, esp. now that
> modules must be put into place, too).
What about /usr/pkg/bin/INSTALL-NetBSD from etcmanage? I only add
'modules' set to the list as it is not there by default. This has been
the way I am updating my machines to the latest -current from
NFS-mounted release tree for quite some time without problems.
>
> To save me from re-typing the same commands, I've hacked a script
> "sysupdate" that's intended to run with a new kernel booted, and which will
> then 1) extract all the sets where mtree files are in /etc/mtree, and 2) run
> etcupdate for etc (and xetc, if in /etc/mtree).
>
> Here's an example run:
>
> % sh ~/tmp/sysupdate -s
> /usr/cvs/src-current/obj.i386/releasedir/i386/binary/sets -n
>
> ---------------------------------------------------------------------------
> Updating your userland now!
>
> ---------------------------------------------------------------------------
>
> New userland: NetBSD 5.99.23 (GENERIC) #0: Sun Jan 3 02:13:00 CET 2010
> Current kernel: NetBSD vmnetbsd6 5.99.23 NetBSD 5.99.23 (GENERIC) #0: Sun
> Jan 3 02:13:00 CET 2010
> feyrer%mini.local@localhost:/usr/cvs/src-current/obj.i386/sys/arch/i386/compile/GENERIC
> i386
>
> Really update? (y/N) y
> Updating sets...
> Extracting base.tgz
> tar -plzx -C / -f base.tgz
> Extracting comp.tgz
> tar -plzx -C / -f comp.tgz
> Extracting games.tgz
> tar -plzx -C / -f games.tgz
> Extracting man.tgz
> tar -plzx -C / -f man.tgz
> Extracting misc.tgz
> tar -plzx -C / -f misc.tgz
> Extracting modules.tgz
> tar -plzx -C / -f modules.tgz
> Extracting tests.tgz
> tar -plzx -C / -f tests.tgz
> Extracting text.tgz
> tar -plzx -C / -f text.tgz
> Extracting xbase.tgz
> tar -plzx -C / -f xbase.tgz
> Extracting xcomp.tgz
> tar -plzx -C / -f xcomp.tgz
> Extracting xfont.tgz
> tar -plzx -C / -f xfont.tgz
> Extracting xserver.tgz
> tar -plzx -C / -f xserver.tgz
> Updating etc files...
> etcupdate -s
> /usr/cvs/src-current/obj.i386/releasedir/i386/binary/sets/etc.tgz -s
> /usr/cvs/src-current/obj.i386/releasedir/i386/binary/sets/xetc.tgz
> Done.
> %
>
> The script is appended below. Enjoy!
>
>
> - Hubert
>
>
> #!/bin/sh
> #
> # Script to update userland sets (base, ... - whatever is i /usr/mtree)
> # Also see if etc and xetc need an update. If so, run etcupdate.
> #
> # - Hubert Feyrer <hubert%feyrer.de@localhost>
> #
>
> etc_update=false
> xetc_update=false
>
> # Flag variables
> setdir=`pwd`
> do_NOT=
> force=false
>
> # Parse options
> while getopts s:nf f
> do
> case $f in
> s) setdir=${OPTARG};;
> n) do_NOT=echo;;
> f) force=true;;
> *) echo "Usage: $0 [-nf] [-s tgzdir]"
> echo "-n Do nothing"
> echo "-f Force kernel version as ok"
> echo "-s Directory with .tgz set files"
> exit 1
> ;;
> esac
> done
> shift `expr $OPTIND - 1`
>
> if [ "$setdir" = "." ]; then
> setdir=`pwd`
> fi
>
>
> echo
> "---------------------------------------------------------------------------"
> echo "Updating your userland now!"
> echo
> "---------------------------------------------------------------------------"
> echo ""
>
> echo New userland: `zcat ${setdir}/kern-GENERIC.tgz | strings | grep -a
> '^NetBSD.*GENERIC'`
> echo Current kernel: `uname -a`
> echo ""
> if ! $force
> then
> echo -n "Really update? (y/N) "
> read yn
> case $yn in
> [yY]*) ;;
> *) echo Aborting.
> exit 1
> ;;
> esac
> fi
>
> echo Updating sets...
> cd /etc/mtree
> for f in set.*
> do
> cd $setdir
>
> set=${f##set.}
> case ${set} in
> etc)
> etc_update=true
> ;;
> xetc)
> xetc_update=true
> ;;
> *)
> setfile=${set}.tgz
> if [ -f ${setfile} ]; then
> echo Extracting ${setfile}
> $do_NOT tar -plzx -C / -f ${setfile}
> else
> echo WARNING: Set file ${setfile} not found,
> skipping.
> fi
> ;;
> esac
> done
>
> echo Updating etc files...
> etcupdate_sets=""
> if $etc_update; then
> etcupdate_sets="-s ${setdir}/etc.tgz"
>
> if $xetc_update; then
> etcupdate_sets="${etcupdate_sets} -s ${setdir}/xetc.tgz"
> fi
>
> $do_NOT etcupdate ${etcupdate_sets}
> fi
>
> echo Done.
>
Chavdar Ivanov
--
----
Ted Turner - "Sports is like a war without the killing." -
http://www.brainyquote.com/quotes/authors/t/ted_turner.html
Home |
Main Index |
Thread Index |
Old Index