diff --git a/debian/zutils.preinst b/debian/zutils.preinst index 3512868..c58157d 100755 --- a/debian/zutils.preinst +++ b/debian/zutils.preinst @@ -25,7 +25,11 @@ case "${1}" in # We cannot run between gzip.preinst and gzip unpack. GZIP_VERSION=$(dpkg-query -f '${Version}' -W gzip) GZIP_PREFIX=/usr - dpkg --compare-versions "$GZIP_VERSION" lt 1.12-1.1~ && GZIP_PREFIX= + GZIP_SUFFIX= + dpkg --compare-versions "$GZIP_VERSION" lt 1.12-1.1~ && { + GZIP_PREFIX= + GZIP_SUFFIX=.usr-is-merged + } for FILE in zcat zcmp zdiff zegrep zfgrep zgrep do TRUENAME=$(dpkg-divert --truename "/usr/bin/${FILE}") @@ -42,7 +46,7 @@ case "${1}" in # on the gzip version. dpkg-divert --package zutils --quiet --add --no-rename --divert "/usr/bin/${FILE}.gzip" "/usr/bin/${FILE}" dpkg-divert --package zutils --quiet --add --no-rename --divert "/bin/${FILE}.gzip.usr-is-merged" "/bin/${FILE}" - mv "${DPKG_ROOT:-}${TRUENAME}" "${DPKG_ROOT:-}${GZIP_PREFIX}/bin/${FILE}.gzip${GZIP_PREFIX:+.usr-is-merged}" + mv "${DPKG_ROOT:-}${TRUENAME}" "${DPKG_ROOT:-}${GZIP_PREFIX}/bin/${FILE}.gzip${GZIP_SUFFIX}" dpkg-divert --package zutils --quiet --add --rename --divert /usr/share/man/man1/${FILE}.gzip.1.gz /usr/share/man/man1/${FILE}.1.gz done ;; @@ -85,8 +89,14 @@ case "${1}" in mv "${DPKG_ROOT}${TRUENAME}" "${DPKG_ROOT}/bin/${FILE}.gzip.usr-is-merged" fi fi - elif [ "${TRUENAME}" != "/usr/bin/${FILE}.gzip" ] + elif [ "${TRUENAME}" = "/usr/bin/${FILE}.gzip" ] then + # 1.14-4 wrongly moved files. Fix. + if [ -e "${DPKG_ROOT:-}/usr/bin/${FILE}.gzip.usr-is-merged" ] && ! [ -e "${DPKG_ROOT:-}/usr/bin/${FILE}.gzip" ] + then + mv "${DPKG_ROOT:-}/usr/bin/${FILE}.gzip.usr-is-merged" "${DPKG_ROOT:-}/usr/bin/${FILE}.gzip" + fi + else die "unexpected diversion of /usr/bin/${FILE} to ${TRUENAME}" fi done