Control: retitle -1 lintian: Remove tag library-not-linked-against-libc Hi,
> So probably we need an update for our QA tools to do a better detection of > dynamically linked binaries. Lintian cannot detect this tag reliably. It should probably be removed. Like many other dependency-type problems in Debian, the analysis of library prerequisites requires a tool with an archive-wide perspective. The Lintian team may eventually be able to provide something on lintian.d.o, but the stand-alone program 'lintian' cannot do it. In the case of fwupd, Lintian sees the following, immediate library requirements: % readelf -WltdVs dir/usr/lib/x86_64-linux-gnu/fwupd-plugins-3/libfu_plugin_uefi_recovery.so ... 0x0000000000000001 (NEEDED) Shared library: [libfwupd.so.2] 0x0000000000000001 (NEEDED) Shared library: [libfwupdplugin.so.1] 0x0000000000000001 (NEEDED) Shared library: [libgobject-2.0.so.0] 0x0000000000000001 (NEEDED) Shared library: [libglib-2.0.so.0] ... while ldd resolves the whole tree: % ldd dir/usr/lib/x86_64-linux-gnu/fwupd-plugins-3/libfu_plugin_uefi_recovery.so linux-vdso.so.1 (0x00007ffd7ebca000) libfwupd.so.2 => /lib/x86_64-linux-gnu/libfwupd.so.2 (0x00007fea01bce000) libfwupdplugin.so.1 => not found libgobject-2.0.so.0 => /lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007fea01b79000) libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fea01a5a000) libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007fea0189c000) libsoup-2.4.so.1 => /lib/x86_64-linux-gnu/libsoup-2.4.so.1 (0x00007fea0180c000) libjson-glib-1.0.so.0 => /lib/x86_64-linux-gnu/libjson-glib-1.0.so.0 (0x00007fea017e0000) * libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fea0161f000) libffi.so.6 => /lib/x86_64-linux-gnu/libffi.so.6 (0x00007fea01615000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fea015f4000) libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fea01580000) libgmodule-2.0.so.0 => /lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007fea0157a000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fea0135a000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fea01355000) libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007fea012f6000) libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fea010ce000) libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fea010b4000) libgssapi_krb5.so.2 => /lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007fea01067000) libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007fea00ebc000) libsqlite3.so.0 => /lib/x86_64-linux-gnu/libsqlite3.so.0 (0x00007fea00d9a000) libpsl.so.5 => /lib/x86_64-linux-gnu/libpsl.so.5 (0x00007fea00d87000) /lib64/ld-linux-x86-64.so.2 (0x00007fea01c1d000) libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007fea00d32000) librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fea00d28000) libkrb5.so.3 => /lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007fea00c46000) libk5crypto.so.3 => /lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007fea00c12000) libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007fea00c0c000) libkrb5support.so.0 => /lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007fea00bfd000) libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007fea00bf6000) libicui18n.so.63 => /lib/x86_64-linux-gnu/libicui18n.so.63 (0x00007fea0091b000) libicuuc.so.63 => /lib/x86_64-linux-gnu/libicuuc.so.63 (0x00007fea0074a000) libicudata.so.63 => /lib/x86_64-linux-gnu/libicudata.so.63 (0x00007fe9fed5a000) liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fe9fed32000) libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fe9febaf000) libidn2.so.0 => /lib/x86_64-linux-gnu/libidn2.so.0 (0x00007fe9feb90000) libunistring.so.2 => /lib/x86_64-linux-gnu/libunistring.so.2 (0x00007fe9fea0c000) libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007fe9fea01000) libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fe9fe87d000) libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fe9fe863000) As one can see, the dynamic linker makes libc.so.6 available indirectly, but that analysis is possible only on a running system. Another approach would be to scan all shared libraries in the archive and construct the dependency tree. Both are outside Lintian's purview. The bootstrapping folks occasionally approach the Lintian team with requests for similar analysis. Their solution will also require a portfolio-type approach, and a new tool. Let's call it 'detaxification' for now. It resolves dependencies. > lintian generates false positives for library-not-linked-against-libc after > gcc-7 7.3.0-16 Perhaps the previous title of the bug report is valuable for posterity. Kind regards Felix Lechner