On 31.03.2013 06:45, Guillem Jover wrote:
I managed to put together a Python script which changes the architecture of an installed Debian system from i386 to amd64. I didn't even need to use any --force; processing packages in correct order by dependencies is enough, since dpkg does less dependency checks than apt. It's not perfect, but it left me with only about two dozen broken packages to be fixed by hand, as opposed to the several hundreds I encountered when trying to do this manually.If dpkg fails on some packages, one issue might be because they are not yet properly marked with a Multi-Arch field, as noted also in the announcement mail.
My script does handle the Multi-Arch field and its absence. Almost all of the issues were multiarch-enabled packages that depended on a pre-multiarch package. Installing the new arch version of the dependency left the old arch version of the dependant broken. I added a section at the end of the script to clean up such broken packages.
As of now, there's only two real problems in the cross-grading process:libclutter-gst-1.0-0 has a binNMU with different changelogs, and can't coexist with itself even though it is Multi-Arch: same.
postgresql won't restart after cross-grading since its binary data format is arch-dependant.
Would this script be of interest to the Debian community? If so, I can share it.
-- Mikko