On Saturday 26 April 2008, Mark Knecht wrote:

> I don't buy that it's my issue created by a long time between
> updates. I could turn on any machine that's sitting in a junk heap or
> back room somewhere. It hasn't been powered up in a long time. I log
> in and want to figure out what's in front of me with respect to
> updates. I type emerge sync and portage deletes files. to me that's
> just wrong.

Mark, 

This might be worth discussing. I know you said "enough of this" later 
on but enough users run into conceptually similar issues to make it 
worth while. Examples: someone needs a specific kernel version for some 
hardware and it goes away from portage or weird video cards where only 
ATIs magic from 2005 actually works.

First, let's look at the real source of the problem: using rsync to 
download the tree. To know what will change or what's new portage needs 
a new tree, and there is no summary for that. It really needs two trees 
to run a diff against and it has to be done locally - the rsync server 
is clueless about what you currently have. So basically to tell you 
what will change, portage has to have a new tree which nukes the old 
stuff...

One could write a dual-portage thingy that replicates what you have then 
does emerge --sync, and also has an --undo fetaure for just in case. 
Ughh. One must take account of the portage db, the metacache and other 
bits as well.

So how about something that creates overlays for you? As a wrapper to 
emerge? It could have options to convert various bits of the current 
system to private overlays, and generate a decent cache to speed things 
up (the current state of affairs will not cache a local overlay by 
default so it's really slow). I'm thinking of these things:

- Install every currently installed ebuild to an overlay, or install 
specific ebuilds or specific categories to an overlay.
- Copy an installed ebuild and it's entire installed DEPEND tree to an 
overlay - this is for cases where <arb_lib> is not in world but is 
required as a deep dependency of something that is. The user will 
probably not be aware of this dependency and not having that ebuild 
will break stuff.
- Copy an entire profile to an overlay
- Copy everything in an installed ebuild's SRC_URI (or all installed 
ebuilds) to a different DISTDIR for safety (think ATI driver downloads 
or kernels here)
- Remove old ebuilds and profiles from the overlay that you have since 
upgraded 
- Possibly more

Such a script would do the backup you wished you had done for your 
folks, but only the bits you had installed (not everything), then run 
emerge. You get a good compromise between you needing old stuff to be 
around and the dev's perfectly reasonable desire to not have to support 
old stuff not in common use.

It could be implemented one of these ways:
- a new feature to portage - highly unlikely considering the fear and 
dread that comes with modifying portage in it's current state
- a new feature to paludis - this might be possible as I believe 
paludis' code design is quite sane
- a wrapper around emerge (easiest and most likely to benefit the 
largest numbers if interested users)



-- 
Alan McKinnon
alan dot mckinnon at gmail dot com

-- 
gentoo-user@lists.gentoo.org mailing list

Reply via email to