no version information available

2019-02-01 12:03发布

问题:

I'm using Ubuntu 12.04 - server and consistently getting:

/usr/lib/libcrypto.so.1.0.0: no version information available (required by /usr/lib/libpython2.7.so.1.0)

and

/usr/lib/libssl.so.1.0.0: no version information available (required by /usr/lib/libpython2.7.so.1.0)

error messages without any pattern for why. It can be something as simple as running vi.The files are there and they are not links.

This started happening a little after compiling and installing OpenLDAP, using the instructions from their site while learning the basics of the ldap server. I have removed openLDAP of course to try and remove the problem. I have also reinstalled OpenSSL and libssl1.0.0 to try and test that solution.

Any help will be greatly appreciated, google hasn't been useful unfortunately.

回答1:

I suppose I should get right to the point...

Problem: libssl.so.1.0.0 and libcrypto.so.1.0.0 no version information available warning/error.

I SOLVED IT!!! YAY!!! (Fireworks should be going off and stuff.)

After much research, time and effort, (took weeks), here's what I finally ended up doing...

In the directory where you ended up extracting the source code for your version of openssl 1.0.1h (Should work for other versions too.) I create a file called openssl.ld

In this file put this...

Answer

OPENSSL_1.0.0 {
    global:
    *;
};

save it. Now type in...

make clean (Just to be sure we are starting fresh.)

Now for the really mind boggling part...

./config --prefix=/usr/local --openssldir=/usr/local/openssl shared -Wl,--version-script=openssl.ld -Wl,-Bsymbolic-functions

Then...

make

make test

make install

ldconfig

And that should do it. (It's so simple. No patching required.)

I have applied this solution to Debian Wheezy both 32 and 64 bit versions. And have made an observation. The 64 bit version automatically defaults to the new libssl.so.1.0.0 and libcrypto.so.1.0.0 files that are created in the /usr/local/lib directory. The 32 bit version does not. Which is why I had thought at first that the 32 bit version of Debian Wheezy didn't suffer from this problem, but it does once you get the 32 bit version to use the new openssl libraries in the /usr/local/lib dir.

Using the ldd command to test what libraries the binaries are using was invaluable in figuring this out too.

Have a nice day.

Mr. E. Dude



回答2:

I was also getting that annoying warning message after compiling and installing the latest version of openssl from source (openssl-1.0.1f). After some research along with some trial and error, I was able to fix the issue for my particular scenario. It basically came down to exactly what the warning message says. There is no version information available in the libraries that were built from source. That is something that the Ubuntu team has added in their distribution. So, the solution is to recompile your openssl source after patching it with the version script that is included in the Ubuntu package distribution for openssl.

I Google'd for "patch openssl to contain version info for ubuntu" and happened to find the source package I need at https://launchpad.net/ubuntu/+archive/primary/+files/openssl_1.0.1f-1ubuntu1.debian.tar.gz.

So, here's the process I followed:

rm -r -f -v openssl-1.0.1f (just to make sure you start fresh)
wget http://www.openssl.org/source/openssl-1.0.1f.tar.gz
tar -xvf openssl-1.0.1f.tar.gz
wget https://launchpad.net/ubuntu/+archive/primary/+files/openssl_1.0.1f-1ubuntu1.debian.tar.gz
tar -xvf openssl_1.0.1f-1ubuntu1.debian.tar.gz
mv debian openssl_1.0.1f-1ubuntu1 (just because that's what I did)
cd openssl-1.0.1f/
patch -p1 < ../openssl_1.0.1f-1ubuntu1/patches/version-script.patch
./config
make
make test
sudo make install

Now, the error message should be gone.

It's worth mentioning that initially I patched my openssl-1.0.1f source with the version script included in the original source package from http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/openssl_1.0.1-4ubuntu5.11.debian.tar.gz. But, my make was failing with an error. I guess it makes sense that I needed to get the same version 1.0.1f.

Credit goes to @mattcasw for his post http://ubuntuforums.org/showthread.php?t=1905963 which led me down the right path.