From a805617e8160e0a6257d882cec933115806f8bf1 Mon Sep 17 00:00:00 2001 From: Darren Austin Date: Wed, 19 Sep 2018 23:18:10 -0500 Subject: Add config option to allow *not* saving .orig configs When admins choose to allow slackpkg new-config to overwrite currently installed config files with the .new counterparts from an upgraded package, slackpkg has traditionally created backups of the config files first, with the backups being written out with .orig extensions. This commit does not change the default behavior, but it does allow it to be turned off. TLDR: set "ORIG_BACKUPS" to "off" in /etc/slackpkg/slackpkg.conf if you do not wish to have .orig files left over Signed-off-by: Robby Workman --- files/post-functions.sh | 13 +++++++------ files/slackpkg | 8 ++++++++ files/slackpkg.conf.5 | 15 +++++++++++++++ files/slackpkg.conf.new | 4 ++++ 4 files changed, 34 insertions(+), 6 deletions(-) diff --git a/files/post-functions.sh b/files/post-functions.sh index b3beac8..ca61b2d 100644 --- a/files/post-functions.sh +++ b/files/post-functions.sh @@ -47,7 +47,7 @@ mergenew() { ;; I|i) if [ -f "${FULLNAME}.smerge" ]; then - if [ -e "${FULLNAME}" ]; then + if [ -e "${FULLNAME}" ] && [ "$ORIG_BACKUPS" != "off" ]; then mv "${FULLNAME}" "${FULLNAME}.orig" fi mv "${FULLNAME}.smerge" "${FULLNAME}" @@ -101,7 +101,7 @@ overold() { FILEPATH=$(dirname $i) FULLNAME="${FILEPATH}/${BASENAME}" - if [ -e ${FULLNAME} ]; then + if [ -e ${FULLNAME} ] && [ "$ORIG_BACKUPS" != "off" ]; then mv ${FULLNAME} ${FULLNAME}.orig fi mv ${FULLNAME}.new ${FULLNAME} @@ -141,15 +141,16 @@ looknew() { -not -name "shadow.new" \ -not -name "gshadow.new" 2>/dev/null | sort 2>/dev/null) if [ "$FILES" != "" ]; then - echo -e "\n\ + echo -ne "\n\ Some packages had new configuration files installed. You have four choices: (K)eep the old files and consider .new files later - (O)verwrite all old files with the new ones. The - old files will be stored with the suffix .orig - + (O)verwrite all old files with the new ones" + [ "$ORIG_BACKUPS" != "off" ] && echo -ne ". The + old files will be stored with the suffix .orig" + echo -e "\n\n\ (R)emove all .new files (P)rompt K, O, R selection for every single file diff --git a/files/slackpkg b/files/slackpkg index 6786493..52f8c9b 100644 --- a/files/slackpkg +++ b/files/slackpkg @@ -178,6 +178,14 @@ while [ -n "$1" ] ; do ONLY_NEW_DOTNEW=off shift ;; + -orig_backups=on) + ORIG_BACKUPS=on + shift + ;; + -orig_backups=off) + ORIG_BACKUPS=off + shift + ;; -use_includes=on) USE_INCLUDES=on shift diff --git a/files/slackpkg.conf.5 b/files/slackpkg.conf.5 index 5af259a..10c9576 100644 --- a/files/slackpkg.conf.5 +++ b/files/slackpkg.conf.5 @@ -210,6 +210,21 @@ is "off". Only change this if you know what are you doing... .br From command line, you can use -only_new_dotnew=value. +.TP 5 +.B ORIG_BACKUPS +.br +During integration of .new files during the post installation phase, original +files are backed up to a file name with a .orig extension. To prevent this, +set this option to "off" and note that you will no longer have a copy of the +content of the file prior to it being replaced by the .new version. + +The default value of +.B ORIG_BACKUPS +is "on". Only change this if you are sure you don't want backups of +overwritten files. +.br +From the command line, you can use -orig_backups=value. + .TP 5 .B ONOFF .br diff --git a/files/slackpkg.conf.new b/files/slackpkg.conf.new index 9eae0ab..4c15538 100644 --- a/files/slackpkg.conf.new +++ b/files/slackpkg.conf.new @@ -109,6 +109,10 @@ POSTINST=on # Default=off ONLY_NEW_DOTNEW=off +# Whether to backup files overwritten by their .new counterparts with a +# .orig extension. +ORIG_BACKUPS=on + # The ONOFF variable sets the initial behavior of the dialog interface. # If you set this to "on" then all packages will be selected by default. # If you prefer the opposite option (all unchecked), then set this to "off". -- cgit v1.2.3