Hi, On Sat, 06 Aug 2016, Daniel Pocock wrote: > Based on that feedback, I've raised the severity again, but I won't have > time to start trying to code a solution for at least another 2 or 3 > weeks, has anybody seen any code in any other preinst / postinst that > can be copied for this purpose? > > If anybody else wants to try uploading a fix for this it would be very > welcome, please just put a note in the bug if you start working on it.
I just uploaded an NMU that fixes this bug. The NMU patch is attached. I was annoyed that the package got removed from testing as we use it in Kali so I worked on it. Cheers, -- Raphaël Hertzog ◈ Debian Developer Support Debian LTS: http://www.freexian.com/services/debian-lts.html Learn to master Debian: http://debian-handbook.info/get/
>From 3b1f47ce14848be18572233a79c23c7e785c7491 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rapha=C3=ABl=20Hertzog?= <hert...@debian.org> Date: Fri, 9 Sep 2016 16:03:54 +0200 Subject: [PATCH] Initialize /etc/radcli only with modified files from /etc/radiusclient/. Properly install them after initial install from postinst to avoid prompt during initial install. Handle the abort case as well. Closes: #825121 --- debian/changelog | 9 +++++++++ debian/libradcli4.postinst | 17 ++++++++++++++++ debian/libradcli4.postrm | 12 +++++++++++ debian/libradcli4.preinst | 50 ++++++++++++++++++++++++++++++---------------- 4 files changed, 71 insertions(+), 17 deletions(-) create mode 100644 debian/libradcli4.postinst create mode 100644 debian/libradcli4.postrm diff --git a/debian/changelog b/debian/changelog index 6fa461e..b9429dd 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,12 @@ +radcli (1.2.6-2.1) unstable; urgency=medium + + * Non-maintainer upload. + * Initialize /etc/radcli only with modified files from /etc/radiusclient/. + Properly install them after initial install from postinst to avoid prompt + during initial install. Handle the abort case as well. Closes: #825121 + + -- Raphaël Hertzog <hert...@debian.org> Fri, 09 Sep 2016 15:53:50 +0200 + radcli (1.2.6-2) unstable; urgency=high * preinst: update absolute directory paths in files from legacy client diff --git a/debian/libradcli4.postinst b/debian/libradcli4.postinst new file mode 100644 index 0000000..d5318a7 --- /dev/null +++ b/debian/libradcli4.postinst @@ -0,0 +1,17 @@ +#!/bin/sh + +set -e + +case $1 in + configure) + for file in /etc/radcli/*.dpkg-migrated; do + if [ ! -e "$file" ]; then + continue + fi + echo "Overwriting ${file%%.dpkg-migrated} with original file from libfreeradius-client2" + mv $file ${file%%.dpkg-migrated} + done + ;; +esac + +#DEBHELPER# diff --git a/debian/libradcli4.postrm b/debian/libradcli4.postrm new file mode 100644 index 0000000..e55f50a --- /dev/null +++ b/debian/libradcli4.postrm @@ -0,0 +1,12 @@ +#!/bin/sh + +set -e + +case $1 in + abort-install|abort-upgrade) + rm -f /etc/radcli/*.migrated + rmdir --ignore-fail-on-non-empty /etc/radcli + ;; +esac + +#DEBHELPER# diff --git a/debian/libradcli4.preinst b/debian/libradcli4.preinst index a1f61eb..c854df3 100644 --- a/debian/libradcli4.preinst +++ b/debian/libradcli4.preinst @@ -1,23 +1,39 @@ #!/bin/sh + set -e -if [ ! -d /etc/radcli ]; -then - # no radcli config exists +FILES_TO_MIGRATE=" +/etc/radiusclient/dictionary +/etc/radiusclient/dictionary.ascend +/etc/radiusclient/dictionary.compat +/etc/radiusclient/dictionary.merit +/etc/radiusclient/dictionary.sip +/etc/radiusclient/radiusclient.conf +/etc/radiusclient/servers +" - if [ -d /etc/radiusclient ]; - then - # a legacy configuration from radiusclient-ng exists, use it, - # as this package is a fork of radiusclient-ng - echo "Using copy of existing /etc/radiusclient to initialize /etc/radcli" - cp -ar /etc/radiusclient /etc/radcli - for f in /etc/radcli/* ; - do - if [ -f "${f}" -a ! -h "${f}" ]; - then - sed -i -e 's!/etc/radiusclient/!/etc/radcli/!g' "${f}" - fi - done - fi +is_modified_conffile() { + actual_md5=$(md5sum $1 | awk '{print $1}') + expected_md5=$(dpkg-query -f '${Conffiles}' -W libfreeradius-client2 | awk '$1 == "'"$1"'" { print $2 }') + test "$actual_md5" != "$expected_md5" +} + +if [ ! -d /etc/radcli ] && [ -d /etc/radiusclient ]; +then + # no radcli config exists but a legacy configuration from + # radiusclient-ng exists, use it, as this package is a fork of + # radiusclient-ng + mkdir -p /etc/radcli + for file in $FILES_TO_MIGRATE; do + if is_modified_conffile $file; then + new_file="/etc/radcli/$(basename $file).dpkg-migrated" + echo "Preparing a copy of $file to initialize ${new_file%%.dpkg-migrated}" + cp -a $file $new_file + if [ -f "$new_file" -a ! -h "$new_file" ]; then + sed -i -e 's!/etc/radiusclient/!/etc/radcli/!g' "$new_file" + fi + fi + done fi +#DEBHELPER# -- 2.9.3