Portage internals : shadow root
On 09/23/10 11:50:19, Alan McKinnon wrote:
> Apparently, though unproven, at 10:55 on Thursday 23 September 2010,
> Helmut
> Jarausch did opine thusly:
>
> > Hi,
> >
> > when portage installs a package, it first installs it into some
> "shadow
> > root". Then it records all files installed before it moves the
> files
> to
> > the "real root".
> >
> > I have to do some installations on SUSE systems (which are not
> > administered by me) and I'd like to imitate that procedure there.
> >
> > Can anybody tell me if it's not too complicated and if yes, how to
> > achieve this (on a foreign system like SUSE).
> >
> > Many thanks for your help,
> > Helmut.
>
>
> 1. Remove all traces of yast and it's bastard brethren from the SuSE
> box.
> 2. Have three qualified sysadmins double check that you have indeed
> removed
> every last trace of it.
> 3. PREFIX=/some/stage/dir/
> 4. ./configure && make && make install
> 5. find /some/stage/dir/ > some_file
> 6. move everything in stage dir to real dir
>
> Why remove yast?
> Because it's a sneaky P.O.S. and goes to extraordinary lengths to
> nuke
> all
> your hard work done without it.
>
> And how you deal with file collisions is up to you. Yast really won't
> like you
> if you overwrite some config file with your own testing version.
Thanks Alan!
Unfortunately, I don't understand how this can work.
Simplify using PREFIX failed for me since many packages record the
full path for configuration/data/help files etc. in the generated
binaries or libraries.
When moving such an application/library it will still search for
those files in the build directory.
I would image Portage uses some sort of chroot (then the pathes are
identical)
Furthermore, I cannot remove yast since I'm only a "guest" on such
boxes.
Normally I'd use a PREIFX=/usr/local/<MYAPP> but some application
still install something into /etc/ or similar and I'd like to catch
these cases.
Helmut.
|