on Fri, Nov 16, 2001 at 02:12:45PM -0600, Donald R. Spoon ([EMAIL PROTECTED]) wrote: > Noah Meyerhans wrote: > > > > --snip-- < > > This is occurring because you're trying to update your system while the > > mirror is itself updating its archive. > > > > In the Debian mirroring scheme, Packages files often end up being > > updated before the actual package files. So it's not uncommon for a > > Packages file to refer to foo_1.2.3-1_i386.deb before that package > > actually exists in the archive. > > > > This situation doesn't typically last long, and is corrected as soon as > > the mirror has finished updating. > > > > I have also seen this happen for longer periods of time in the even that > > a mirror's disk fills up and its archive is not in a consistant state. > > I know this has happened at least once with one of the machines that > > comprises http.us.debian.org. > > > > noah > > Sounds quite plausable to me. Thanks! > > Is there any way to determine this situation "up-front" in the > process? The reason I ask is that I have about 5 computers I am > trying to keep updated here. Doing each one manually each day coupled > with the "re-trys" is getting to be quite a PITA. It is a good thing > I am retired, but the wife is getting a little peeved. <g> > > I have been toying with the idea of setting up a cron job to do the > updates, but I haven't figured out a satisfactory way to detect this > condition and abort the update then try again a bit later. > > Maybe a script that checks for the presence of this error code and > then exits without completing + logged message to that effect?? I > guess you could set the timing of the cron job that calls this script > such that it gives the delay you want...dunno.
My own fix is as follows. First, for your five systems, a local mirror, or (my preference) a large squid archive tuned to archive large (e.g.: 10-60 MB) files will speed sequential updates. Set this up as a transparent proxy on your gateway box. For a recursive request, I run the following, currently only from command line, though I'm considering adding it to my apt-get cron job: sleeptime=<seconds> # say, several minutes apt-get update i=1 # initialize a counter # Keep trying until successful while ! echo y | apt-get -d dist-upgrade do sleep $sleeptime # wait for the problem to go away i=$(( i + 1 )) # increment counter.... apt-get update # check for updated packges, in case done echo "Iterations: $i" ...which will continue until successful. Set your 'sleeptime' to something sane. I figure 1-10 minutes is reasonable. If you want to let your other boxen know when the archive's been pulled, you can set up a semaphore. Actually, this doesn't much matter as once you've pulled a particular file, the other boxes should pick it up from the local cache. Peace. -- Karsten M. Self <kmself@ix.netcom.com> http://kmself.home.netcom.com/ What part of "Gestalt" don't you understand? Home of the brave http://gestalt-system.sourceforge.net/ Land of the free Free Dmitry! Boycott Adobe! Repeal the DMCA! http://www.freesklyarov.org Geek for Hire http://kmself.home.netcom.com/resume.html
pgpCoTYBUXoB0.pgp
Description: PGP signature