Robert Clausecker <fuz_at_fuz.su> Date: Mon, 03 Mar 2025 11:06:41 UTC Hi Matthias,
> Am Mon, Mar 03, 2025 at 08:05:04AM +0100 schrieb Matthias Apitz: > > I tried to create a new jail in my CURRENT from March 1 > > This fails with: > > > > # poudriere jail -c -j 150-CURRENT -m src=/usr/src > > > > [00:00:00] Creating 150-CURRENT fs at > > /usr/local/poudriere/jails/150-CURRENT... done > > [00:00:01] Copying /usr/src to > > /usr/local/poudriere/jails/150-CURRENT/usr/src... done > > [00:02:31] Starting make installworld > > --- installworld --- > > make[1]: "/usr/obj/usr/src/amd64.amd64/toolchain-metadata.mk" line 1: Using > > cached toolchain metadata from build at jet on Sat Mar 1 20:51:42 CET 2025 > > --- _installcheck_world --- > > -------------------------------------------------------------- > > >>> Install check world started on Sun Mar 2 22:04:40 CET 2025 > > -------------------------------------------------------------- > > --- installworld --- > > mkdir -p /tmp/install.APjSa9v82y > > 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.APjSa9v82y > > Required library libmd.so.6 not found. > > *** [installworld] Error code 1 > > > > . . . > > What would be the correct way to fix this? Re-run 'make buildworld' > > again? Or copying the shared lib libmd.so.6 into place? > > The simplest solution is to clear the object directory and do a fresh world > build. > libmd.so.6 was turned into libmd.so.7 as part of a recent API change. It > should > also work to link libmd.so.7 to libmd.so.6. As I remember, libmd.so.6 vs. libmd.so.7 could have the following problem with managing the vintage of pkg used during an update sequence: If pkg was not yet also updated, it had a direct dependency as listed in ldd output (from before the update when the file could be found): libmd.so.6 => /lib/libmd.so.6 but it also had the following dependency visible in "ldd -a" output for it: liblzma.so.5 => /usr/lib/liblzma.so.5 This leads to another libmd.so reference. Note: pkg is not part of the system that is upgraded when the system is upgraded. After the system update, liblzma.so.5 (which is upgraded when the system in upgraded) in turn no longer had a libz.so.6 reference but instead: libmd.so.7 => /lib/libmd.so.7 Thus, overall, pkg ended up with both: libmd.so.6 => not found (0) libmd.so.7 => /lib/libmd.so.7 or, if BACKUP_LIBRARIES=true was in use for PkgBase, there ended up being 2 libmd.so bindings around, which of itself is also problem such that they can not both be in use. pkg-static, of course, does not have this problem. But some scripting in use references pkg instead of pkg-static and so is subject to this kind of breakage when system updates happen. === Mark Millard marklmi at yahoo.com