我度过了一段非常愉快的时光在 CentOS 5.6 上安装lxml
Python 2.7。背景知识:Python 2.7 是 CentOS 5.6 上 Python 的另一种安装方式,它自带 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
注意:标明 7 月 1 日或 6 月 30 日的项目来自我。我最初将这些文件移到备份文件夹中,因为它们似乎是重复的,并且日期是在我之前提到的问题之后/期间。lxml
一种倾向是完全删除 Python 2.7 并重新安装。我认为将其安装到 Python 2.7/usr/local/
是一个糟糕的默认选择。但是,如果没有这个make uninstall
选项,这似乎是一项耗时的任务,我不太确定这个解决方案是否能解决我的问题。
答案1
从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 之类的东西来执行此操作,因此您需要实际安装与客户的生产环境相匹配的开发环境(或至少安装并链接到正确的库版本)。
答案2
我的系统上有多个版本,遇到了同样的问题。/usr/bin
我在下面创建了python-2.4.3
文件并将其指向 python,这解决了我的问题。python-2.4.3
在编译我们正在使用的其他版本后,不知怎么就被删除了。我相信问题出在 python 2.4.3 中内置的 yum 应用程序上。
答案3
yum install python-lxml
应该可以