Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 16 Mar 2025 23:35:05 +0200
From:      Rozhuk Ivan <rozhuk.im@gmail.com>
To:        Craig Leres <leres@freebsd.org>
Cc:        freebsd-hackers <freebsd-hackers@freebsd.org>
Subject:   Re: Is any way to detect *'version '*'required by '*'not defined' ?
Message-ID:  <20250316233505.0d3839dc@rimwks.local>
In-Reply-To: <3ab047d1-1b1c-44d3-a766-d2f0fd00446a@freebsd.org>
References:  <20250316231342.62fab6f8@rimwks.local> <3ab047d1-1b1c-44d3-a766-d2f0fd00446a@freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Sun, 16 Mar 2025 14:19:17 -0700
Craig Leres <leres@freebsd.org> wrote:


> I wrote the attached script once upon a time to find binaries and 
> libraries that were missing shared libraries. It uses ldd. Does it do 
> what you want?
> 


No, it looks for missed libs but in my case lib exist (in same file) but with another version.

I already try ldd:
% ldd /usr/local/share/chromium/chrome
/usr/local/share/chromium/chrome:
	libthr.so.3 => /lib/libthr.so.3 (0x801062000)
	libgmodule-2.0.so.0 => /usr/local/lib/libgmodule-2.0.so.0 (0x801090000)
	libgobject-2.0.so.0 => /usr/local/lib/libgobject-2.0.so.0 (0x801097000)
	libgthread-2.0.so.0 => /usr/local/lib/libgthread-2.0.so.0 (0x801112000)
	libglib-2.0.so.0 => /usr/local/lib/libglib-2.0.so.0 (0x80fc9d000)
	libintl.so.8 => /usr/local/lib/libintl.so.8 (0x801116000)
	libexecinfo.so.1 => /usr/lib/libexecinfo.so.1 (0x801137000)
	libnss3.so => /usr/local/lib/libnss3.so (0x80fe4c000)
	libsmime3.so => /usr/local/lib/libsmime3.so (0x80113e000)
	libnssutil3.so => /usr/local/lib/libnssutil3.so (0x80116f000)
	libplds4.so => /usr/local/lib/libplds4.so (0x8011a6000)
	libplc4.so => /usr/local/lib/libplc4.so (0x8011ac000)
	libnspr4.so => /usr/local/lib/libnspr4.so (0x8011b4000)
	libdl.so.1 => /usr/lib/libdl.so.1 (0x8011f7000)
	libatk-bridge-2.0.so.0 => /usr/local/lib/libatk-bridge-2.0.so.0 (0x80ffa2000)
	libatk-1.0.so.0 => /usr/local/lib/libatk-1.0.so.0 (0x80ffe0000)
	libcups.so.2 => /usr/local/lib/libcups.so.2 (0x810012000)
	libepoll-shim.so.0 => /usr/local/lib/libepoll-shim.so.0 (0x8100b2000)
	libgio-2.0.so.0 => /usr/local/lib/libgio-2.0.so.0 (0x8100bd000)
	libdrm.so.2 => /usr/local/lib/libdrm.so.2 (0x810349000)
	libfontconfig.so.1 => /usr/local/lib/libfontconfig.so.1 (0x810363000)
	libdbus-1.so.3 => /usr/local/lib/libdbus-1.so.3 (0x8103b6000)
	libkvm.so.7 => /lib/libkvm.so.7 (0x810412000)
	libutil.so.9 => /lib/libutil.so.9 (0x810426000)
	libexpat.so.1 => /usr/local/lib/libexpat.so.1 (0x81043f000)
	libpng16.so.16 => /usr/local/lib/libpng16.so.16 (0x81046e000)
	libwebpdemux.so.2 => /usr/local/lib/libwebpdemux.so.2 (0x8104b3000)
	libwebpmux.so.3 => /usr/local/lib/libwebpmux.so.3 (0x8104ba000)
	libwebp.so.7 => /usr/local/lib/libwebp.so.7 (0x8104c8000)
	libharfbuzz-subset.so.0 => /usr/local/lib/libharfbuzz-subset.so.0 (0x810565000)
	libharfbuzz.so.0 => /usr/local/lib/libharfbuzz.so.0 (0x8106c2000)
	libjpeg.so.8 => /usr/local/lib/libjpeg.so.8 (0x8107fa000)
	libopus.so.0 => /usr/local/lib/libopus.so.0 (0x810a00000)
	libopenh264.so.6 => /usr/local/lib/libopenh264.so.6 (0x810f54000)
	libm.so.5 => /lib/libm.so.5 (0x8108c4000)
	libz.so.6 => /lib/libz.so.6 (0x810901000)
	libdav1d.so.7 => /usr/local/lib/libdav1d.so.7 (0x811098000)
	libX11.so.6 => /usr/local/lib/libX11.so.6 (0x81128d000)
	libXcomposite.so.1 => /usr/local/lib/libXcomposite.so.1 (0x81091d000)
	libXdamage.so.1 => /usr/local/lib/libXdamage.so.1 (0x810922000)
	libXext.so.6 => /usr/local/lib/libXext.so.6 (0x810927000)
	libXfixes.so.3 => /usr/local/lib/libXfixes.so.3 (0x81093c000)
	libXrandr.so.2 => /usr/local/lib/libXrandr.so.2 (0x810944000)
	libXrender.so.1 => /usr/local/lib/libXrender.so.1 (0x810951000)
	libXtst.so.6 => /usr/local/lib/libXtst.so.6 (0x81095e000)
	libxcb.so.1 => /usr/local/lib/libxcb.so.1 (0x810967000)
	libxkbcommon.so.0 => /usr/local/lib/libxkbcommon.so.0 (0x810994000)
	libgbm.so.1 => /usr/local/lib/libgbm.so.1 (0x8109e2000)
	libXi.so.6 => /usr/local/lib/libXi.so.6 (0x8113e4000)
	libGL.so.1 => /usr/local/lib/libGL.so.1 (0x8113f7000)
	libpci.so.3 => /usr/local/lib/libpci.so.3 (0x811484000)
	libffi.so.8 => /usr/local/lib/libffi.so.8 (0x8109f3000)
	libpangocairo-1.0.so.0 => /usr/local/lib/libpangocairo-1.0.so.0 (0x811499000)
	libpango-1.0.so.0 => /usr/local/lib/libpango-1.0.so.0 (0x8114ab000)
	libcairo.so.2 => /usr/local/lib/libcairo.so.2 (0x811524000)
	libasound.so.2 => /usr/local/lib/libasound.so.2 (0x81166d000)
	libFLAC.so.14 => /usr/local/lib/libFLAC.so.14 (0x811785000)
	libxml2.so.2 => /usr/local/lib/libxml2.so.2 (0x8117e3000)
	libatspi.so.0 => /usr/local/lib/libatspi.so.0 (0x81196c000)
	libxslt.so.1 => /usr/local/lib/libxslt.so.1 (0x8119a9000)
	libxshmfence.so.1 => /usr/local/lib/libxshmfence.so.1 (0x8119ed000)
	libc.so.7 => /lib/libc.so.7 (0x8119f2000)
	libiconv.so.2 => /usr/local/lib/libiconv.so.2 (0x811cde000)
	libpcre2-8.so.0 => /usr/local/lib/libpcre2-8.so.0 (0x811dec000)
	libelf.so.2 => /lib/libelf.so.2 (0x811eb1000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x811eca000)
	libgnutls.so.30 => /usr/local/lib/libgnutls.so.30 (0x811eea000)
	libcrypt.so.5 => /lib/libcrypt.so.5 (0x812129000)
	libfreetype.so.6 => /usr/local/lib/libfreetype.so.6 (0x812139000)
	libsharpyuv.so.0 => /usr/local/lib/libsharpyuv.so.0 (0x812205000)
	libgraphite2.so.3 => /usr/local/lib/libgraphite2.so.3 (0x812211000)
	libc++.so.1 => /lib/libc++.so.1 (0x81223c000)
	libcxxrt.so.1 => /lib/libcxxrt.so.1 (0x81233d000)
	libXau.so.6 => /usr/local/lib/libXau.so.6 (0x81235d000)
	libXdmcp.so.6 => /usr/local/lib/libXdmcp.so.6 (0x812363000)
	libGLdispatch.so.0 => /usr/local/lib/libGLdispatch.so.0 (0x81238c000)
	libGLX.so.0 => /usr/local/lib/libGLX.so.0 (0x812445000)
	libpangoft2-1.0.so.0 => /usr/local/lib/libpangoft2-1.0.so.0 (0x812479000)
	libfribidi.so.0 => /usr/local/lib/libfribidi.so.0 (0x812496000)
	libthai.so.0 => /usr/local/lib/libthai.so.0 (0x8124b7000)
	libxcb-render.so.0 => /usr/local/lib/libxcb-render.so.0 (0x8124c4000)
	libxcb-shm.so.0 => /usr/local/lib/libxcb-shm.so.0 (0x8124d5000)
	libpixman-1.so.0 => /usr/local/lib/libpixman-1.so.0 (0x8124db000)
	librt.so.1 => /lib/librt.so.1 (0x8125a7000)
	libogg.so.0 => /usr/local/lib/libogg.so.0 (0x8125b0000)
	libicudata.so.76 => /usr/local/lib/libicudata.so.76 (0x8011fc000)
	libicui18n.so.76 => /usr/local/lib/libicui18n.so.76 (0x8125bb000)
	libicuuc.so.76 => /usr/local/lib/libicuuc.so.76 (0x812960000)
	liblzma.so.5 => /usr/lib/liblzma.so.5 (0x812b98000)
	libp11-kit.so.0 => /usr/local/lib/libp11-kit.so.0 (0x812bcc000)
	libidn2.so.0 => /usr/local/lib/libidn2.so.0 (0x812d57000)
	libunistring.so.5 => /usr/local/lib/libunistring.so.5 (0x812d8b000)
	libtasn1.so.6 => /usr/local/lib/libtasn1.so.6 (0x812f9a000)
	libhogweed.so.6 => /usr/local/lib/libhogweed.so.6 (0x812fb1000)
	libnettle.so.8 => /usr/local/lib/libnettle.so.8 (0x812ffc000)
	libgmp.so.10 => /usr/local/lib/libgmp.so.10 (0x813053000)
	libbz2.so.4 => /usr/lib/libbz2.so.4 (0x8130d5000)
	libdatrie.so.1 => /usr/local/lib/libdatrie.so.1 (0x8130ec000)
	libmd.so.6 => /lib/libmd.so.6 (0x8130f6000)
	[vdso] (0x7ffffffff000)


For missed libs I use:
pkg check -dnq
+
for __PKG_NAME_VER in `pkg info -aqE`; do
...
	for __PKG_LIB_RAW in `pkg info -Bq "${__PKG_NAME_VER}"`; do
		# Strip lib ver: "libc.so.7:32" -> "libc.so.7"
		__PKG_LIB=`echo "${__PKG_LIB_RAW}" | sed -e 's|:.*||' | tr -d '\n'`
...

Full code: http://netlab.dhis.org/download/software/os_cfg/FBSD/14/base/root/bin/pkg_auto_rebuild.sh



PS: better replacement for: prog="`basename $0`"
THIS_SCRIPT_NAME=`readlink -nf "${0}"`
it resolves any ./../.. and links in script path.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20250316233505.0d3839dc>