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!

By Vincent Danen

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.