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


Reply via email to