old shared lib is missing on installworld (by poudriere)
Date: Wed, 22 Oct 2025 06:56:12 UTC
Hello,
I did on a 15-CURRENT system compiled and installed in March,
now with sources from git:
make buildworld
make buildkernel
make installkernel
and installed it in single user mode with
reboot to single user
make installworld
reboot to multiuser
The new system boots fine (if I not count outdated entries in
/etc/sysctl.conf causing panic with messages about ACPI).
But now, creating jails after also updated /usr/ports fails with:
# uname -a
FreeBSD jet 16.0-CURRENT FreeBSD 16.0-CURRENT #0 main-n281256-7d6221ff1447: Sun Oct 19 12:57:22 CEST 2025 guru@jet:/usr/obj/usr/src/amd64.amd64/sys/GENERIC amd64
# poudriere jail -c -j 160-CURRENT -m src=/usr/src
[00:00:00] Creating 160-CURRENT fs at /usr/local/poudriere/jails/160-CURRENT... done
[00:00:01] Copying /usr/src to /usr/local/poudriere/jails/160-CURRENT/usr/src... done
[00:02:57] Starting make installworld
--- installworld ---
make[1]: /usr/obj/usr/src/amd64.amd64/toolchain-metadata.mk:1: Using cached toolchain metadata from build at jet on Sun Oct 19 10:12:02 CEST 2025
--- _installcheck_world ---
--------------------------------------------------------------
>>> Install check world started on Wed Oct 22 07:28:02 CEST 2025
--------------------------------------------------------------
--- installworld ---
mkdir -p /tmp/install.DDxtHqxvPf
progs=$(for prog in [ awk cap_mkdb cat chflags chmod chown cmp cp date echo egrep find grep id install ln make mkdir mtree mv pwd_mkdb rm sed services_mkdb sh sort strip sysctl test time true uname wc tzsetup makewhatis ; do if progpath=`env PATH=/usr/obj/usr/src/amd64.amd64/tmp/bin:/usr/obj/usr/src/amd64.amd64/tmp/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/libexec:/sbin:/bin:/usr/sbin:/usr/bin which $prog`; then echo $progpath; else echo "Required tool $prog not found in PATH ("/usr/obj/usr/src/amd64.amd64/tmp/bin:/usr/obj/usr/src/amd64.amd64/tmp/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/sbin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin:/usr/obj/usr/src/amd64.amd64/tmp/legacy/usr/libexec:/sbin:/bin:/usr/sbin:/usr/bin")." >&2; exit 1; fi; done); if [ -z "" ] ; then libs=$(ldd -f "%o %p\n" -f "%o %p\n" $progs 2>/dev/null | sort -u | grep -Ev '\[.*]' | while read line; do $line; if [ "$2 $3" != "not found" ]; then echo $2; else echo "Required library $1 not found." >&2; exit 1; fi; done); fi; cp $libs $progs /tmp/install.DDxtHqxvPf
Required library libutil.so.9 not found.
*** [installworld] Error code 1
make[1]: stopped making "installworld" in /usr/src
make[1]: 1 error
make[1]: stopped making "installworld" in /usr/src
make: stopped making "installworld" in /usr/src
[00:02:57] Error: /usr/local/share/poudriere/jail.sh:installworld:12:Failed to 'make installworld'
[00:02:57] Error while creating jail, cleaning up.
[00:02:57] Removing 160-CURRENT jail... done
I investigated the problem and two commands in
/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin are missing libutil.so.9:
/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin/cmp
/usr/obj/usr/src/amd64.amd64/tmp/legacy/bin/mtree
Note, this reads here poudriere related, but I'm sure and tested
it that the next
# cd /usr/src
# make installworld DESTDIR=/foo
would face the same problem.
A workaround was:
# cp -p /usr/local/poudriere/jails/150-CURRENT/lib/libutil.so.9 /lib
...
install -N /usr/src/etc -C -o root -g wheel -m 644 /usr/src/usr.sbin/pkg/FreeBSD.conf.latest /usr/local/poudriere/jails/160-CURRENT/etc/pkg/FreeBSD.conf
[00:05:36] Recording filesystem state for clean... done
[00:05:37] Jail 160-CURRENT 16.0-CURRENT 1600001 amd64 is ready to be used
Sould I file a PR?
matthias
--
Matthias Apitz, ✉ guru@unixarea.de, http://www.unixarea.de/ +49-176-38902045
Public GnuPG key: http://www.unixarea.de/key.pub