Tonko <[EMAIL PROTECTED]> posted
[EMAIL PROTECTED], excerpted
below, on  Fri, 21 Nov 2008 11:23:19 +0100:

> Let's just say that I would switch to the no-multilib profile. Would it
> be enough to just change the profile and do a emerge @system @world
> -auvDN ? Or are there more steps I need to take?

That's enough in general, yes.  The big things to remember to remerge are 
glibc, gcc, binutils, and sandbox (and IDR, possibly baselayout as well), 
but of course an emerge @system should take care of all of those.  If 
you've sat thru or timed gcc and/or glibc emerges before, you should 
immediately notice they take MUCH less time to merge now, particularly 
glibc, because as I explained earlier, with multilib they're effectively 
built twice, once for 32-bit and once for 64-bit.

The other thing to look at with any profile change is what default USE 
flags may have changed, and whether you're comfortable with the changes 
or not.  Of course, switching to a no-multilib profile, some USE flags 
are masked either in general or on specific packages, due to requiring
32-bit, so there'll likely be more change than a simple profile upgrade 
would bring.  If you like, you can try switching profiles without merging 
anything, do emerge -pv @system @world, and take a look at the changes.  
If you don't like what you see, it's easy enough to switch back before 
you do any real emerges, since all you've done at that point is change 
the config and take a look at what it would do.

When you're done remerging and everything, it'd probably be wise to check 
and make sure the old lib32 dirs (I've forgotten what the were 
specifically) and etc are all gone, but I /think/ the remerge of 
baselayout on the new profile will handle that, unless of course you have 
those dirs CONFIG_PROTECTed for some reason.

One other thing that again the profile should manage, but just in case it 
doesn't...  For legacy reasons, booting amd64 starts in IIRC 16-bit real-
mode, just as does booting x86(32).  That's handled with the traditional 
32-bit gcc.  Thus, grub is masked on no-multilib.  Instead, you'll use 
grub-static.  Of course, what's actually installed in the boot sector 
doesn't change until you install grub to the boot sector yourself.  

Just to make sure nothing unexpected happens in the process leaving you 
unable to boot, be sure you have some other way to boot, a Gentoo LiveCD, 
grub installed on a floppy or USB device, etc, and test booting from it.  
To be real sure, disable the hard drive in your BIOS, and boot from the 
alternative without it.  If it's grub, you should be able to get to the 
grub menu without the hard drive, tho of course you won't be able to find 
the kernel and boot the hard drive with it disabled.  If it's a LiveCD or 
whatever, obviously you should be able to boot it, with or without the 
hard drive.  Once you know your alternative boot works, you can reenable 
your hard drive in BIOS.

Then if you like, I think you can merge grub-static (unmerging grub in 
the process) BEFORE you switch profiles.  This will be safest since 
you'll be doing only grub-static by itself, not everything at once.  It 
will of course install on the system, and try to install to /boot as 
well, with an elog message saying whether it could or not.  But you will 
need to install it to the boot sector yourself.  After you've done so, 
reboot, making sure it all works, using your pre-tested alternative boot 
if something goes wrong, but it shouldn't.  Once you've installed it, you 
can go ahead with the profile change and not have to worry about at least 
that bit of it, since you'll have done it already.

Of course if you run LILO, it too has 32-bit components.  However it 
works rather differently.  I used to use it on Gentoo back before Gentoo 
supported it on amd64, by just using the LILO precompiled binary 
available from its homepage.  But I eventually switched to GRUB and 
haven't kept up with LILO, so don't know the details of how Gentoo 
manages it now.  But LILO users should be pretty used to managing it 
themselves already since Gentoo doesn't provide much help with it, and 
because it uses an absolute pointer directly from the boot sector to each 
of its kernel entries and the kernel won't need changed for the move to 
the no-multilib profile, it's something they don't have to worry about 
right during the profile switch in any case.

Meanwhile, back to the general case.  There's an official Gentoo 
Upgrading Guide with profile upgrading instructions, here:

http://www.gentoo.org/doc/en/gentoo-upgrading.xml

If you're not on a 2008.0 profile yet, you may wish to take the 
opportunity to upgrade to that at the same time.  Be sure your portage is 
upto date, and check the specific instructions for the 2008.0 upgrade as 
posted.

They suggest using eselect profile, but I've always done my profile 
changes by repointing the symlink manually, here.  The one thing eselect 
profile will do is make selecting a subprofile intended as a cascaded 
subprofile only, not a main profile, much more difficult, since it only 
lists valid whole profiles.  However, the no-multilib profile stands on 
its own, so there's little danger of that here, and as I said, I've 
always managed the symlink here by hand (well, normally using mc, but 
whatever).  And they list the manual method as well, for those like me 
that prefer it. =:^)

-- 
Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman


Reply via email to