Gund is a script that should be run by cron on a daily basis to check for updates to a Gentoo system. It syncs the portage tree checks for different types of updates and then writes the output to STDOUT. If run from root's crontab then the administator should get the message and can then handle accordingly
The Script
#!/bin/bash # gund v 2005-12-13-c cmd=$0 opt=$1 echo "Gentoo Update Notification Dragon '$cmd' on:" `/usr/bin/hostname` echo "Options: self,sync,glsa,update,revdep,clean,depclean,prune" export FEATURES="notitles strict" export NOCOLOR="true" export PATH=/bin:/usr/bin export PORTAGE_NICENESS=15 # If any of these phrases are listed in the emerge output # the automatic update will not take place, is passed to egrep no_auto="apache|glibc|postgresql|ssh" if [ "$opt" = "self" ]; then # neat that I can overwrite myself while I'm running and start it. echo "Updrading Self..." wget -q -O- http://www.edoceo.com/dl/gund > $cmd exit fi if [ -z $opt ] || [ "$opt" = "sync" ]; then emerge --sync >/dev/null || exit fi # GLSA if [ -z $opt ] || [ "$opt" = "glsa" ]; then echo "* GLSA Checks" buf=`glsa-check --test all 2>&1 |grep '^[0-9]'` for glsa in $buf do glsa-check --print $glsa 2>/dev/null|head -n2 glsa-check --pretend $glsa 2>/dev/null|egrep '^The following| ' echo done fi # Update # note: may not want --deep in here if [ -z $opt ] || [ "$opt" = "update" ]; then echo "* Checking for updates [ -DNpuv ]" buf=`emerge -DNpuv --nospinner world |grep '^\[ebuild'` if [ -n "$buf" ]; then echo "${buf}" | /bin/egrep ${no_auto} >/dev/null if [ "$?" != "0" ]; then echo "** Performing Automatic Update" echo $buf|sed 's/ +\[eb/\n\[eb/g' emerge -DNu --nospinner world >/dev/null else echo "** Manual Update Required, fetching" # uncomment below to perform download now emerge -DNu --fetch-only >/dev/null echo $buf|sed 's/ \[eb/\n\[eb/g' fi fi fi # Revdeps if [ -z $opt ] || [ "$opt" = "revdep" ] ; then if [ -e /usr/bin/revdep-rebuild ]; then echo "* Reverse Dependency required rebuilds" revdep-rebuild --pretend --quiet | egrep '^ broken|^\[ebuild' rm ./.revdep-rebuild.* fi fi # Packages that can be removed if [ -z $opt ] || [ "$opt" = "clean" ]; then echo "* Cleaning [ -cpv world ]" emerge --clean --nospinner --pretend --verbose world fi if [ -z $opt ] || [ "$opt" = "depclean" ]; then echo "* Useless Packages [ --depclean -pv ]" emerge -pv --depclean --nospinner | egrep '^ \w+' fi if [ -z $opt ] || [ "$opt" = "prune" ]; then echo "* Packages to prune [ -pPv ]" emerge -pPv --nospinner | egrep '^ \w+|^ +selected' fi
Change Log
- 2005-07-11 - Cleaned, added GLSA checks and revdep-rebuild.
- 2005-03-13 - Created