Re: libmd.so.6 and pkgbase
- Reply: Renato Botelho : "Re: libmd.so.6 and pkgbase"
- In reply to: Renato Botelho : "Re: libmd.so.6 and pkgbase"
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Mon, 07 Oct 2024 19:07:24 UTC
On Oct 7, 2024, at 11:34, Renato Botelho <garga@FreeBSD.org> wrote: > On 07/10/24 14:49, Mark Millard wrote: >> Renato Botelho <garga_at_FreeBSD.org> wrote on >> Date: Mon, 07 Oct 2024 14:20:00 UTC : >>> On 07/10/24 03:53, Baptiste Daroussin wrote: >>>> Hello everyone, >>>> >>>> Just a reminder when using pkgbase, make sure you do activate >>>> BACKUP_LIBRARIES=true in pkg.conf >>>> >>>> This way pkg will save a copy of libmd.so.6 during the upgrade in >>>> /usr/local/lib/pkg/libmd.so.6 (and create a package named compat-libraries to >>>> track it). >>>> >>>> This will prevent you from having a couple of days without a new version of pkg >>>> built against libmd.so.7 available (or some of the packages which also requires >>>> libmd.so.7. >>> >>> I have BACKUP_LIBRARIES=true on my pkg.conf and upgraded a system >>> running CURRENT this morning using pkgbase. After that I got pkg linked >>> with both libmd.so.6 and libmd.so.7: >>> >>> root@x230:~ # ldd /usr/local/sbin/pkg >>> /usr/local/sbin/pkg: >>> libelf.so.2 => /lib/libelf.so.2 (0x28b8027a6000) >>> libjail.so.1 => /lib/libjail.so.1 (0x28b80340b000) >>> libssl.so.30 => /usr/lib/libssl.so.30 (0x28b80436a000) >>> libcrypto.so.30 => /lib/libcrypto.so.30 (0x28b804e18000) >>> libarchive.so.7 => /usr/lib/libarchive.so.7 (0x28b805e0a000) >>> libbz2.so.4 => /usr/lib/libbz2.so.4 (0x28b80710e000) >>> libz.so.6 => /lib/libz.so.6 (0x28b807ccc000) >>> liblzma.so.5 => /usr/lib/liblzma.so.5 (0x28b808368000) >>> libprivatezstd.so.5 => /usr/lib/libprivatezstd.so.5 >>> (0x28b806205000) >>> libm.so.5 => /lib/libm.so.5 (0x28b808952000) >>> libutil.so.9 => /lib/libutil.so.9 (0x28b808ad1000) >>> libmd.so.6 => not found (0) >>> libthr.so.3 => /lib/libthr.so.3 (0x28b809f4c000) >>> libc.so.7 => /lib/libc.so.7 (0x28b80ae53000) >>> libbsdxml.so.4 => /lib/libbsdxml.so.4 (0x28b80c034000) >>> libmd.so.7 => /lib/libmd.so.7 (0x28b80cdf7000) >>> libsys.so.7 => /lib/libsys.so.7 (0x28b80ddb1000) >>> [vdso] (0x28b801eee000) >> . . . >> It would help for tracking down were the dependencies are >> to use "ldd -a ". It shows what each involved *.so.* >> in turn references of itself. The example below is for >> a context that does not have the problem you report >> (not a pkgbase context) but it illustrates the type of >> extra information that is output: >> # ldd -a /usr/local/sbin/pkg >> /usr/local/sbin/pkg: >> libelf.so.2 => /lib/libelf.so.2 (0xc4840f00000) >> libjail.so.1 => /lib/libjail.so.1 (0xc48410d3000) >> libssl.so.30 => /usr/lib/libssl.so.30 (0xc4841fae000) >> libcrypto.so.30 => /lib/libcrypto.so.30 (0xc4842853000) >> libarchive.so.7 => /usr/lib/libarchive.so.7 (0xc4843af6000) >> libbz2.so.4 => /usr/lib/libbz2.so.4 (0xc48403f6000) >> libz.so.6 => /lib/libz.so.6 (0xc4845351000) >> liblzma.so.5 => /usr/lib/liblzma.so.5 (0xc48455b0000) >> libprivatezstd.so.5 => /usr/lib/libprivatezstd.so.5 (0xc484480f000) >> libm.so.5 => /lib/libm.so.5 (0xc48463e4000) >> libutil.so.9 => /lib/libutil.so.9 (0xc4846b3d000) >> libmd.so.7 => /lib/libmd.so.7 (0xc48477f3000) >> libthr.so.3 => /lib/libthr.so.3 (0xc4848518000) >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> /lib/libelf.so.2: >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> /lib/libjail.so.1: >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> /usr/lib/libssl.so.30: >> libcrypto.so.30 => /lib/libcrypto.so.30 (0xc4842853000) >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> /lib/libcrypto.so.30: >> libthr.so.3 => /lib/libthr.so.3 (0xc4848518000) >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> /usr/lib/libarchive.so.7: >> libz.so.6 => /lib/libz.so.6 (0xc4845351000) >> libbz2.so.4 => /usr/lib/libbz2.so.4 (0xc48403f6000) >> liblzma.so.5 => /usr/lib/liblzma.so.5 (0xc48455b0000) >> libbsdxml.so.4 => /lib/libbsdxml.so.4 (0xc4849553000) >> libprivatezstd.so.5 => /usr/lib/libprivatezstd.so.5 (0xc484480f000) >> libcrypto.so.30 => /lib/libcrypto.so.30 (0xc4842853000) >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> /usr/lib/libbz2.so.4: >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> /lib/libz.so.6: >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> /usr/lib/liblzma.so.5: >> libmd.so.7 => /lib/libmd.so.7 (0xc48477f3000) >> libthr.so.3 => /lib/libthr.so.3 (0xc4848518000) >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> /usr/lib/libprivatezstd.so.5: >> libthr.so.3 => /lib/libthr.so.3 (0xc4848518000) >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> /lib/libm.so.5: >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> /lib/libutil.so.9: >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> /lib/libmd.so.7: >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> /lib/libthr.so.3: >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> libsys.so.7 => /lib/libsys.so.7 (0xc484af47000) >> /lib/libc.so.7: >> libsys.so.7 => /lib/libsys.so.7 (0xc484af47000) >> /lib/libbsdxml.so.4: >> libc.so.7 => /lib/libc.so.7 (0xc484889d000) >> [preloaded] >> [vdso] (0xc483f927000) >> I expect that /usr/local/sbin/pkg has the only reference >> to libmd.so.6 in your context and that /usr/lib/liblzma.so.5 >> is what is referencing libmd.so.7 . >> If so, I'll note that you can avoid the problem by using >> pkg-static instead of pkg as your command: >> # ldd -a /usr/local/sbin/pkg-static >> ldd: /usr/local/sbin/pkg-static: not a dynamic ELF executable >> So there is no use of *.so.* files for pkg-static . >> (I make no claims about other programs that might be involved >> overall.) > > I've fixed it by building pkg on local ports tree. But anyway I've forced a bootstrap to have the one provided by official repository installed again and ran ldd -a to collect data > > root@x230:~ # ldd -a /usr/local/sbin/pkg > /usr/local/sbin/pkg: > libelf.so.2 => /lib/libelf.so.2 (0x1a55a0de2000) > libjail.so.1 => /lib/libjail.so.1 (0x1a55a1fae000) > libssl.so.30 => /usr/lib/libssl.so.30 (0x1a55a1fc2000) > libcrypto.so.30 => /lib/libcrypto.so.30 (0x1a55a2e3a000) > libarchive.so.7 => /usr/lib/libarchive.so.7 (0x1a55a3e98000) > libbz2.so.4 => /usr/lib/libbz2.so.4 (0x1a55a4a17000) > libz.so.6 => /lib/libz.so.6 (0x1a55a4d85000) > liblzma.so.5 => /usr/lib/liblzma.so.5 (0x1a55a57ed000) > libprivatezstd.so.5 => /usr/lib/libprivatezstd.so.5 (0x1a55a640f000) > libm.so.5 => /lib/libm.so.5 (0x1a55a696c000) > libutil.so.9 => /lib/libutil.so.9 (0x1a55a6e12000) > libmd.so.6 => not found (0) > libthr.so.3 => /lib/libthr.so.3 (0x1a55a7a49000) > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > /lib/libelf.so.2: > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > /lib/libjail.so.1: > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > /usr/lib/libssl.so.30: > libcrypto.so.30 => /lib/libcrypto.so.30 (0x1a55a2e3a000) > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > /lib/libcrypto.so.30: > libthr.so.3 => /lib/libthr.so.3 (0x1a55a7a49000) > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > /usr/lib/libarchive.so.7: > libz.so.6 => /lib/libz.so.6 (0x1a55a4d85000) > libbz2.so.4 => /usr/lib/libbz2.so.4 (0x1a55a4a17000) > liblzma.so.5 => /usr/lib/liblzma.so.5 (0x1a55a57ed000) > libbsdxml.so.4 => /lib/libbsdxml.so.4 (0x1a55a834a000) > libprivatezstd.so.5 => /usr/lib/libprivatezstd.so.5 (0x1a55a640f000) > libcrypto.so.30 => /lib/libcrypto.so.30 (0x1a55a2e3a000) > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > /usr/lib/libbz2.so.4: > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > /lib/libz.so.6: > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > /usr/lib/liblzma.so.5: > libmd.so.7 => /lib/libmd.so.7 (0x1a55a853a000) > libthr.so.3 => /lib/libthr.so.3 (0x1a55a7a49000) > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > /usr/lib/libprivatezstd.so.5: > libthr.so.3 => /lib/libthr.so.3 (0x1a55a7a49000) > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > /lib/libm.so.5: > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > /lib/libutil.so.9: > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > /lib/libthr.so.3: > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > libsys.so.7 => /lib/libsys.so.7 (0x1a55a8908000) > /lib/libc.so.7: > libsys.so.7 => /lib/libsys.so.7 (0x1a55a8908000) > /lib/libbsdxml.so.4: > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > /lib/libmd.so.7: > libc.so.7 => /lib/libc.so.7 (0x1a55a7aa9000) > [preloaded] > [vdso] (0x1a559fe96000) > > It seems pkg is still linked with libmd.so.6 and lzma is linked with libmd.so.7. So, as I expected. Good to know. > Anyway we have a problem, keeping libmd.so.6 seems not to be enough to have pkg working Typing/using pkg-static instead of pkg should not fail for libmd.so.6 or libmd.so.7 reasons for its down execution, even when using just pkg would fail for such. An example usage is: # pkg-static info -l pkg | grep /sbin/ /usr/local/sbin/pkg /usr/local/sbin/pkg-static The above should work even in a context with the libmd.so.6 problem for using just pkg . (The /usr/bin/grep part should work too.) For reference (the context does not have the libmd.so.6 problem): # pkg info -l pkg | grep /sbin/ /usr/local/sbin/pkg /usr/local/sbin/pkg-static Personally, my scripts that use pkg actually run pkg-static so that the script is less dependent on the environment for reasonable operation. === Mark Millard marklmi at yahoo.com