From 29e8480de3b168ecfef72d99eb8ada465ba31f6d Mon Sep 17 00:00:00 2001 From: Jonathan Dieter Date: Thu, 29 Mar 2007 11:44:05 +0300 Subject: Fix autodownload of public gpg keys. Fix README. Signed-off-by: Jonathan Dieter --- ChangeLog | 5 +++++ README | 37 ++++++++++++++++++------------------- shared/prestoDownload.py | 6 ++++-- 3 files changed, 27 insertions(+), 21 deletions(-) diff --git a/ChangeLog b/ChangeLog index 624c2d7..7f57c2a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +* Thu Mar 29 2007 Jonathan Dieter - 0.3.1 + - Minor fix so yum doesn't die when download fails + - Minor fix to allow public keys to be imported properly + - Update README + * Wed Mar 28 2007 Jonathan Dieter - 0.3.0 - Massive changes to downloading structure - When unable to rebuild drpm, we now download full rpm diff --git a/README b/README index e37f369..7fdea95 100644 --- a/README +++ b/README @@ -1,27 +1,26 @@ Presto: A project to add delta rpm support into yum for Fedora users https://hosted.fedoraproject.org/projects/presto/wiki/WikiStart -Most of the code base has been written by Marcel Hild as -up2date/satellite-server delta rpm support. Code adaptation for yum done by -Ahmed Kamal . Support for storing repository -information added by Jonathan Dieter Installation: ============= -1- Make sure deltarpm is installed on your system (yum -y install deltarpm) -2- Place the files in the following locations: - share-presto => /usr/share/presto/* - presto.py => /usr/lib/yum-plugins/presto.py - presto.conf => /etc/yum/pluginconf.d/presto.conf) -3- Use makerepo/createdeltarepo.py to create a Presto repository on top of a - normal yum repository. - NOTE: createdeltarepo.py will NOT change any files created by createrepo -4- In your repository conf file, set deltaurl to point to your Presto - repository (in most cases, it will be the same as baseurl). -5- Now install an old rpm from your repo using rpm, then try updating it using - yum. The plugin should kick in, try to download the drpm, reconstruct the - full rpm, and yum should install that +1- Install yum-presto on your system (yum -y install yum-presto) +2- Now install an old rpm from updates or extras using rpm, then try updating + it using yum. The plugin should kick in, try to download the drpm, + reconstruct the full rpm, and yum should install that. Notes: -===== -- The code is in an early stage. Minimal testing has been done. +====== +Presto will read the deltaurl from two possible locations: +1. The repository's .repo file ("deltaurl = http://repository.com") +2. Appended to /etc/yum/pluginconf.d/presto.conf in the form: + [repository] + deltaurl = http://repository.com +Presto.conf has the following options in [main]: +keepdeltas=1 Always keep deltas in cache no matter what keepcache + is set to. +neverkeepdeltas=1 Always remove deltas after creating full rpms. +exitondownloadfailure=0|1 If there is a problem downloading the deltarpm, exit + rather than trying to download the full rpm. +Note: If you specify neither keepdeltas nor neverkeepdeltas, presto will follow + the keepcache option in yum.conf. diff --git a/shared/prestoDownload.py b/shared/prestoDownload.py index 45318ba..340ad1c 100644 --- a/shared/prestoDownload.py +++ b/shared/prestoDownload.py @@ -117,6 +117,7 @@ def downloadPkgs(conduit, pkglist): adderror(po, str(e)) else: rebuild_pkgs.append(po) + po.simple['deltalocalpath'] = deltalocal if errors.has_key(po): del errors[po] @@ -128,7 +129,6 @@ def downloadPkgs(conduit, pkglist): del po.simple['realpackagesize'] del po.simple['realrelativepath'] del po.simple['reallocalpath'] - po.simple['deltalocalpath'] = deltalocal # Rebuild rpms from downloaded deltarpms for po in rebuild_pkgs: @@ -145,7 +145,9 @@ def downloadPkgs(conduit, pkglist): pass else: # Set package type to local, so yum doesn't try to download it later - po.pkgtype = "local" + # po.pkgtype = "local" # If we set this, we can't auto-install public keys + # and yum is smart enough to detect the full rpm and + # not redownload it. # Check to see whether or not we should keep the drpms # FIXME: Is there any way to see whether or not a Boolean option was not set? -- cgit