[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: converting from i386 to amd64 without rebuilding



On Fri, 2007-12-14 at 13:14 -0800, Steve Lane wrote:
> On Fri, Dec 14, 2007 at 03:41:31PM -0500, Lennart Sorensen wrote:
> > On Fri, Dec 14, 2007 at 11:49:20AM -0800, Steve Lane wrote:
> > > Greetings.  We've got a 4-core (2 x Core 2 Duo) server that was originally
> > > built as an i386 machine, then converted to the i386 bigmem kernel,
> > > and *then* converted to the amd64 kernel. None of the packages on the
> > > machine, however, are from the amd64 port - they're all i386.
> > > 
> > > Is there some simple and straightforward (or even not-so-simple or
> > > straightforward) way of converting the machine from the i386 port
> > > to the amd64 port without rebuilding it from scratch using the amd64
> > > installer, i.e. to reinstall all the i386-specific packages from the
> > > amd64 repository?
> > 
> > I can't think of any way.  You can create a chroot with debootstrap, but
> > that's essentially just a harder way to run a fresh install.
> > 
> > After all you can't have both the 32 and 64 bit version of libc6
> > installed at once in the same place, so you can't replace it while other
> > packages which depend on it are using the other bitness.
> 
> Yeah - I discovered that the hard way ;)
> 
> That's more or less what I figured.  Guess I'll be rebuilding at some
> point :)

Actually, if you do the chroot approach you could probably do the entire
upgrade more or less in place. Do dpkg --get-selections on the i386
side, do a chroot build (no user intervention required), in the chroot
do dpkg --set-selections, and then wait while it installs all the
packages. Once it's done just copy over /etc and /home
(and /var/spool/mail if you use spool mail files on the system),
update /etc/fstab and /boot/grub/menu.lst (assuming you use grub), and
reboot.

If you REALLY want to do it the hard way, it would be POSSIBLE to do a
fully in place upgrade but it really wouldn't be an effective use of
your time. Look at how amd64 handles all the library locations with ia32
libs installed. (/lib32, /lib64, /usr/lib32, and /usr/lib64) This would
be a LOT of work, though, especially with figuring out which services
are using which libraries, when to stop them, when to restart them, etc.

-- 
Alex Malinovich
Support Free Software, delete your Windows partition TODAY!
Encrypted mail preferred. You can get my public key from any of the
pgp.net keyservers. Key ID: A6D24837

Attachment: signature.asc
Description: This is a digitally signed message part


Reply to: