Hilko Bengen
2021-Aug-31 13:24 UTC
[Libguestfs] [PATCH] appliance: Fix searching for shared libraries on usr-merged Debian systems
If /lib is a symlink to usr/lib, paths to shared libraries as
determined by ld.so may differ from dpkg's file lists.
We turn the filename search pattern into a glob expression by
prefixing it with a '*', so the required packages are found again:
$ dpkg -S /lib/x86_64-linux-gnu/libpcre2-8.so.0
dpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/libpcre2-8.so.0
$ dpkg -S */lib/x86_64-linux-gnu/libpcre2-8.so.0
libpcre2-8-0:amd64: /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0
---
appliance/Makefile.am | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/appliance/Makefile.am b/appliance/Makefile.am
index a213e12be4..6dd1df75a6 100644
--- a/appliance/Makefile.am
+++ b/appliance/Makefile.am
@@ -84,7 +84,7 @@ if HAVE_RPM
QUERY_FILES_CMD := xargs rpm -qf --qf '%{name}\n'
endif
if HAVE_DPKG
-QUERY_FILES_CMD := xargs dpkg -S | cut -d: -f1
+QUERY_FILES_CMD := sed -e 's,^/,\*/,' | xargs dpkg -S | cut -d: -f1
endif
if HAVE_PACMAN
QUERY_FILES_CMD := xargs pacman -Qo | sed -r 's/.* is owned by ([^ ]+)
.*/\1/'
--
2.32.0.rc0
Richard W.M. Jones
2021-Aug-31 14:50 UTC
[Libguestfs] [PATCH] appliance: Fix searching for shared libraries on usr-merged Debian systems
On Tue, Aug 31, 2021 at 03:24:08PM +0200, Hilko Bengen wrote:> If /lib is a symlink to usr/lib, paths to shared libraries as > determined by ld.so may differ from dpkg's file lists. > > We turn the filename search pattern into a glob expression by > prefixing it with a '*', so the required packages are found again: > > $ dpkg -S /lib/x86_64-linux-gnu/libpcre2-8.so.0 > dpkg-query: no path found matching pattern /lib/x86_64-linux-gnu/libpcre2-8.so.0 > $ dpkg -S */lib/x86_64-linux-gnu/libpcre2-8.so.0 > libpcre2-8-0:amd64: /usr/lib/x86_64-linux-gnu/libpcre2-8.so.0 > --- > appliance/Makefile.am | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/appliance/Makefile.am b/appliance/Makefile.am > index a213e12be4..6dd1df75a6 100644 > --- a/appliance/Makefile.am > +++ b/appliance/Makefile.am > @@ -84,7 +84,7 @@ if HAVE_RPM > QUERY_FILES_CMD := xargs rpm -qf --qf '%{name}\n' > endif > if HAVE_DPKG > -QUERY_FILES_CMD := xargs dpkg -S | cut -d: -f1 > +QUERY_FILES_CMD := sed -e 's,^/,\*/,' | xargs dpkg -S | cut -d: -f1 > endif > if HAVE_PACMAN > QUERY_FILES_CMD := xargs pacman -Qo | sed -r 's/.* is owned by ([^ ]+) .*/\1/'Thanks, I pushed it. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org