Как диагностировать и решить: /usr/lib64/libz.so.1: информация о версии недоступна
У меня было адское время установки lxml
для Python 2.7 на CentOS 5.6. Для некоторого фона Python 2.7 является альтернативной установкой Python на CentOS 5.6, которая поставляется с установленным Python 2.4.
это был тупой источник, согласно его наставлениям
./configure
make
make altinstall
Однако примерно после 20 часов попыток мне удалось найти работоспособное решение и установить lxml
,
Пока я не заметил следующую ошибку в верхней части интерпретатора:
python2.7: /usr/lib64/libz.so.1: no version information available (required by python2.7)
Python 2.7.2 (default, Jun 30 2011, 18:55:26)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-50)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> print 'Sheeeeut!'
Эта ошибка выводится каждый раз, когда я запускаю скрипт.
Например:
$ ./test.py
/usr/local/bin/python2.7: /usr/lib64/libz.so.1: no version information available (required by /usr/local/bin/python2.7)
Скрипт работает без нареканий, но эта ошибка надоедливая. После некоторого копания я, кажется, считаю, что у меня неправильная версия libz
установлено, что это либо более старая версия, либо созданная для другой платформы.
Я не совсем уверен, как, я только установил libz
через yum
, насколько я знаю. Хотя я не могу вспомнить каждую мелочь, которую я пробовал за двадцать часов попыток.
Вы также можете быть заинтересованы в том, что мой lib64
папка выглядит, вот некоторая информация
$ ls -ltrh libz*
-rwxr-xr-x 1 root root 84K Jan 9 2007 libz.so.1.2.3
-rwxr-xr-x 1 root root 107K Jan 9 2007 libz.a
-rwxr-xr-x 1 root root 154K Feb 22 23:30 libzdb.so.7.0.2
lrwxrwxrwx 1 root root 13 Apr 20 20:46 libz.so.1 -> libz.so.1.2.3
lrwxrwxrwx 1 root root 15 Jun 30 18:43 libzdb.so.7 -> libzdb.so.7.0.2
lrwxrwxrwx 1 root root 13 Jul 1 11:35 libz.so -> libz.so.1.2.3
lrwxrwxrwx 1 root root 15 Jul 1 11:35 libzdb.so -> libzdb.so.7.0.2
Обратите внимание: предметы, которые говорят 1 июля или 30 июня, от меня. Первоначально я переместил эти файлы в папку для резервных копий, так как они выглядели как дубликаты, и у меня была дата после / во время моих проблем, о которых я упоминал ранее, что я имел с lxml
Одно из намерений - полностью удалить Python 2.7 и переустановить. Я думаю, что это установить в /usr/local/
был плохой выбор по умолчанию. Однако без make uninstall
При наличии такой опции решение кажется трудоемким, и я не совсем уверен, что решит мою проблему.
3 ответа
From Что означает ошибка "нет информации о версии" в динамическом компоновщике Linux?, относящиеся к libpam:
"Информация о версии недоступна" означает, что номер версии библиотеки ниже для общего объекта. Например, если ваш номер major.minor.patch равен 7.15.5 на компьютере, на котором вы создаете двоичный файл, а номер major.minor.patch - 7.12.1 на установочном компьютере, ld выведет предупреждение.
Вы можете исправить это, скомпилировав библиотеку (заголовки и общие объекты), которая соответствует версии общего объекта, поставляемой с вашей целевой ОС. Например, если вы собираетесь установить RedHat 3.4.6-9, вы не хотите компилировать в Debian 4.1.1-21. Это одна из причин, по которой большинство дистрибутивов поставляются для определенных дистрибутивов Linux.
В противном случае вы можете статически связать. Однако вы не хотите делать это с чем-то вроде PAM, поэтому вы действительно хотите установить среду разработки, соответствующую производственной среде вашего клиента (или, по крайней мере, установить и связать с правильными версиями библиотеки).
У меня есть несколько версий в моей системе и столкнулся с той же проблемой. Под /usr/bin
Я создал python-2.4.3
файл и указал на Python, который исправил мою проблему. python-2.4.3
был стерт как-то после компиляции других моих версий, которые мы используем. Я считаю, что проблема заключается в приложении yum, которое встроено в Python 2.4.3.