Forum Bugs

Different packaging for 32-bit and 64-bit OpenSuSE

pronik
As requested elsewhere, a bug report about OpenSuSE packaging. My current problem is that I can't install the OpenSuSE 64-bit package on SuSE Linux Enterprise 11, even though the installation of the 32-bit version is possible.

The package prince-8.1-1.opensuse11.i586.rpm contains the following dependencies:

libcrypto.so.0.9.8
libssl.so.0.9.8
libpng12.so.0
libpng12.so.0(PNG12_0)


while its 64-bit counterpart, prince-8.1-1.opensuse11.x86_64.rpm uses the following:

libcrypto.so.1.0.0()(64bit)
libssl.so.1.0.0()(64bit)
libpng14.so.14()(64bit)
libpng14.so.14(PNG14_0)(64bit)


OpenSuSE seems to contain both versions of OpenSSL and libpng, that's why both packages install fine on OpenSuSE. However, SuSE Linux Enterprise 11 only contains the older version of both packages, this is why it's possible to install the 32-bit package, but not the 64-bit one.

I would very much prefer to have a dedicated SLE11 package for Prince, however, the 32-bit OpenSuSE package worked fine for us so far. What I need (and pressure from our IT is getting bigger) is a proper 64-bit package with SLE11-compatible dependencies.
mikeday
It does appear that both the 1.0.0 and 0.9.8 versions of OpenSSL / libcrypto are installed on 64-bit OpenSUSE 11. However, only one version of libcurl seems to be available, and it links to OpenSSL 1.0.0. We can work around this by compiling our own version of curl, but that's suboptimal as it means you will not get bug fixes and security patches available in the version of curl installed on your own machine.

Unfortunately it seems that it is this incompatibility of curl versions that makes it difficult to install OpenSUSE packages on SLES. Unless there is some workaround for this particular issue, it may be necessary to build packages specifically for SLES in order to get full compatibility.
pronik
Mike, if I understand you correctly: OpenSuSE's curl version links to OpenSSL 1.0.0 in its 64-bit version and to OpenSSL 0.9.8 in 32-bit? That can't be right, even though I shouldn't be surprised, SuSE is only a RedHat wannabe ;-)
pronik
A bit more information, I've downloaded the following packages from http://download.opensuse.org/distribution/11.4/repo/oss/suse/ (which is supposed to be OpenSuSE 11.4, I guess the same you use?):

libcurl4-7.21.2-9.1.i586.rpm
libcurl4-32bit-7.21.2-9.1.x86_64.rpm
libcurl4-7.21.2-9.1.x86_64.rpm


The libcurl.so.4.2.0 I extracted from both 32-bit packages is identical. However, both libraries seem to be compiled against both OpenSSL 1.0.0 and 0.9.8 (I've renamed the files to keep them apart):

$ ldd * | grep ssl
./libcurl.32.so: /usr/lib/libidn.so.11: no version information available (required by ./libcurl.32.so)
        libssl.so.1.0.0 => not found
        libssl.so.0.9.8 => /usr/lib/libssl.so.0.9.8 (0xf7423000)
./libcurl.64.so: /usr/lib64/libidn.so.11: no version information available (required by ./libcurl.64.so)
        libssl.so.1.0.0 => not found
        libssl.so.0.9.8 => /usr/lib64/libssl.so.0.9.8 (0x00007f0aca1ef000)


I'm not proficient in library programming, but it seems both 32-bit and 64-bit curl is capable of working with both OpenSSL versions. Could you please recheck what's installed on your build box? Thanks.
mikeday
This is what I get:
$ rpm -ql libcurl4-7.21.2-9.1.x86_64
/usr/lib64/libcurl.so.4
/usr/lib64/libcurl.so.4.2.0

The first file is just a symlink pointing to the second file. This appears to be linked to OpenSSL 1.0.0:
$ ldd /usr/lib64/libcurl.so.4.2.0 | grep ssl
libssl.so.1.0.0 => /lib64/libssl.so.1.0.0 (0x00...)

Also:
$ rpm -qi --requires libcurl4-7.21.2-9.1.x86_64 | grep ssl
libssl.so.1.0.0()(64bit)

Not looking good for compatibility with 0.9.8 at this point. :(