multiarch in 12.04: the home stretch for ia32-libs, help requested

Steve Langasek steve.langasek at ubuntu.com
Sat Oct 22 19:13:40 UTC 2011


Hi folks,

With precise now open, I've wasted no time in doing away with the ia32-libs
package.  ia32-libs is now an empty transitional package depending on
ia32-libs-multiarch, which in turn is an i386-only package depending on all
the libraries ia32-libs used to ship.

This makes ia32-libs uninstallable 17 ways to Tuesday, because only a
fraction of the libraries it previously contained have been converted for
multiarch so far.

That means there's a lot of work to be done to get us well and truly free of
ia32-libs for precise, so this is a call for volunteers to help with this
transition.

There are four kinds of fixes that will need to be applied to make ia32-libs
installable again.

 1) Some packages provide only executables as an interface to
    reverse-dependencies (no libraries, plugins, etc).  If a library depends
    on such a package, that package needs only to be marked
    'Multi-Arch: foreign' to document that the native version of the package
    satisfies the dependencies of libraries of the foreign architecture.

 2) Some packages are library packages which need to be updated to install
    their architecture-dependent contents to the multiarch paths, as
    described on <http://wiki.debian.org/Multiarch/Implementation>.

 3) Some packages are plugin packages.  These also need to have their
    contents moved to the multiarch path, but more coordination is needed
    because we first need to make sure that whatever package *loads* the
    plugins knows to look in the multiarch path.

 4) Some packages contain a mix of the above and need to be carefully split
    into separate binary packages so that one can be marked Multi-Arch:
    foreign and the other can be marked Multi-Arch: same.  Examples of this
    include: winbind (split into 'winbind' and 'libpam-winbind', currently
    sitting in the NEW queue), glib-networking (bug #879775), and
    pulseaudio-utils (ia32-libs only needs /usr/lib/libpulsedsp.so).

The first two are pretty mechanical conversions and easily worked on in
parallel, so if anyone would like to pitch in, please do!  And if someone
wants to work on the latter two classes of issues, I'm happy to provide
guidance (on IRC, etc).

And of course, please send patches upstream to Debian for any packages that
you change.  In addition to the usual Ubuntu usertags in the Debian BTS,
there is a 'multiarch' usertag under the user
'multiarch-devel at lists.alioth.debian.org' that is being used to track
multiarch patches there.


The approximate todo list can be found below.  Note that some of these
issues obscure deeper dependency chain issues (in particular in the case of
gstreamer0.10 plugins), so this is not the complete list; but once these
issues are cleared we can get a better view of what remains to be done.


$ for pkg in $(apt-cache show ia32-libs-multiarch \
               |sed -n -e'/Depends: / { s/Depends://; s/, /\n/g; p }')
  do
      echo $pkg $pkg:i386
  done | xargs sudo apt-get install -y
Reading package lists... Done
Building dependency tree       
Reading state information... Done
<snip>
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 gstreamer0.10-fluendo-mp3 : Depends: libgstreamer0.10-0 (>= 0.10.14) but it is not going to be installed
                             Depends: liboil0.3 (>= 0.3.10) but it is not going to be installed
                             Conflicts: gstreamer0.10-fluendo-mp3:i386 but 0.10.15.debian-1 is to be installed
 gstreamer0.10-fluendo-mp3:i386 : Conflicts: gstreamer0.10-fluendo-mp3 but 0.10.15.debian-1 is to be installed
 gstreamer0.10-plugins-base : Depends: libgstreamer0.10-0 (>= 0.10.34) but it is not going to be installed
                              Depends: liborc-0.4-0 (>= 1:0.4.14) but it is not going to be installed
                              Depends: libtheora0 (>= 1.0) but it is not going to be installed
                              Depends: libgstreamer-plugins-base0.10-0 (>= 0.10.35) but it is not going to be installed
                              Conflicts: gstreamer0.10-plugins-base:i386 but 0.10.35-1 is to be installed
 gstreamer0.10-plugins-base:i386 : Depends: libcdparanoia0:i386 (>= 3.10.2+debian) but it is not going to be installed
                                   Depends: libvisual-0.4-0:i386 (>= 0.4.0) but it is not going to be installed
                                   Conflicts: gstreamer0.10-plugins-base but 0.10.35-1 is to be installed
 gstreamer0.10-plugins-good : Depends: libaa1 (>= 1.4p5) but it is not going to be installed
                              Depends: libavc1394-0 (>= 0.5.3) but it is not going to be installed
                              Depends: libcaca0 (>= 0.99.beta17-1) but it is not going to be installed
                              Depends: libdv4 but it is not going to be installed
                              Depends: libgstreamer-plugins-base0.10-0 (>= 0.10.33) but it is not going to be installed
                              Depends: libgstreamer0.10-0 (>= 0.10.33) but it is not going to be installed
                              Depends: libiec61883-0 (>= 1.2.0) but it is not going to be installed
                              Depends: liborc-0.4-0 (>= 1:0.4.14) but it is not going to be installed
                              Depends: libraw1394-11 but it is not going to be installed
                              Depends: libshout3 but it is not going to be installed
                              Depends: libsoup-gnome2.4-1 (>= 2.27.4) but it is not going to be installed
                              Depends: libsoup2.4-1 (>= 2.26.1) but it is not going to be installed
                              Depends: libtag1c2a (>= 1.5) but it is not going to be installed
                              Depends: libwavpack1 (>= 4.40.0) but it is not going to be installed
                              Conflicts: gstreamer0.10-plugins-good:i386 but 0.10.30-1ubuntu7 is to be installed
 gstreamer0.10-plugins-good:i386 : Depends: libsoup-gnome2.4-1:i386 (>= 2.27.4) but it is not going to be installed
                                   Depends: libsoup2.4-1:i386 (>= 2.26.1) but it is not going to be installed
                                   Conflicts: gstreamer0.10-plugins-good but 0.10.30-1ubuntu7 is to be installed
 gtk2-engines : Conflicts: gtk2-engines:i386 but 1:2.20.2-0ubuntu1 is to be installed
 gtk2-engines:i386 : Conflicts: gtk2-engines but 1:2.20.2-0ubuntu1 is to be installed
 gtk2-engines-murrine : Conflicts: gtk2-engines-murrine:i386 but 0.98.1.1-0ubuntu3 is to be installed
 gtk2-engines-murrine:i386 : Conflicts: gtk2-engines-murrine but 0.98.1.1-0ubuntu3 is to be installed
 gvfs : Depends: x11-utils but it is not going to be installed
        Conflicts: gvfs:i386 but 1.10.0-0ubuntu1 is to be installed
 gvfs:i386 : Depends: dconf-gsettings-backend:i386 but it is not going to be installed or
                      gsettings-backend:i386
             Conflicts: gvfs but 1.10.0-0ubuntu1 is to be installed
 ibus-gtk : Depends: libibus-1.0-0 but it is not going to be installed
 libao4 : Depends: libao-common but it is not going to be installed
          Conflicts: libao4:i386 but 1.1.0-1ubuntu1 is to be installed
 libao4:i386 : Conflicts: libao4 but 1.1.0-1ubuntu1 is to be installed
 libcanberra-gtk-module : Depends: libcanberra-gtk0 (>= 0.2) but it is not going to be installed
                          Conflicts: libcanberra-gtk-module:i386 but 0.28-0ubuntu10 is to be installed
 libcanberra-gtk-module:i386 : Conflicts: libcanberra-gtk-module but 0.28-0ubuntu10 is to be installed
 libcap2 : Conflicts: libcap2:i386 but 1:2.22-1ubuntu2 is to be installed
 libcap2:i386 : Conflicts: libcap2 but 1:2.22-1ubuntu2 is to be installed
 libcapi20-3 : Conflicts: libcapi20-3:i386 but 1:3.12.20071127-0ubuntu9 is to be installed
 libcapi20-3:i386 : Conflicts: libcapi20-3 but 1:3.12.20071127-0ubuntu9 is to be installed
 libesd0 : Depends: libaudiofile0 (>= 0.2.3-4) but it is not going to be installed
 libgail-common : Conflicts: libgail-common:i386
 libgail-common:i386 : Conflicts: libgail-common
 libgettextpo0:i386 : Depends: libcroco3:i386 (>= 0.6.2) but it is not going to be installed
 libgphoto2-2 : Depends: libltdl7 (>= 2.4) but it is not going to be installed
                Conflicts: libgphoto2-2:i386 but 2.4.11-3.1 is to be installed
 libgphoto2-2:i386 : Depends: libexif12:i386 but it is not going to be installed
                     Depends: libgd2-noxpm:i386 (>= 2.0.36~rc1~dfsg) but it is not going to be installed or
                              libgd2-xpm:i386 (>= 2.0.36~rc1~dfsg) but it is not going to be installed
                     Conflicts: libgphoto2-2 but 2.4.11-3.1 is to be installed
 libgphoto2-port0 : Depends: libltdl7 (>= 2.4) but it is not going to be installed
                    Conflicts: libgphoto2-port0:i386 but 2.4.11-3.1 is to be installed
 libgphoto2-port0:i386 : Conflicts: libgphoto2-port0 but 2.4.11-3.1 is to be installed
 libmpg123-0 : Conflicts: libmpg123-0:i386 but 1.12.1-3.1fakesync1 is to be installed
 libmpg123-0:i386 : Conflicts: libmpg123-0 but 1.12.1-3.1fakesync1 is to be installed
 libnss-ldap : Conflicts: libnss-ldap:i386
 libnss-ldap:i386 : Depends: ldap-auth-config:i386 but it is not installable
                    Conflicts: libnss-ldap
 libodbc1 : Depends: libltdl7 (>= 2.4) but it is not going to be installed
 libpam-ldap : Conflicts: libpam-ldap:i386
 libpam-ldap:i386 : Depends: ldap-auth-config:i386 (>= 0.5.2) but it is not installable
                    Conflicts: libpam-ldap
 libqtwebkit4 : Depends: libgstreamer-plugins-base0.10-0 (>= 0.10.31) but it is not going to be installed
                Depends: libgstreamer0.10-0 (>= 0.10.31) but it is not going to be installed
                Conflicts: libqtwebkit4:i386 but 2.2~2011week36-0ubuntu1 is to be installed
 libqtwebkit4:i386 : Conflicts: libqtwebkit4 but 2.2~2011week36-0ubuntu1 is to be installed
 librsvg2-common:i386 : Depends: librsvg2-2:i386 (= 2.34.1-2) but it is not going to be installed
 libsane : Conflicts: libsane:i386 but 1.0.22-2ubuntu2 is to be installed
 libsane:i386 : Conflicts: libsane but 1.0.22-2ubuntu2 is to be installed
 libsdl-image1.2 : Depends: libsdl1.2debian (> 1.2.4) but it is not going to be installed
                   Conflicts: libsdl-image1.2:i386 but 1.2.10-2.1build1 is to be installed
 libsdl-image1.2:i386 : Conflicts: libsdl-image1.2 but 1.2.10-2.1build1 is to be installed
 libsdl-mixer1.2 : Depends: libmikmod2 (>= 3.1.10) but it is not going to be installed
                   Depends: libsdl1.2debian (>= 1.2.10-1) but it is not going to be installed
                   Depends: libsmpeg0 but it is not going to be installed
                   Conflicts: libsdl-mixer1.2:i386 but 1.2.8-6.4 is to be installed
 libsdl-mixer1.2:i386 : Conflicts: libsdl-mixer1.2 but 1.2.8-6.4 is to be installed
 libsdl-net1.2 : Depends: libsdl1.2debian (>= 1.2.10-1) but it is not going to be installed
                 Conflicts: libsdl-net1.2:i386 but 1.2.7-2 is to be installed
 libsdl-net1.2:i386 : Conflicts: libsdl-net1.2 but 1.2.7-2 is to be installed
 libsdl-ttf2.0-0 : Depends: libsdl1.2debian (>= 1.2.10-1) but it is not going to be installed
                   Conflicts: libsdl-ttf2.0-0:i386 but 2.0.9-1.1 is to be installed
 libsdl-ttf2.0-0:i386 : Conflicts: libsdl-ttf2.0-0 but 2.0.9-1.1 is to be installed
 libsdl1.2debian-pulseaudio : Conflicts: libsdl1.2debian-pulseaudio:i386 but 1.2.14-6.1ubuntu4 is to be installed
 libsdl1.2debian-pulseaudio:i386 : Conflicts: libsdl1.2debian-pulseaudio but 1.2.14-6.1ubuntu4 is to be installed
 libssl0.9.8 : Conflicts: libssl0.9.8:i386 but 0.9.8o-7ubuntu1 is to be installed
 libssl0.9.8:i386 : Conflicts: libssl0.9.8 but 0.9.8o-7ubuntu1 is to be installed
 libxaw7:i386 : Depends: libxpm4:i386 but it is not going to be installed
 libxp6 : Conflicts: libxp6:i386 but 1:1.0.1-1 is to be installed
 libxp6:i386 : Conflicts: libxp6 but 1:1.0.1-1 is to be installed
 libxslt1.1 : Conflicts: libxslt1.1:i386 but 1.1.26-8 is to be installed
 libxslt1.1:i386 : Conflicts: libxslt1.1 but 1.1.26-8 is to be installed
 odbcinst1debian2 : Depends: libltdl7 (>= 2.4) but it is not going to be  installed
 pulseaudio-utils : Depends: libxtst6 but it is not going to be installed
                    Conflicts: pulseaudio-utils:i386 but 1:1.0-0ubuntu4 is to be installed
 pulseaudio-utils:i386 : Conflicts: pulseaudio-utils but 1:1.0-0ubuntu4 is to be installed
 winbind : Conflicts: winbind:i386 but 2:3.5.11~dfsg-2ubuntu2 is to be installed
 winbind:i386 : Depends: libpopt0:i386 (>= 1.16) but it is not going to be installed
                Depends: samba-common:i386 (= 2:3.5.11~dfsg-2ubuntu2) but it is not installable
                Depends: lsb-base:i386 (>= 3.0-6) but it is not installable
                Conflicts: winbind but 2:3.5.11~dfsg-2ubuntu2 is to be installed
E: Unable to correct problems, you have held broken packages.
$


Thanks,
-- 
Steve Langasek                   Give me a lever long enough and a Free OS
Debian Developer                   to set it on, and I can move the world.
Ubuntu Developer                                    http://www.debian.org/
slangasek at ubuntu.com                                     vorlon at debian.org
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 828 bytes
Desc: Digital signature
URL: <https://lists.ubuntu.com/archives/ubuntu-devel/attachments/20111022/39b5fac8/attachment.pgp>


More information about the ubuntu-devel mailing list