Collaboration

Save time on downloads with delta RPMs in Fedora 11

Vincent Danen introduces a new feature in Fedora 11 that creates delta RPM packages. A delta RPM will only download the files that have changed compared to the previous RPM package.

Fedora 11 introduced a great new feature: delta RPM updates. This feature creates delta RPM packages (.drpm) that are binary "patches" to the existing RPM packages. Instead of downloading all files, regardless of whether they have changed or not, a delta RPM will only download the files that have changed compared to the previous RPM package.

Once the delta RPM is downloaded by the Presto plugin for yum, it will try to reconstruct a full RPM based on the contents of the previous RPM, plus the newly changed files from the delta RPM. The newly-created RPM will then be installed by yum.

Using Presto has its benefits and drawbacks. If you have a fast Internet connection or are using a local mirror, using Presto doesn't make sense. It would be faster to download the full RPM package instead of downloading the changed parts and consuming CPU time to reconstruct the RPM to install.

If, however, you have a slow Internet connection or you pay-per-byte for your Internet connection, then using Presto makes sense: it will download smaller files which will save time and money.

The savings from Presto will depend largely on the update. If it is an update that introduces a single patch that affects one or two files out of a multi-megabyte package, using Presto will make the download really fast. If it's an upgraded version being provided, most files would likely change meaning that most files will have been changed, and thus downloaded. In a recent update of 27 packages that weighed in at 21MB, using Presto reduced the download size to 14MB, a savings of 7MB or one-third of what the download would have otherwise been.

Using Presto couldn't be easier. All you need to do is install the yum-presto package, which contains the plugin for Presto:

# yum install yum-presto

Once this is done, any subsequent call to yum will use Presto as described above, transparently, and with no further configuration on your part. If you no longer want to use it, you can simply remove the yum-presto package:

# rpm -e yum-presto

Afterwards, the next invocation of yum will act as normal. Presto is not the default in Fedora 11, but my suspicion is that it will be the default in Fedora 12.

Get the PDF version of this tip here.

Delivered each Tuesday, TechRepublic's free Linux and Open Source newsletter provides tips, articles, and other resources to help you hone your Linux skills. Automatically sign up today!

About

Vincent Danen works on the Red Hat Security Response Team and lives in Canada. He has been writing about and developing on Linux for over 10 years and is a veteran Mac user.

2 comments
csmith.kaze
csmith.kaze

Delta packages are pretty cool. I know that there are some drawbacks and don't make sense for the majority of people running Linux, but still is a cool deal. I know a few other distro's are looking into this as well. Question, though. If the primary binary for the package has to be changed, don't you still have to replace the whole thing? In many large packages, wouldn't the primary binary be the largest file? I guess in combined packages like openoffice-base if Writer needed to be updated, you wouldn't have to download the entire 100+ MB again. Almost as cool as the ksplice deal.

vdanen
vdanen

Sure, but you're only replacing the file. In some instances (say a version upgrade) the delta won't help as much because docs may change, binaries and libraries, etc. But if, for instance, it's a back-ported patch for a security update, very little in the package will change so the delta will be much smaller as a result.