issue with pkg_add

Jason Helfman jhelfman at
Wed Oct 20 01:05:44 UTC 2010


I believe I may have come across a potential bug in pkg_add, but wanted
to write my findings out to see if anyone has seen this issue, or knows
of something I may be doing wrong.

I wrote a port that uses USERS/GROUPS functionality of ports.

USERS=		user
GROUPS=		user_work
BINOWN=		user
BINGRP=		user_work

These are the exec lines in my +CONTENTS file (assume one line for
each exec, they were wrapped):
@exec if ! /usr/sbin/pw groupshow user_work >/dev/null 2>&1;
then /usr/sbin/pw groupadd user_work -g 999; fi 
@exec if ! /usr/sbin/pw usershow user >/dev/null 2>&1;
then /usr/sbin/pw useradd user -u 999 -g 999  -c "user" -d /home/user
-s /usr/sbin/nologin; fi

I found that on my desktop with a ports tree installed that this port
and package installed with no issue, however I found that if I tried to
install the package in a jail with no ports tree and nothing installed
that it failed with this error:

pw: group `999' does not exist
pkg_add: command 'if ! /usr/sbin/pw usershow user >/dev/null 2>&1; then /usr/sbin/pw useradd user -u 999 -g 999  -c "user" -d /home/user -s /usr/sbin/nologin; fi' failed

I removed all remnants of the installation (these packages were all
successful builds in Tinderbox), including installed users/groups. I
copied my UIDs and GIDs files to an empty /usr/ports directory. So the
only files under /usr/ports were UIDs and GIDs.

With these files in place, I reran the pkg_add command on the port
package I created and it installed the user and group with no issue,
with correct permissions and modes on the files.

With this testing, it appears that pkg_add is looking
at /usr/ports/UIDs and /usr/ports/GIDs for information on installing a
port package, even-though all of the information required for an
installation appears to be in my port package.

Has anyone run into this issue? Any assumptions I am making? Any flawed
logic in testing?


More information about the freebsd-ports mailing list