Date: Mon, 9 Apr 2001 14:23:35 -0700 (PDT) From: sburke@corp.namesafe.com To: freebsd-gnats-submit@FreeBSD.org Subject: bin/26468: pkg_delete clears dependencies after running post-deinstall script. Message-ID: <200104092123.f39LNZt43968@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
>Number: 26468
>Category: bin
>Synopsis: pkg_delete clears dependencies after running post-deinstall script.
>Confidential: no
>Severity: non-critical
>Priority: medium
>Responsible: freebsd-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Mon Apr 09 14:30:01 PDT 2001
>Closed-Date:
>Last-Modified:
>Originator: SEan Burke
>Release: 4.3 BETA
>Organization:
NameSafe, Inc.
>Environment:
FreeBSD zardoz.corp.namesafe.com 4.3-BETA FreeBSD 4.3-BETA #1: Thu Apr 5 18:09:04 PDT 2001 root@dev1.corp.namesafe.com:/usr/obj/usr/src/sys/GENERIC i386
>Description:
pkg_delete does not clear the +REQUIRED_BY entries in the deleted
package's dependencies until after running the post-deinstall script.
As a result, if the post-deinstall script attempts to delete other
packages that are required by the package being deleted, those packages
cannot be deleted because they appear to still be required.
>How-To-Repeat:
Create a package Foo-1.0, with "@pkgdep Bar-1.0" in the pkg-plist.
Next, in Foo's post-deinstall script, do "pkg_delete Bar-1.0".
Deleting the package Foo-1.0 generates the error:
pkg_delete: package `Bar-1.0' is required by these other packages
and may not be deinstalled
Foo-1.0
>Fix:
In /usr/src/usr.sbin/pkg_install/delete/perform.c,
move the loop beginning at line 258:
for (p = Plist.head; p ; p = p->next) {
if (p->type != PLIST_PKGDEP)
continue;
if (Verbose)
printf("Attempting to remove dependency on package `%s'\n", p->name);
if (!Fake)
undepend(p, pkg);
}
To line 225, following the call to delete_package().
This will ensure that the package dependencies are up to date
when the post-deinstall script is called.
>Release-Note:
>Audit-Trail:
>Unformatted:
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-bugs" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200104092123.f39LNZt43968>
