Save time on downloads with delta RPMs in Fedora 11

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.