On Tue, Dec 04, 2012 at 09:44:59PM +0000, Heptas Torres wrote: > Thanks. What I meant was more things like the script > http://gouloum.fr/code/script/install_snapshot.sh - this seems a bit > outdated and was wondering whether people use something similar for > system upgrades plus some package upgrades automatically. I was just > curious about what the best practices for automatic upgrades and syncs > are.
This is something that I use. Though that script only fetches the neccessary files and copies bsd.rd to / The script saves everything in your CWD. After running the script I just boot bsd.rd, run the upgrade and do sysmerge and pkg_add -u afterwards, so the main benefit is keeping the downtime small and the script can detect if the mirror you're fetching your sets from is out of sync. Frank. #!/bin/ksh # $Id: snapshotset.sh,v 1.4 2012/12/04 21:49:22 fab Exp $ ARCH=$(uname -m) MIRROR=http://openbsd.cs.fau.de/ LOCATION=pub/OpenBSD/snapshots/${ARCH}/ export showchanges=0 force=0 [[ "X$1" = 'X-f' ]] && force=1 echo "fetching SHA256 from ${MIRROR}" ftp ${MIRROR}${LOCATION}SHA256 echo "\nfetching SHA256 from ftp.openbsd.org" ftp -o SHA256.master http://ftp.openbsd.org/${LOCATION}SHA256 printf 'comaparing SHA256 files ' if [[ $(diff -u SHA256 SHA256.master) >/dev/null ]]; then print 'failed. mirror out of sync or compromised\n' diff -u SHA256.master SHA256 [[ $force -eq 1 ]] || exit 2 else print 'ok.\n' fi echo "\nfetching index.txt: " ftp ${MIRROR}${LOCATION}/index.txt echo "\nfetching INSTALL.${ARCH}" ftp ${MIRROR}${LOCATION}/INSTALL.${ARCH} for i in bsd bsd.rd bsd.mp; do printf "checking %s:" "$i" [[ -f $i && $(grep "^$(sha256 $i)$" SHA256) >/dev/null ]] && \ echo " uptodate." || \ { echo " missing or cksum mismatch, fetching." ftp ${MIRROR}${LOCATION}$i showchanges=1 } done { grep "tgz$" index.txt | awk '{ print $10 }'; }|& while read -p basepkg do printf "checking %s:" "$basepkg" [[ -f $basepkg && $(grep "^$(sha256 $basepkg)" SHA256) >/dev/null ]] && \ echo " uptodate." || \ { echo " missing or cksum mismatch, fetching." ftp ${MIRROR}${LOCATION}${basepkg} showchanges=1 } done 3>&- printf "checking /bsd.rd:" if [[ "$(sha256 -q bsd.rd)" = "$(sha256 -q /bsd.rd)" ]]; then printf " uptodate.\n" else printf "Copying bsd.rd to /\n" su root -c "cp bsd.rd /bsd.rd" fi if [[ $showchanges -eq 1 ]]; then echo "Fetching changes from current.html" ftp -o - -V http://www.openbsd.org/faq/current.html | \ egrep '<li><a href="#.*">[0-9]{4}/[0-9]{2}/[0-9]{2} - .*</a>' | \ egrep -o '[0-9]{4}/[0-9]{2}/[0-9]{2} - [^<]+' fi unset showchanges -- Frank Brodbeck <f...@guug.de>