OK, after more debugging and reading ubuntu sources I found the precise reason and how to workaround it.
Reason: Ubuntu's method of creating the 32bit versions of these packages for the 64bit ubuntu has a bug (see debian/rules of ia32-libs). It does not recompile the libraries, but simply take the packages from the 32 bit ubuntu, and repackages by extracting them, moving things from /usr/lib to /usr/lib32, and repackaging them.
This in general works. Unfortunately, the gdk-pixbuf library has a hard-coded path under /usr/lib to look for several modules loaded at runtime. This works under 32bit Ubuntu. Obviously, the described method to change 32-bit into 64-bit packages does not and cannot change this path. Therefore, the library under /usr/lib32 still loads the module catalog from /usr/lib and thus the modules from /usr/lib -> bang.
Workaround 1: Fortunately the gdk-pixbuf allows to override the hard coded path to the catalog file with an environment variable. Set
Workaround 2: Fortunately, the gdk-pixbuf tries to load loaders.cache.32 before loaders.cache. Set a Symlink from
/usr/lib/gdk-pixbuf-2.0/2.10.0/loaders.cache.32 to
/usr/lib32/gdk-pixbuf-2.0/2.10.0/loaders.cache
My next problem would be to find a package maintainer feeling somewhat responsible or in charge to fix that bug or at least put the workaround 2 in the package.
OK, after more debugging and reading ubuntu sources I found the precise reason and how to workaround it.
Reason: Ubuntu's method of creating the 32bit versions of these packages for the 64bit ubuntu has a bug (see debian/rules of ia32-libs). It does not recompile the libraries, but simply take the packages from the 32 bit ubuntu, and repackages by extracting them, moving things from /usr/lib to /usr/lib32, and repackaging them.
This in general works. Unfortunately, the gdk-pixbuf library has a hard-coded path under /usr/lib to look for several modules loaded at runtime. This works under 32bit Ubuntu. Obviously, the described method to change 32-bit into 64-bit packages does not and cannot change this path. Therefore, the library under /usr/lib32 still loads the module catalog from /usr/lib and thus the modules from /usr/lib -> bang.
Workaround 1: Fortunately the gdk-pixbuf allows to override the hard coded path to the catalog file with an environment variable. Set
export GDK_PIXBUF_ MODULE_ FILE=/usr/ lib32/gdk- pixbuf- 2.0/2.10. 0/loaders. cache
Workaround 2: Fortunately, the gdk-pixbuf tries to load loaders.cache.32 before loaders.cache. Set a Symlink from
/usr/lib/ gdk-pixbuf- 2.0/2.10. 0/loaders. cache.32 to gdk-pixbuf- 2.0/2.10. 0/loaders. cache
/usr/lib32/
My next problem would be to find a package maintainer feeling somewhat responsible or in charge to fix that bug or at least put the workaround 2 in the package.