-
Notifications
You must be signed in to change notification settings - Fork 145
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[todo] check rpmlint warnings and errors on packages #639
Comments
More details can be found in https://fedoraproject.org/wiki/Common_Rpmlint_issues Quick look at some of the warnings/errors:
https://fedoraproject.org/wiki/Common_Rpmlint_issues#description-line-too-long
https://fedoraproject.org/wiki/Common_Rpmlint_issues#no-documentation
https://fedoraproject.org/wiki/Common_Rpmlint_issues#unstripped-binary-or-object
(that description feels incorrect; need to search if it's wrong, and if there's another description) Also some errors about binaries being statically linked:
For the "cli" binaries, that's probably fine / expected (although we would link them dynamically). Not sure about the shim binaries; should they be static? |
For the "no docs" issue; for the CLI we're adding the LICENSE, NOTICE, README.md, and MAINTAINERS as docs; perhaps we should do the same for the other packages;
|
Ah! Running with (the "unknown key" errors are expected; this was running inside a container, and I didn't install the GPG key) rpmlint -v ./*.rpm
========================================================================================== rpmlint session starts ==========================================================================================
rpmlint: 2.2.0
configuration:
/usr/lib/python3.10/site-packages/rpmlint/configdefaults.toml
/etc/xdg/rpmlint/fedora.toml
/etc/xdg/rpmlint/licenses.toml
/etc/xdg/rpmlint/scoring.toml
/etc/xdg/rpmlint/users-groups.toml
/etc/xdg/rpmlint/warn-on-functions.toml
checks: 32, packages: 6
containerd.io.x86_64: W: unstripped-binary-or-object /usr/bin/runc
docker-ce.x86_64: W: unstripped-binary-or-object /usr/bin/docker-proxy
docker-ce.x86_64: W: unstripped-binary-or-object /usr/bin/dockerd
docker-ce-cli.x86_64: W: unstripped-binary-or-object /usr/bin/docker
docker-ce-cli.x86_64: W: unstripped-binary-or-object /usr/libexec/docker/cli-plugins/docker-buildx
docker-ce-rootless-extras.x86_64: W: unstripped-binary-or-object /usr/bin/rootlesskit
docker-ce-rootless-extras.x86_64: W: unstripped-binary-or-object /usr/bin/rootlesskit-docker-proxy
This executable should be stripped from debugging symbols, in order to take
less space and be loaded faster. This is usually done automatically at
buildtime by rpm.
containerd.io.x86_64: E: unknown-key 621e9f35
docker-ce.x86_64: E: unknown-key 621e9f35
docker-ce-cli.x86_64: E: unknown-key 621e9f35
docker-ce-rootless-extras.x86_64: E: unknown-key 621e9f35
docker-compose-plugin.x86_64: E: unknown-key 621e9f35
docker-scan-plugin.x86_64: E: unknown-key 621e9f35
The package was signed, but with an unknown key. See the rpm --import option
for more information.
containerd.io.x86_64: E: statically-linked-binary /usr/bin/containerd-shim
containerd.io.x86_64: E: statically-linked-binary /usr/bin/containerd-shim-runc-v1
containerd.io.x86_64: E: statically-linked-binary /usr/bin/containerd-shim-runc-v2
docker-ce.x86_64: E: statically-linked-binary /usr/bin/docker-init
docker-compose-plugin.x86_64: E: statically-linked-binary /usr/libexec/docker/cli-plugins/docker-compose
docker-scan-plugin.x86_64: E: statically-linked-binary /usr/libexec/docker/cli-plugins/docker-scan
The package installs a statically linked binary or object file.
containerd.io.x86_64: W: self-obsoletion containerd obsoletes containerd
containerd.io.x86_64: W: self-obsoletion runc obsoletes runc
The package obsoletes itself. This is known to cause errors in various tools
and should thus be avoided, usually by using appropriately versioned Obsoletes
and/or Provides and avoiding unversioned ones.
containerd.io.x86_64: W: position-independent-executable-suggested /usr/bin/containerd-shim
containerd.io.x86_64: W: position-independent-executable-suggested /usr/bin/containerd-shim-runc-v1
containerd.io.x86_64: W: position-independent-executable-suggested /usr/bin/containerd-shim-runc-v2
docker-ce.x86_64: W: position-independent-executable-suggested /usr/bin/docker-init
docker-ce-cli.x86_64: W: position-independent-executable-suggested /usr/libexec/docker/cli-plugins/docker-app
docker-ce-cli.x86_64: W: position-independent-executable-suggested /usr/libexec/docker/cli-plugins/docker-buildx
docker-compose-plugin.x86_64: W: position-independent-executable-suggested /usr/libexec/docker/cli-plugins/docker-compose
docker-scan-plugin.x86_64: W: position-independent-executable-suggested /usr/libexec/docker/cli-plugins/docker-scan
This executable should be position independent (all binaries should). Check
that it is built with -fPIE/-fpie in compiler flags and -pie in linker flags.
docker-ce.x86_64: W: obsolete-not-provided docker-ce-selinux
docker-ce.x86_64: W: obsolete-not-provided docker-engine
docker-ce.x86_64: W: obsolete-not-provided docker-engine-selinux
If a package is obsoleted by a compatible replacement, the obsoleted package
should also be provided in order to not cause unnecessary dependency breakage.
If the obsoleting package is not a compatible replacement for the old one,
leave out the Provides.
docker-ce-cli.x86_64: E: non-executable-script /usr/share/bash-completion/completions/docker 644 /usr/bin/env bash
This text file contains a shebang or is located in a path dedicated for
executables, but lacks the executable bits and cannot thus be executed. If the
file is meant to be an executable script, add the executable bits, otherwise
remove the shebang or move the file elsewhere.
containerd.io.x86_64: W: no-manual-page-for-binary containerd-shim
containerd.io.x86_64: W: no-manual-page-for-binary containerd-shim-runc-v1
containerd.io.x86_64: W: no-manual-page-for-binary containerd-shim-runc-v2
containerd.io.x86_64: W: no-manual-page-for-binary runc
docker-ce.x86_64: W: no-manual-page-for-binary docker-init
docker-ce.x86_64: W: no-manual-page-for-binary docker-proxy
docker-ce.x86_64: W: no-manual-page-for-binary dockerd
docker-ce-rootless-extras.x86_64: W: no-manual-page-for-binary dockerd-rootless-setuptool.sh
docker-ce-rootless-extras.x86_64: W: no-manual-page-for-binary dockerd-rootless.sh
docker-ce-rootless-extras.x86_64: W: no-manual-page-for-binary rootlesskit
docker-ce-rootless-extras.x86_64: W: no-manual-page-for-binary rootlesskit-docker-proxy
Each executable in standard binary directories should have a man page.
docker-ce.x86_64: W: no-documentation
docker-ce-rootless-extras.x86_64: W: no-documentation
docker-compose-plugin.x86_64: W: no-documentation
docker-scan-plugin.x86_64: W: no-documentation
The package contains no documentation (README, doc, etc). You have to include
documentation files.
docker-ce.x86_64: E: no-changelogname-tag
docker-ce-cli.x86_64: E: no-changelogname-tag
docker-ce-rootless-extras.x86_64: E: no-changelogname-tag
docker-compose-plugin.x86_64: E: no-changelogname-tag
docker-scan-plugin.x86_64: E: no-changelogname-tag
There is no changelog. Please insert a '%changelog' section heading in your
spec file and prepare your changelog entry using e.g. the 'rpmdev-bumpspec'
command.
containerd.io.x86_64: W: manpage-not-compressed gz /usr/share/man/man5/containerd-config.toml.5
containerd.io.x86_64: W: manpage-not-compressed gz /usr/share/man/man8/containerd-config.8
containerd.io.x86_64: W: manpage-not-compressed gz /usr/share/man/man8/containerd.8
containerd.io.x86_64: W: manpage-not-compressed gz /usr/share/man/man8/ctr.8
This manual page is not compressed with the gz compression method
(does not have the gz extension). If the compression does not happen
automatically when the package is rebuilt, make sure that you have the
appropriate rpm helper and/or config packages for your target distribution
installed and try rebuilding again; if it still does not happen automatically,
you can compress this file in the %install section of the spec file.
containerd.io.x86_64: E: explicit-lib-dependency libseccomp
docker-ce.x86_64: E: explicit-lib-dependency libcgroup
You must let rpm find the library dependencies by itself. Do not put unneeded
explicit Requires: tags.
docker-ce-rootless-extras.x86_64: W: empty-%preun
docker-compose-plugin.x86_64: W: empty-%preun
docker-scan-plugin.x86_64: W: empty-%preun
docker-ce-rootless-extras.x86_64: W: empty-%postun
docker-compose-plugin.x86_64: W: empty-%postun
docker-scan-plugin.x86_64: W: empty-%postun
docker-ce-rootless-extras.x86_64: W: empty-%post
docker-compose-plugin.x86_64: W: empty-%post
docker-scan-plugin.x86_64: W: empty-%post
docker-ce.x86_64: E: description-line-too-long they can run anywhere, from your laptop to the largest cloud compute instance and
docker-ce-cli.x86_64: E: description-line-too-long they can run anywhere, from your laptop to the largest cloud compute instance and
Your description lines must not exceed 80 characters. If a line is exceeding
this number, cut it to fit in two lines.
========================================================= 6 packages and 0 specfiles checked; 22 errors, 48 warnings, 22 badness; has taken 12.6 s ========================================================= |
We should look at the rpmlint warnings and errors on the RPMs; some of them look like "easy fixes", others are bit unclear (need to look into the meaning of each of those);
On CentOS 7
CentOS 7: docker-ce-cli
CentOS 7: docker-compose-plugin
curl -fsSLO https://download-stage.docker.com/linux/centos/7/x86_64/stable/Packages/docker-compose-plugin-2.3.1-3.el7.x86_64.rpm rpmlint ./docker-compose-plugin-2.3.1-3.el7.x86_64.rpm docker-compose-plugin.x86_64: E: no-changelogname-tag docker-compose-plugin.x86_64: E: statically-linked-binary /usr/libexec/docker/cli-plugins/docker-compose docker-compose-plugin.x86_64: W: no-documentation docker-compose-plugin.x86_64: E: unknown-key (MD5 docker-compose-plugin.x86_64: W: empty-%post docker-compose-plugin.x86_64: W: empty-%preun docker-compose-plugin.x86_64: W: empty-%postun 1 packages and 0 specfiles checked; 3 errors, 4 warnings.
CentOS 7: docker-scan-plugin
curl -fsSLO https://download-stage.docker.com/linux/centos/7/x86_64/stable/Packages/docker-scan-plugin-0.9.0-3.el7.x86_64.rpm rpmlint ./docker-scan-plugin-0.9.0-3.el7.x86_64.rpm docker-scan-plugin.x86_64: E: no-changelogname-tag docker-scan-plugin.x86_64: E: statically-linked-binary /usr/libexec/docker/cli-plugins/docker-scan docker-scan-plugin.x86_64: W: no-documentation docker-scan-plugin.x86_64: E: unknown-key (MD5 docker-scan-plugin.x86_64: W: empty-%post docker-scan-plugin.x86_64: W: empty-%preun docker-scan-plugin.x86_64: W: empty-%postun 1 packages and 0 specfiles checked; 3 errors, 4 warnings.
CentOS 7: docker-ce
curl -fsSLO https://download-stage.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-20.10.13-3.el7.x86_64.rpm rpmlint ./docker-ce-20.10.13-3.el7.x86_64.rpm docker-ce.x86_64: E: explicit-lib-dependency libcgroup docker-ce.x86_64: E: description-line-too-long C they can run anywhere, from your laptop to the largest cloud compute instance and docker-ce.x86_64: E: no-changelogname-tag docker-ce.x86_64: W: obsolete-not-provided docker-ce-selinux docker-ce.x86_64: W: obsolete-not-provided docker-engine-selinux docker-ce.x86_64: W: obsolete-not-provided docker-engine docker-ce.x86_64: W: unstripped-binary-or-object /usr/bin/dockerd docker-ce.x86_64: W: unstripped-binary-or-object /usr/bin/docker-proxy docker-ce.x86_64: E: statically-linked-binary /usr/bin/docker-init docker-ce.x86_64: W: only-non-binary-in-usr-lib docker-ce.x86_64: W: no-documentation docker-ce.x86_64: W: no-manual-page-for-binary docker-proxy docker-ce.x86_64: W: no-manual-page-for-binary docker-init docker-ce.x86_64: W: no-manual-page-for-binary dockerd docker-ce.x86_64: E: unknown-key (MD5 1 packages and 0 specfiles checked; 5 errors, 10 warnings.
CentOS 7: docker-ce-rootless-extras
curl -fsSLO https://download-stage.docker.com/linux/centos/7/x86_64/stable/Packages/docker-ce-rootless-extras-20.10.13-3.el7.x86_64.rpm rpmlint ./docker-ce-rootless-extras-20.10.13-3.el7.x86_64.rpm docker-ce-rootless-extras.x86_64: E: no-changelogname-tag docker-ce-rootless-extras.x86_64: W: unstripped-binary-or-object /usr/bin/rootlesskit-docker-proxy docker-ce-rootless-extras.x86_64: W: unstripped-binary-or-object /usr/bin/rootlesskit docker-ce-rootless-extras.x86_64: W: no-documentation docker-ce-rootless-extras.x86_64: W: no-manual-page-for-binary dockerd-rootless.sh docker-ce-rootless-extras.x86_64: W: no-manual-page-for-binary dockerd-rootless-setuptool.sh docker-ce-rootless-extras.x86_64: W: no-manual-page-for-binary rootlesskit docker-ce-rootless-extras.x86_64: W: no-manual-page-for-binary rootlesskit-docker-proxy docker-ce-rootless-extras.x86_64: E: unknown-key (MD5 docker-ce-rootless-extras.x86_64: W: empty-%post docker-ce-rootless-extras.x86_64: W: empty-%preun docker-ce-rootless-extras.x86_64: W: empty-%postun 1 packages and 0 specfiles checked; 2 errors, 10 warnings.
CentOS 7: containerd.io
On Fedora 35
Checking on Fedora 35 (more current version of RPM)
Fedora 35: docker-ce-cli
Fedora 35: docker-compose-plugin
Fedora 35: docker-scan-plugin
Fedora 35: docker-ce
Fedora 35: docker-ce-rootless-extras
Fedora 35: containerd.io
The text was updated successfully, but these errors were encountered: