freebsd-update
Alexis Megas
megas at alum.rpi.edu
Tue Apr 5 23:32:20 UTC 2016
Hello.
Please consider a new clean command in the freebsd-update script. The modified manual and script are located at https://github.com/textbrowser/freebsd-update. Included are two diffs. Sorry for the long e-mail.
--- /usr/src/usr.sbin/freebsd-update/freebsd-update.8 2015-08-12 10:21:35.000000000 -0400
+++ ./freebsd-update.8 2016-04-02 15:16:47.780095000 -0400
@@ -119,6 +119,12 @@
.Cm command
can be any one of the following:
.Bl -tag -width "rollback"
+.It Cm clean
+Remove the contents of
+.Ar workdir .
+(default:
+.Ar /var/db/freebsd-update/
+).
.It Cm fetch
Based on the currently installed world and the configuration
options set, fetch all available binary updates.
--- /usr/src/usr.sbin/freebsd-update/freebsd-update.sh 2015-08-12 10:21:35.000000000 -0400
+++ ./freebsd-update.sh 2016-04-02 15:26:57.990003000 -0400
@@ -53,6 +53,7 @@
--not-running-from-cron
-- Run without a tty, for use by automated tools
Commands:
+ clean -- Clean workdir
fetch -- Fetch updates from server
cron -- Sleep rand(3600) seconds, fetch updates, and send an
email if updates were found
@@ -474,7 +475,7 @@
;;
# Commands
- cron | fetch | upgrade | install | rollback | IDS)
+ clean | cron | fetch | upgrade | install | rollback | IDS)
COMMANDS="${COMMANDS} $1"
;;
@@ -559,6 +560,25 @@
mergeconfig
}
+# Perform sanity checks in preparation of cleaning workdir.
+clean_check_params () {
+ # Check that we are root. All sorts of things won't work otherwise.
+ if [ `id -u` != 0 ]; then
+ echo "You must be root to run this."
+ exit 1
+ fi
+
+ # Check that we have a working directory.
+ _WORKDIR_bad="Directory does not exist or is not writable: "
+ if ! [ -d "${WORKDIR}" -a -w "${WORKDIR}" ]; then
+ echo -n "`basename $0`: "
+ echo -n "${_WORKDIR_bad}"
+ echo ${WORKDIR}
+ exit 1
+ fi
+ cd ${WORKDIR} || exit 1
+}
+
# Set utility output filtering options, based on ${VERBOSELEVEL}
fetch_setup_verboselevel () {
case ${VERBOSELEVEL} in
@@ -2047,6 +2067,11 @@
echo ${NOWTIME} > lasteolwarn
}
+# Clean workdir.
+clean_run() {
+ rm -fr *
+}
+
# Do the actual work involved in "fetch" / "cron".
fetch_run () {
workdir_init || return 1
@@ -3225,6 +3250,12 @@
default_params
}
+# Clean command. Allow non-interactive use.
+cmd_clean () {
+ clean_check_params
+ clean_run || exit 1
+}
+
# Fetch command. Make sure that we're being called
# interactively, then run fetch_check_params and fetch_run
cmd_fetch () {
More information about the freebsd-current
mailing list