mkpk

Систем за управљање пакетима који користи mk из система Plan9
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 5da1cf6f8f4cb394f810e7326f976a2ea6cf8987
родитељ 21ff8bad793e1fae7b5b6449754a0354c7026656
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Thu,  4 Aug 2022 11:48:08 +0200

Uninstall based on record in pkgdb.tsv, not based on file system

Signed-off-by: Страхиња Радић <contact@strahinja.org>

Diffstat:
Mlib/uninstall.mk | 16+++++++++-------
измењених датотека: 1, додавања: 9(+), брисања: 7(-)

diff --git a/lib/uninstall.mk b/lib/uninstall.mk @@ -1,16 +1,18 @@ <$mkpklib/defaults.mk uninstall-package:QV: - recentver=$(find ${PKGDIR}/ -type f -prune -name "${PKGBASE}-*.tar.xz" \ - | sed 's,\([^0-9]\+[^-]-\)\+\([0-9].*\)\.tar\.xz,\2,' | recent) - if [ -z "${recentver}" ]; then - printf "Cannot find package %s\n" "${PKGBASE}" >&2 - exit 1 - elif [ -z "$(grep "^${PKGBASE}\t" "${PKGDB}" 2>/dev/null)" ]; then + record=$(grep "^${PKGBASE}\t" "${PKGDB}" 2>/dev/null) + if [ -z "${record}" ]; then printf "Package %s is not installed\n" "${PKGBASE}" >&2 exit 1 + fi + ver=$(echo "${record}" | cut -f2) + if [ -z "${ver}" ]; then + printf "Corrupted record for %s in %s\n" \ + "${PKGBASE}" "${PKGDB}" >&2 + exit 1 else - pkg=${PKGDIR}/${PKGBASE}-${recentver}.tar.xz + pkg=${PKGDIR}/${PKGBASE}-${ver}.tar.xz cd / for item in $(xz -dc "${pkg}" | tar -tf -); do if [ -d "${item}" ]; then