== Online upgrade an i386 Fedora system to x86_64 == === Preparation === **WARNING:** This exercise has been performed by experienced stunt sysadmins. Do not try this at home without professional supervision. You will need to manually download a few packages from the repository. A full local mirror of the repository might make things a little easier, but it's not required. I use ##lftp## or ##lftpget## with these paths conveniently bookmarked: {{{ ftp://mirrors.us.kernel.org/fedora/updates/10/x86_64/ ftp://mirrors.us.kernel.org/fedora/releases/10/Everything/x86_64/os/Packages/ }}} Always check the updates directory first for the latest version of the rpm, or you might end up with incompatible dependencies. === Upgrade === Enough talking, now let's roll: * **Kernel:** Download and install 64bit kernel: {{{ rpm -U --ignorearch kernel-2.6.27.15-170.2.24.fc10.x86_64.rpm }}} * **Reboot:** this is the only time you'll need to reboot if you're careful * **glibc:** Force install the 64bit glibc, but keep the 32bit libraries: {{{ rpm -i --ignorearch --force glibc-2.9-3.x86_64.rpm glibc-common-2.9-3.x86_64.rpm glibc-2.9-3.i686.rpm }}} * Do random shell commands still work? Good, then we're still in business. * **rpm:** Now comes the tricky part: we need to switch to 64bit rpm to continue the upgrade, but rpm has a lot of dependencies. I did this by trial and error, eventually running a very long command line: {{{ rpm -U --force --ignorearch rpm-* libz-* ... }}} * **Disable gpg signatures:** At this point, I got seriously stuck by a mysterious problem, probably unrelated to the arch migration: the new rpm would work, but refuse to install any new package mumbling something about incorrect MD5 signature. It turned out that rpm was actually using gpg rather than md5 signatures, and the error message was just misleading. I got past this by disabling gpg signatures by commenting out the ##%_signature gpg## in ##/usr/lib/rpm/macros##. * **Install the rest:** At this point, it's all downhill. You can't get along with "yum upgrade" though, because yum thinks you already have the latest versions of everything, although with the wrong architecture. I did it like this: {{{ rpm -i `rpm -qa | sed -ne 's/i[36]86/x86_64.rpm/p'` }}} * **Final cleanup**: you might want to remove all the i386 junk to get a pure 64bit system. I did it like this: ##rpm -e `rpm -qa | grep i[36]86`##. Good luck! === Trouble? === If something goes wrong and you're stuck with an unworkable, you could boot off a 64bit live CD and manually copy the files you need or ##chroot## into your half-upgraded system. You might need to unpack rpms with ##rpm2cpio##. Also note a few rpm options useful in recovery scenarios: ##--root##, ##--justdb##, ##--rebuilddb##. === Help improve this documentation === If you manage to break your system in interesting ways, I'd like to know (but not necessarily help you fix it). Please, edit this page with additional notes and tips. It's a wiki for a reason.