Replies: 24 comments 56 replies
-
Could the signature also cover something indicating the package version? |
Beta Was this translation helpful? Give feedback.
-
Is there an actual need to have any extra headers in the payload? The payload could be just raw file content. https://github.com/lnussel/rpm2extents does that in a page aligned way but could also be back-to-back and compressed of course. |
Beta Was this translation helpful? Give feedback.
-
I found this from the rpm.org website on a completely different thing. Will the discussion be only held here or is it on a mailing list also? [And sorry if my questions is obvious but missed] |
Beta Was this translation helpful? Give feedback.
-
Would checking that padding is zeroed be a part of this? What about banning dribbles from the signature header? |
Beta Was this translation helpful? Give feedback.
-
Could we adjust the RPM format so that things like multi-arch RPMs (i.e. RPMs for macOS containing binaries that are universal binaries) could be correctly indicated? That is, instead of assuming that we have a single "arch" for the whole package, we identify the arches per file and collect the arches for identifying system compatibility? |
Beta Was this translation helpful? Give feedback.
-
Where can I read more about this? |
Beta Was this translation helpful? Give feedback.
-
I'm curious if we want to apply this even to the "major" file format version number in the lead? Of all the fields, that one seems like it could eventually have some potential use. |
Beta Was this translation helpful? Give feedback.
This comment was marked as off-topic.
This comment was marked as off-topic.
-
What about inconsistency between repo metadata and in RPMDB with package checksums. Metadata contains file checksum (only one type), but RPMDB contains a header checksum (multiple types). We have some users who wants to align available packages with installed one and there is not enough information stored in DNF, RPM, or repo metadata to do it. NEVRA, repoid is not enough. Repository metadata must contain file checksum for verification as well as the size of file. Adding additional checksum would be possible, but expensive for distribution (compatibility could be also affected). There is possible solution on DNF side - store both checksum types in DNF5 system state, but that information will be not available for packages installed directly by RPM or by Zypper. What kind of option do we have from RPM side? |
Beta Was this translation helpful? Give feedback.
-
Is there any planned change related to changelogs? |
Beta Was this translation helpful? Give feedback.
This comment was marked as off-topic.
This comment was marked as off-topic.
-
How about no longer setting Line 1239 in 93ee7d9 |
Beta Was this translation helpful? Give feedback.
-
Draft updated to v0.02:
Also added a section for open questions, such as the actual format dection. |
Beta Was this translation helpful? Give feedback.
-
re: "crypto modernization", maybe look at supporting SHA-3 checksums? |
Beta Was this translation helpful? Give feedback.
-
Have you considered breaking the main header up into chunks to make using the parallel arrays easier? For example, first have a package section that only has tags that are per package, then have a dependencies section, then have a files section? Separately, should all text strings be specified as containing UTF-8 in Unicode normalization form C (NFC)? |
Beta Was this translation helpful? Give feedback.
-
What about the CLI flags Lines 657 to 660 in 21457de and Lines 683 to 687 in 21457de |
Beta Was this translation helpful? Give feedback.
-
I wonder if there is room to include software supply chain attestation data in this version? I would like to see SLSA Provenance and SBOM (e.g. SPDX) support. |
Beta Was this translation helpful? Give feedback.
-
For the curious, I've started exploring what a v6 package might look like and what work it all entails at https://github.com/pmatilai/rpm/tree/v6gen This is all very early days, and the above branch is unlikely to become any single PR, this is just to get a feel for the work ahead. Bits and pieces from that work are likely to land in the codebase of course, at some point. |
Beta Was this translation helpful? Give feedback.
-
I see use case for having unsigned property headers ignored at installation. Maybe I'm wrong but I think that it is not possible today. Here is what I have in mind: If i get a RPM from a factory and if I want to add some data of my own (data that use crypto on its side for prooving its authenticity) but I want not modify the original RPM. Such property could be used for managing RPMs. It could also be used in plugins for specific action. |
Beta Was this translation helpful? Give feedback.
-
Unrelated (or maybe related) question - why are rpmlib dependencies set with less-than or equal-to the version in which the feature was added? Is trying to express that "if the version is <= this version, rpm needs to be patched with this feature to accept the rpm"? I'm not sure I understand why it wouldn't just check for support of the feature, period (if that is indeed what it's doing). Otherwise I would think it would be trying to express "I need at least this version (greater than) because of this feature" |
Beta Was this translation helpful? Give feedback.
-
From a discussion with @Conan-Kudo
I'm curious whether self-requires are something that could be dropped? |
Beta Was this translation helpful? Give feedback.
-
Likewise for any other directives documented as obsolete, if there's a straightforward replacement. |
Beta Was this translation helpful? Give feedback.
-
There hasn't been much direct activity here recently, but doesn't mean no work has been going on. I'm planning to produce an updated version of the draft in the coming weeks, but the main point is going to be: The overriding priority for V6 is the obsolence of V4 crypto. We need a replacement format now, not in five or ten years time. And to make this happen now, V6 packages will need to be significantly compatible with existing rpm versions to allow existing infrastructure to handle them. This will mean backpedalling a bit on some things - such as zeroing the lead which would achieve absolutely nothing except cause an unnecessary incompatibility. This isn't any big revelation actually, it's just going back to where it started after getting just a little bit carried away for a while: the package level fundamentals are already implemented in rpm >= 4.14, v6 is really more about defaults and dusting dark corners than anything else. The time for more forward-looking changes is after we have v6 out and deployed. Then we can start planning for v7 in the next 5-10 years scale. The 20+ years since v4 was much, much too long. |
Beta Was this translation helpful? Give feedback.
-
There's now what should be much closer to final (but isn't yet, certainly) draft with clarified scope and compatibility info at #2919 Closing this topic as it has served its purpose and is getting too cluttered to follow. |
Beta Was this translation helpful? Give feedback.
-
In the spirit of release early and often, here goes the (admittedly rough) first public draft of the rpm v6 package format that people have seen mentions of here and there. As you'll notice, this will be a relatively conservative update to the format, a facelift if you like, rather than a radical redesign.
Feedback and discussion are welcome and expected. We plan on keeping this thread open for several months to give the relevant parties sufficient time to participate. Please keep in mind that this draft is strictly about the concrete package format of .rpm files, and not a wishlist for rpm v6.0 features.
This initial post and the associated draft version number will be updated as the items get added and the plan grows more detailed.
RPM v6 package format (draft v0.2)
Summary
RPM v6 is a face-lift on the existing RPM package v4 format, not a radical
redesign. The primary motivations for v6 are to bring RPM to this millenium
technology-wise: eliminate long obsolete crypto, ensure sufficiently large
sizes everywhere and shed compatibility babbage from the last 20 years.
The following mainly describes differences to the undocumented v4 format,
the v6 format has to, and will be properly and thoroughly documented.
"Dropped" in the below means: no longer generated or accepted in the v6
format itself. As part of v4 packages, they will remain accepted as long
as v4 is relevant (ie, a long long time).
The last rpm 4.x version will be able to read + install v6 packages.
Rpm v6 will be able to read and install v4 packages, but v3 support
will be dropped.
The fundamental file-format remains the same: an rpm package consists of
Headers
Lead
Signature header
(v3 signatures are no longer generated by default since 4.16)
when all of the above is done
Main header
Payload
Metadata level
mechanism but that's probably out of scope)
Open questions
Beta Was this translation helpful? Give feedback.
All reactions