pkgsrc-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
pkg/60149: pkg_add -P $DESTDIR -K /usr/pkg/pkgdb sometimes uses /var/db/pkg instead
>Number: 60149
>Category: pkg
>Synopsis: pkg_add -P $DESTDIR -K /usr/pkg/pkgdb sometimes uses /var/db/pkg instead
>Confidential: no
>Severity: serious
>Priority: medium
>Responsible: pkg-manager
>State: open
>Class: sw-bug
>Submitter-Id: net
>Arrival-Date: Tue Mar 31 13:55:00 +0000 2026
>Originator: Taylor R Campbell
>Release: current
>Organization:
The Ghost of /var/db/pkg Past
>Environment:
>Description:
According to the pkg_add(1) man page, the command
pkg_add -P $DESTDIR -K /usr/pkg/pkgdb $pkgs
is supposed to install packages into a package database of
$DESTDIR/usr/pkg/pkgdb.
But if, _outside_ the destdir (!), /usr/pkg/pkgdb does not
exist and /var/db/pkg does exist, then it uses
$DESTDIR/var/db/pkg instead.
This applies only on NetBSD, and only to the exact default
paths, that is, /var/db/pkg and $PREFIX/pkgdb. So if you use
`-K /usr/pkg/pkgde' instead of `-K /usr/pkg/pkgdb', it doesn't
happen.
>How-To-Repeat:
touch /var/db/pkg
pkg_add -P $DESTDIR -K /usr/pkg/pkgdb $pkgs
>Fix:
Workaround: Use `-K /./usr/pkg/pkgdb' to bypass the naive
string comparison.
Possible fixes:
1. Change the stat calls in lib/pkgdb.c pkgdb_get_dir to be
DESTDIR-relative.
2. Don't do this if the `-K' argument was explicit.
3. Come up with a transition plan that enables us to ditch this
logic forever.
Home |
Main Index |
Thread Index |
Old Index