Re: Re: upgrading 7.2+rawhide -> rh8.0 via grab
Jef Spaleta <[email protected]> 10 Oct 2002 10:21:26 -0400
| Newsgroups | gmane.linux.redhat.rpm.grab |
|---|---|
| Message-ID | <1034259686.31962.32.camel@spatula> |
On Wed, 2002-10-09 at 19:02, Ami Fischman wrote: > Or am I missing something? I think the risky thing is what happens if the provides/requirments lists make an unexpected change..like requirement X is no longer needed in a later version or appears in the version in the new major release you want to upgrade to. And how many loops does grab go through to find the full web of dependancies before it gives up? Algorithm: 0) pass grab a list selected packages to upgrade...the normal grab method of selecting package status (U,u,O,o,N,n) is still valid for this first step.... 1) take the first package in that selected package list and test for dep issues 2) test for missing dependancies/unfillable dependances keep up with missing requirements/provides and affected already installed packages via something just a bit more clever than rpm -q --whatprovides `rpm -q --requires selected-package` 3)search the repositories for updates that fix the provides/requirements or update the affected packages that use to provide/require something that is missing. note: what happens if you find multiple updatable packages? in all your grab servers? Which version do you actually include in the update list...here is where some sort of tiered server list would prove very useful. Because ideally you want to pull support packages from the same server that your original requested a package (step 1) in the event there are multiple "newer" versions of the package available in your big list of grabable servers. Atleast keeping up which which server the original package came from and first look for supporting packages there...regardless of whether they are the "newest" versions of a package. Then follow a tiered server list, so you don't end of in a weird cyclic problem where you need a support pack for a dependance that doesn't really exist anymore in the target repository if you had selected the rpm from the correct source. Having some idea as to which server to prefer packages from is key...becuase you can't just go by version number of the package.. 4) compile a list of all the packages you found in 3 and test them as in step (2) as a group...repeat this until you either hit an unresolvable dep(or your dep finding algorithm asks you to install two versions of the same package..which could happen and is an idication you pulled something from outside the target repository to fill a weirdo dep issue)...or your list of support rpm's for that single request update is complete and shows and not causing any problems. You might want to build in some controlled max number of loops to do here. IF you are trying to resolve nested dependances that are say 10 or more layers nested, you should probably think about it a bit before ask grab to attempt it, then set the maxdepth higher and let grab do it for you. 5) start at step (1) again with the next selected package for upgrade tacked on to the already verified chain of packages (again if the next selected package is a different version than something you have verified as a reasonable support package from a previous loop...error out or drop the selected package as a duplicate...dont try to install two packages of the same name.) 6) once all the selected packages have either been discarded or gone through the support package verification steps...you can download all 132 packages you need to upgrade. -jef
signature.asc
(application/pgp-signature, 232 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.0.6 (GNU/Linux) Comment: For info see http://www.gnupg.org iD8DBQA9pYzmrWLDmRitRZURAqfTAKCWG3UO92GpM2dZzavELiqI4+iD9gCePAS/ ChcLNxVA1KZltrnwIahoHV0= =P1V/ -----END PGP SIGNATURE-----