freebsd-update: Add updatesready' and showconfig' commands

`freebsd-update updatesready' can be used to check if there are any pending
fetched updates that can be installed.

`freebsd-update showconfig' writes freebsd-update's configuration to
stdout.

This also changes the exit code of `freebsd-update install' to 2 in case
there are no updates pending to be installed and there wasn't a fetch phase
in the same invocation. This allows scripts to tell apart these error
conditions without breaking existing jail managers.

See freebsd-update(8) for details.

PR:		240757, 240177, 229346
Reviewed by:	manpages (bcr), sectam (emaste), yuripv
Differential Revision:	https://reviews.freebsd.org/D21473
This commit is contained in:
Michael Gmelin 2019-09-24 20:49:33 +00:00
parent ac7bd23a7a
commit 8cfda118cb
2 changed files with 39 additions and 3 deletions

View File

@ -25,7 +25,7 @@
.\"
.\" $FreeBSD$
.\"
.Dd June 14, 2017
.Dd September 24, 2019
.Dt FREEBSD-UPDATE 8
.Os
.Sh NAME
@ -155,13 +155,24 @@ Note that this command may require up to 500 MB of space in
depending on which components of the
.Fx
base system are installed.
.It Cm updatesready
Check if there are fetched updates ready to install.
Returns exit code 2 if there are no updates to install.
.It Cm install
Install the most recently fetched updates or upgrade.
Returns exit code 2 if there are no updates to install
and the
.Cm fetch
command wasn't passed as an earlier argument in the same
invocation.
.It Cm rollback
Uninstall the most recently installed updates.
.It Cm IDS
Compare the system against a "known good" index of the
installed release.
.It Cm showconfig
Show configuration options after parsing conffile and command
line options.
.El
.Sh TIPS
.Bl -bullet

View File

@ -62,9 +62,11 @@ Commands:
cron -- Sleep rand(3600) seconds, fetch updates, and send an
email if updates were found
upgrade -- Fetch upgrades to FreeBSD version specified via -r option
updatesready -- Check if there are fetched updates ready to install
install -- Install downloaded updates or upgrades
rollback -- Uninstall most recently installed updates
IDS -- Compare the system against an index of "known good" files
showconfig -- Show configuration
EOF
exit 0
}
@ -503,7 +505,8 @@ parse_cmdline () {
;;
# Commands
cron | fetch | upgrade | install | rollback | IDS)
cron | fetch | upgrade | updatesready | install | rollback |\
IDS | showconfig)
COMMANDS="${COMMANDS} $1"
;;
@ -827,7 +830,7 @@ install_check_params () {
echo "No updates are available to install."
if [ $ISFETCHED -eq 0 ]; then
echo "Run '$0 fetch' first."
exit 1
exit 2
fi
exit 0
fi
@ -3333,6 +3336,21 @@ cmd_upgrade () {
upgrade_run || exit 1
}
# Check if there are fetched updates ready to install
cmd_updatesready () {
# Construct a unique name from ${BASEDIR}
BDHASH=`echo ${BASEDIR} | sha256 -q`
# Check that we have updates ready to install
if ! [ -L ${BDHASH}-install ]; then
echo "No updates are available to install."
exit 2
fi
echo "There are updates available to install."
echo "Run '$0 install' to proceed."
}
# Install downloaded updates.
cmd_install () {
install_check_params
@ -3351,6 +3369,13 @@ cmd_IDS () {
IDS_run || exit 1
}
# Output configuration.
cmd_showconfig () {
for X in ${CONFIGOPTIONS}; do
echo $X=$(eval echo \$${X})
done
}
#### Entry point
# Make sure we find utilities from the base system