On 4/10/06, Jesse Keating <jkeating(a)redhat.com> wrote:
SuSE can do something like this as I do believe they run all the
mirrors. Since Fedora is open and we allow redistribution, we have no
control over the majority of the mirrors that carry our bits. This
means that mirrors could be Unix, could be Windows, could be Linux,
could be OSX, could be anything. Delta RPMS require the server to have
some infrastructure in place to produce them on the fly, OR they have to
carry deltas from every possible entry point. This could easily
increase the amount of data a mirror would have to carry by an order of
magnitude. Not very cool when we're already at multiple gigabites just
for each Core release.
Whether or not an rpm is provided in delta format could be decided
automatically so as not to exceed a certain percentage of the size of
packages. This would mean that, for example, the size needed by a
mirror would not increase by more than 10%. The reduction in bandwidth
requirements could be much more than that.
They shouldn't need to be generated on the fly. Maybe SuSE generate
theirs server-side, but I don't see why a delta rpm would need this to
work.
I have yet to see a proposal for doing Delta rpm like actions that
wouldn't cause extreme pain to the mirroring system, which we are very
dependent on.
Would the following cause pain for the mirroring system?:
- If changes to a package are less than x% of the size of the original
package, a diff rpm is made (and distributed through the mirror
system.)
- If the changes from one upgrade are much less than x% of the
original package, diff rpms could be provided for more than one
version upgrade (ie, for version 5 to 6, and from 6 to 7).
- More common packages could be weighted to have a higher % diff
allowance than less common packages.
- Metadata containing a list of diff packages provided along with
lists of files replaced or modified is distributed through the
mirrors.
- The package updater checks to see that local files match the
currently installed version, and if files other than provided by the
diff package have been modified, the full rpm is downloaded instead.
- The diff rpms contain a combination of binary diffs, text diffs and
file replacements or new files, along with the usual metadata and
post/pre/etc scripts. The rest of the information that would be found
in the full rpm is already verified to exist locally. The package is
compressed and signed as usual. If for some reason the upgrade fails,
the full rpm can be downloaded and tried.
n0dalus.