Re: F36 Change: Package information on ELF objects (System-Wide Change proposal)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



> == Owner ==
> * Name: [[User:Zbyszek|Zbigniew Jędrzejewski-Szmek]]
> * Email: zbyszek@xxxxxxxxx
> * Name: Lennart Poettering
> * Email: mzsrqben@xxxxxxxxxxxx

> All binaries (executables and shared libraries) are annotated with an
> ELF note that identifies the rpm for which this file was built. This
> allows binaries to be identified when they are distributed without any
> of the rpm metadata. `systemd-coredump` uses this to log package
> versions when reporting crashes.

This feature was rejected, and rightfully so. Resubmitting it for the very 
next release is not a constructive thing to do.

> == Detailed Description ==
> People mix binaries (programs and libraries) from different
> distributions

Mixing binaries from different distributions has always been a bad idea.

> (for example using Fedora containers on Debian or vice versa),

Containers ought to include the (guest) distribution's package database. 
Everything else is just broken and needs to be fixed.

> and distribute binaries without packaging metadata (for example by
> stripping everything except the binary from a container image, also
> removing `/usr/lib/.build-id/*`)

In the vast majority of cases, it is actually illegal to do so. Most 
software in Fedora is under copyleft licenses that requires distributors to 
include the complete source code, including build scripts, which in practice 
means the SRPM. Distributing just the binary ripped from an RPM package, 
without any pointer as to where it comes from, is a blatant violation of any 
such copyleft license.

> compile their own rpm packages (for internal distribution and
> installation)

Then the binary will be tracked by the RPM database, and this feature is not 
of any use in that use case.

> and compile and distribute their own binaries.

In which case it is entirely irrelevant whether Fedora binaries include the 
proposed metadata or not. It is the decision of whoever compiles the 
binaries whether and how to annotate them.

> === Why not just use the rpm database? ===
> 
> <pre>
> 17:34:33 <dcantrell> The main reason for this appears to be that we
> need the RPM db locally to resolve build-ids to package names. But
> since containers wipe /var/lib/rpm, we can't do that. So the solution
> is to put the ''nevra'' in ELF metadata?
> 17:34:39 <dcantrell> That feels like the wrong approach.
> </pre>
> 
> First, there are legitimate reasons to strip packaging metadata from
> images. For example, for an initrd image from rpms, I get 117 MB of
> files (without compression), and out of this `/var/lib/rpm` is 5.9 MB,
> and `/var/lib/dnf` is 4.2 MB. This is an overhead of 9%. This is ''not
> much'', but still too much to keep in the image unless necessary.
> Similar ratios will happen for containers of similar size. Reducing
> image size by one tenth is important. There is no `rpm` or `dnf` in
> the image, to the package database is not even usable without external
> tools.

So you propose to add bloat to all ELF binaries for everyone so that people 
can delete an integral part of a working Fedora installation to save some 
space? How is that a reasonable tradeoff?

> As discussed on IRC
> 
(https://meetbot.fedoraproject.org/teams/fesco/fesco.2021-05-11-17.01.log.html),
> the containers ''we'' build don't wipe this metadata, but custom
> Dockerfiles do that.

And those Dockerfiles are broken, any bug reports from them (i.e., where the 
package information is missing in the report) should be closed as 
INSUFFICIENT_DATA immediately.

> Second, as described in Description section above, not everybody and
> everything uses rpm. The Fedora motto is "we make an operating system
> and we make it easy for you to do useful stuff with it" (and yes, this
> is an actual quote from the official docs), and this stuff involves
> reusing our binaries in containers and custom installations and
> whatnot, not just straightforward installations with `dnf`. And in the
> other direction, people will build their own binaries that are not
> packaged as rpms. But it is still important to be able to figure out
> the exact version of a binary, especially after it crashes.

See above: If they build their own non-RPM binaries, what difference does it 
make whether we enable those annotations for the binaries built as part of 
our RPMs? Whether our binaries are annotated and whether their binaries are 
annotated are entirely orthogonal decisions made by who builds each binary.

> https://hpc.guix.info/blog/2021/09/whats-in-a-package/ contains a nice
> description of a pathological case of packaging hacks and binary
> redistribution. When trying to unravel something like this,
> information embedded directly in the binaries would be quite useful.

As explained above, those upstreams are illegally redistributing the library 
binaries. Why should we do anything that helps them do that?

Incidentally, this is also why we need to package software properly in 
Fedora instead of pointing users to distro-within-the-distro tools such as 
pip that reinvent the packaging wheel and have no good way to deliver 
compiled C/C++ dependencies. (They can only either build everything from 
souce on the user's machine or ship some blob compiled somewhere on some 
distribution, because they do not integrate with the native RPM packaging 
and so cannot use the C/C++ libraries Fedora ships.)

        Kevin Kofler
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx
Do not reply to spam on the list, report it: https://pagure.io/fedora-infrastructure




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux