linters: specify which package offers a missing library
Metadata
Current evaluation
Superseded by PR #4430, which was merged. The library linter improvement was replaced by an updated implementation and the request was closed.
Suggested action: —
No scores available.
Issue body
Currently, when an ELF binary in a created snap lacks a required library, snapcraft notifies the user about it; unfortunately, it is the user who has to check which package (if any) includes that/those missing library/libraries.
Since it is common that the "libXXX-dev" package used during build also installs the corresponding "libXXX" package, the missing library is usually installed in the building system. This patch takes advantage of that to search each missing library in the build system and check which package contains that file, appending that information to the warning message.
Here is an example of the new output:
```
Running linter: library
Lint warnings:
- library: usr/bin/gnome-control-center: missing dependency 'libaccountsservice.so.0' (provided by libaccountsservice0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libcrack.so.2' (provided by libcrack2). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libdcerpc-binding.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libgnome-bluetooth-ui-3.0.so.13' (provided by libgnome-bluetooth-ui-3.0-13). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libgtop-2.0.so.11' (provided by libgtop-2.0-11). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libjansson.so.4' (provided by libjansson4). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libldb.so.2' (provided by libldb2). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libmm-glib.so.0' (provided by libmm-glib0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libndr-krb5pac.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libndr-nbt.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libndr-standard.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libndr.so.2' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libnm.so.0' (provided by libnm0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libpwquality.so.1' (provided by libpwquality1). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsamba-credentials.so.1' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsamba-errors.so.1' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsamba-hostconfig.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsamba-util.so.0' (provided by libwbclient0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsamdb.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsmbclient.so.0' (provided by libsmbclient). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsmbconf.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libtalloc.so.2' (provided by libtalloc2). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libtevent-util.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libtevent.so.0' (provided by libtevent0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libudisks2.so.0' (provided by libudisks2-0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libupower-glib.so.3' (provided by libupower-glib3). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libwbclient.so.0' (provided by libwbclient0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libCHARSET3.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libMESSAGING-SEND.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libaddns.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libasn1-samba4.so.8' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libasn1util.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libauthkrb5.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libcli-cldap.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libcli-ldap-common.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libcli-nbt.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libcli-smb-common.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libcliauth.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libclidns.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libcom_err-samba4.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libcommon-auth.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libdbwrap.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libdcerpc-samba.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libflag-mapping.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libgenrand.so.0' (provided by libwbclient0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libgensec.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libgse.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libgssapi-samba4.so.2' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libhcrypto-samba4.so.5' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libheimbase-samba4.so.1' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libhx509-samba4.so.5' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libinterfaces.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libiov-buf.so.0' (provided by libwbclient0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libkrb5-samba4.so.26' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libkrb5samba.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libldbsamba.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'liblibcli-lsa3.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'liblibsmb.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libmessages-dgm.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libmessages-util.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libmsghdr.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libmsrpc3.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libndr-samba.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libreplace.so.0' (provided by libwbclient0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libroken-samba4.so.19' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsamba-debug.so.0' (provided by libwbclient0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsamba-modules.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsamba-security.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsamba-sockets.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsamba3-util.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsamdb-common.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsecrets3.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libserver-id-db.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libserver-role.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsmb-transport.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsmbd-shim.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsocket-blocking.so.0' (provided by libwbclient0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libsys-rw.so.0' (provided by libwbclient0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libtalloc-report-printf.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libtdb-wrap.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libtime-basic.so.0' (provided by libwbclient0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libutil-reg.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libutil-setid.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libutil-tdb.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libwinbind-client.so.0' (provided by libwbclient0). (https://snapcraft.io/docs/linters-library)
- library: usr/bin/gnome-control-center: missing dependency 'libwind-samba4.so.0' (provided by samba-libs). (https://snapcraft.io/docs/linters-library)
- library: usr/lib/x86_64-linux-gnu/libnma-gtk4.so.0.0.0: missing dependency 'libnm.so.0' (provided by libnm0). (https://snapcraft.io/docs/linters-library)
- library: usr/lib/x86_64-linux-gnu/libnma.so.0.0.0: missing dependency 'libnm.so.0' (provided by libnm0). (https://snapcraft.io/docs/linters-library)
- library: usr/libexec/gnome-control-center-goa-helper: missing dependency 'libgoa-backend-1.0.so.1' (provided by libgoa-backend-1.0-1). (https://snapcraft.io/docs/linters-library)
- library: usr/libexec/gnome-control-center-goa-helper: missing dependency 'libsnapd-glib.so.1' (provided by libsnapd-glib1). (https://snapcraft.io/docs/linters-library)
```
- [x] Have you followed the [guidelines for contributing](https://github.com/snapcore/snapcraft/blob/master/CONTRIBUTING.md)?
- [x] Have you signed the [CLA](http://www.ubuntu.com/legal/contributors/)?
- [x] Have you successfully run `make lint`?
- [x] Have you successfully run `pytest tests/unit`?
-----
Evaluation history
| Date | Model | Scores | Action | Summary |
|---|---|---|---|---|
| qwen/qwen3.6-35b-a3b | — | — | Superseded by PR #4430, which was merged. The library linter improvement was replaced by an updated implementation and the request was closed. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Enhanced linter warnings to identify packages providing missing libraries were abandoned due to test failures. The feature was superseded by an improved implementation merged in PR #4430. | |
| qwen3.6-35b-a3b-mtp-q6 | — | — | Superseded by merged PR #4430. A contributor submitted an improved implementation of the linter enhancement to identify missing library packages, which was accepted and merged, closing this request. |
Update history
No update history recorded yet.
Related issues
| Issue | Project | State | Summary | Similarity |
|---|---|---|---|---|
| #4430 feat(linter): show missing libraries corresponding package | snapcraft | merged | Merged into main. Enhances the linter to show the corresponding package for missing libraries. Approved by two reviewers, passed CI, and modified 3 files with 154 additions and 4 deletions. | |
| #3872 linters: add missing library linter | snapcraft | merged | Merged changes add a missing library linter to list ELF dependencies in the payload directory and fix filename filtering in the classic linter. Approved, passed CI, and increased coverage by 0.02%. |