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
Add deltarpm support #433
Comments
The limitations of delta rpms are well known. The rpm part of this would just add the header from the delta rpm to the transaction. But instead of putting the files to disk from the payload it would leave the unchanged files in place and use the previously placed files for the others. So the changes needed in rpm are probably pretty small. But it would save moving all the unchanged data around which makes delta rpms very unattractive right now. Especially as network traffic has become so cheap compared with local IO. |
The beauty of the current way deltarpms are handled is that it's just some funky transport mechanism to get the full rpm. (Though I agree that the payload re-compression is the weak spot.) |
The idea here is to not copy the unchanged files at all. So to not only save the compression but the moving around of most of the data. Sure, we would still need to read and check sum them (twice probably). Yes, this is inherently more risky than reconstructing the original package. But it is also much quicker. |
May be one could construct a package with only the modified (and config) files in the payload. That might only require very minimal changes on the rpm side. And updaters may not even notice... |
This sounds like we'd need a variant of the repackage functionality that rpm used to have a long time ago to be able to generate something that looks like an RPM to generate what's needed to apply the delta. |
Doesn't look like this is happing any time soon. Closing. |
😢 |
Allow rpm to directly process delta rpms. One way would be to have a previous unpack step that places the files on disk with tsid suffixes - just as rpm does during installation. The delta rpm would then be added to the transaction with a special flag. Most operations would be done just like with a normal package. Just during the installation files would not be unpacked. Instead fsmCommit() would move the previously placed files to their final location.
This may need some extra code to remove or not even place the files that are excluded by (command line) options.
This should save a lot of diskspace during updates and also time and IO. This will probably need support from the updaters unless they can be tricked by deltarpm that they are now dealing with proper packages.
The text was updated successfully, but these errors were encountered: