On 09/20/11 09:12, Alex Alexander wrote:
>> The only real gotcha is if portage is so old that it can't handle the
>> binary packages. However, to get around that we really just need a
>> set of step-wise binary updates for portage itself so that you can
>> sequence it up to something that can install the rest. That will work
>> as long as portage doesn't strictly need a newer dependency. If it
>> needs a newer python or something then we might need to keep a binary
>> package of that lying around - maybe statically linked so that it
>> doesn't go further than a few packages.
That won't work nicely. I've done enough system upgrades to have found
funny issues along the way, for example package.mask getting in the way
or needing a specific package merge order, which won't work if you still
have an older glibc installed.
>> Something like that really just needs a few tarballs and then an
>> up-to-date set of binary stage3 packages. The binary packages could
>> be built at the same time the stage3s are made. And, this is really
>> just a contingency plan so we don't need to mirror all that stuff - we
>> could even just make it torrent-only or something.
> Binary packages are useful, but you can't consider them a true fix to our
> problem. In 2011, having to do all this manual work just to keep a system
> running seems wrong. Especially when there are other solutions that would allow
> you to avoid all that.
I think we can script it away.
We do know the last sync time and the last merge time.
From this we can deduce the next snapshot we want to go to - use
emerge-webrsync to fetch a snapshot (06-2008), emerge -eK system (this
will break a few of the other installed packages), progress to next
snapshot (01-2009), repeat. (I think a 6-month snapshot distance is a
good balance between reliability and speed)
(btw: you can generate most of the binpkgs you need from a stage3
Along the way you will have a few blockers which can mostly be figured
out a priori (coldplug, hal, portage-python, ...) and for the most part
scripted away too.
(Another gotcha: kernel-udev-glibc, at some point you may have to reboot
with a recent enough kernel just to be able to get a working glibc)
Then you've upgraded @system to something from this decade and you can
try updating the rest (which will have its own share of blockers etc)
> Implementing something like my proposal would save a lot of systems with
> minimal cost and make Gentoo more reliable in the public (and corporate) eye.
>> Or we could do what was proposed in the past and say 1 year and you're
>> done. That slows us down a little, but has zero overhead.
> IMHO, waiting for a year to push a serious change is unacceptable. We're a
> bleeding edge meta-distro, I'm sure we can do better ;)
Doesn't need a year. We have all the bits lying around, if I weren't so
lazy I'd have started with a 2006.0 stage3 just to see how much blocker
removal and interaction it needs.
Make it into a nice script and blam, insta-update.