400.status-pkg.in
1 #!/bin/sh - 2 # 3 # $FreeBSD$ 4 # 5 6 if [ -r /etc/defaults/periodic.conf ]; then 7 . /etc/defaults/periodic.conf 8 source_periodic_confs 9 fi 10 pkgcmd=%prefix%/sbin/pkg 11 12 status_pkg() { 13 local pkgargs 14 local rc 15 local srcflag 16 17 pkgargs="$1" 18 19 # weekly_status_pkg_source: I (index), P (ports), R (remote). 20 : ${weekly_status_pkg_source=R} 21 case "${weekly_status_pkg_source}" in 22 [Ii]*) srcflag="-I" ;; 23 [Pp]*) srcflag="-P" ;; 24 *) srcflag="-R" ;; 25 esac 26 27 rc=$(${pkgcmd} ${pkgargs} version -Cv ${srcflag} ${pkg_version_index} | 28 sed -n -e '/up-to-date/d' \ 29 -e 's/^\([^[:space:]]*\)[[:space:]]*[<>=!?][[:space:]]*\(.*\)$/\1 \2/p' | 30 tee /dev/stderr | 31 wc -l) 32 33 return $rc 34 } 35 36 # Use $pkg_chroots to provide a default list of chroots, and 37 # $pkg_jails to provide a default list of jails (or '*' for all jails) 38 # for all pkg periodic scripts, or set $weekly_pkg_status_chroots and 39 # $weekly_pkg_status_jails for this script only. 40 41 status_pkg_all() { 42 local rc 43 local jails 44 45 : ${weekly_status_pkg_chroots=$pkg_chroots} 46 : ${weekly_status_pkg_jails=$pkg_jails} 47 48 # We always show pkg status for the base system but only print a 49 # banner line if we're also showing status for any chroots or 50 # jails. 51 52 if [ -n "${weekly_status_pkg_chroots}" -o \ 53 -n "${weekly_status_pkg_jails}" ]; 54 then 55 echo "Host system:" 56 fi 57 58 status_pkg '' 59 [ $? -gt 1 ] && rc=1 60 61 for c in $weekly_status_pkg_chroots ; do 62 echo 63 echo "chroot: $c" 64 status_pkg "-c $c" 65 [ $? -gt 1 ] && rc=1 66 done 67 68 case $weekly_status_pkg_jails in 69 \*) 70 jails=$(jls -q -h name | sed -e 1d) 71 ;; 72 '') 73 jails= 74 ;; 75 *) 76 jails=$weekly_status_pkg_jails 77 ;; 78 esac 79 80 for j in $jails ; do 81 echo 82 echo "jail: $j" 83 status_pkg "-j $j" 84 [ $? -gt 1 ] && rc=1 85 done 86 87 return $rc 88 } 89 90 case "$weekly_status_pkg_enable" in 91 [Yy][Ee][Ss]) 92 93 echo 94 echo 'Checking for out of date packages:' 95 96 if ! ${pkgcmd} -N >/dev/null 2>&1 ; then 97 echo 'status-pkg is enabled but pkg is not used' 98 rc=2 99 else 100 status_pkg_all 101 rc=$? 102 fi 103 ;; 104 *) 105 rc=0 106 ;; 107 esac 108 109 exit $rc