Debian online upgrade from i386 to amd64 architecture

Jan 2011: Tried this recently on a P4 machine. After a library relink, the machine stopped working… I had to give in and do a fresh amd64 reinstall. No idea why it didn’t work now.

Having a relatively freshly installed core2 machine with debian i386 on, I realized I had chosen the wrong architecture. On one side,as I hardly had done any customisation on the box, a reinstall would have been the easy way out, on the other side, I don’t like reinstallation as a solution on linux, and this was the perfect test in case I should need to do it on some other occasion.

I followed the instructions from verboom.net and that mostly worked perfect as soon as I had checked out that amd64 and x86_64 is the same thing.

I ran into some problems during the upgrade:

  1. More or less as excepted, some version numbers were wrong. E.g gcc-4.3-base had been replaced with gcc-4.5-base and libdb4.5 also was replaced with some newer version. For the latter, a slew of different versions were available, I installed all of them during the first phase – just in case. There were also a couple of missing depenencies during the first stage installation. I just added them and reran the commands as needed.
  2. I was stuck for a while due to telinit having problems with libsepol.so.1. In the end I had to find it on another box with i386 debian and copy it into /lib32 – then it worked – if I ever do this again, I will make a copy of that file before doing anything else.
  3. during the upgrade, a number of gir1.0 things were upgraded to gir1.2, those got completely stuck, I was told by apt that I was not allowed to remove the gir1.0 virtual package. Doing some googling I found out that those parts were connected to gnome, so I just deleted them – good riddance (did I mention I don’t like gnome?)
  4. in some cases I ran into dependency problems that were solved rerunning the install or fiddeling a bit of when the different packages were installed
  5. for some reason portmap was pulled in – then the nfs-client stopped working with some strange message about maybe needing a /sbin/mount. helper. A apt-get –reinstall install nfs-client removed portmap and got it working again

In the end, it mostly worked fine, as long as I saw this as an opportunity to clean the gnome out of the machine. If I had needed gnome, I don’t know if this had worked – of cource in some cases it may make sense to first remove gnome, do the arch upgrade and then reinstall gnome. The spesific problems were probably due to bad timing – having a gnome update across my archictectural update. It may feel like a waste, but it is important to start out with doing a dist-upgrade in the old architecture to make sure everyting is up to date.
There were some -686 kernels installed. To remove those, I had to use dpkg –purge as apt-get claimed they didn’t exist.
Postgresql turned out to be a problem as the data base file are not compatible between the 32 and 64 bits versions. To get postgres running, one should do a dump of the database before the upgrade, then purge the existing version to have the data base files deleted, then reinstall it when the machine is up running 64 bits, then reload the backup.

This entry was posted in linux. Bookmark the permalink.