14

对于我尝试运行的每个 git 命令,我都会收到此消息。例子:

stewie:~# git --version
git: /usr/local/lib/libz.so.1: no version information available (required by git)
git version 1.7.11.4

我怎样才能摆脱这个?


编辑1:

尝试更新zlib1g

stewie:/tmp# apt-get install zlib1g
Reading package lists... Done
Building dependency tree
Reading state information... Done
zlib1g is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

编辑2:

我在 Debian Lenny (5) 上,所以很遗憾,使用起来apt-get并不容易。

4

5 回答 5

20

/usr/local 用于安装机器管理员在本地编译的程序。简单的程序只需进入 /usr/local/bin 并通过将 /usr/local/bin 放入PATH环境变量从那里运行。这允许管理员向用户提供对操作系统中不包含的其他命令的访问权限。没有什么能阻止 root 将新东西安装到 /usr/bin 中,但惯例是 /usr/bin 由 OS 发行商的打包工具管理,并且将本地东西分开可以让事情变得不那么混乱。

有时,本地程序需要操作系统发行商未提供的库,并且该库进入 /usr/local/lib 并且一切正常。

当存在版本冲突时——操作系统提供了版本 X 的 libz.so,但本地程序需要 libz.so 版本 X+1 或需要使用特殊选项编译 libz.so——事情开始变得复杂。在 /usr/local/lib 中安装较新的库一开始可能没问题。

每个程序都会根据 /usr/lib 来查找库/etc/ld.so.conf,如果 /usr/lib 在那里被优先考虑,那么 /usr/local 程序将找不到他们需要的较新的库。所以 /usr/local/lib 通常被优先考虑。较旧的程序找到较新的库通常不是问题,因为这些库是向后兼容的。

多年后,经过几次操作系统升级,/usr/lib 中的库现在是 X+2 版本,/usr/local/lib 中的库仍然是 X+1 版本,现在 /usr/bin 中的程序正在加载旧的 /usr/local/lib 版本和行为不端。这可以通过删除旧库来解决。需要版本 X+1 的 /usr/local/bin 程序将在 /usr/lib 中找到版本 X+2 并正常工作。但前提是需要更新版本是首先在本地安装版本 X+1 的原因。

要在删除之前探查潜在问题,请在 /usr/local 下查找使用 libz 的任何内容。

ldd /usr/local/bin/* /usr/local/sbin/* | less +/libz

如果您发现任何引用 libz 的内容,请尝试运行它LD_LIBRARY_PATH=/usr/lib以确保它仍然有效。假设没有中断,请删除本地 libz 文件(通过将它们移动到备份位置,以便在必要时撤消此操作)

mkdir /root/local-libz-backup
mv /usr/local/lib/libz* /root/local-libz-backup
ldconfig
于 2012-08-14T23:23:33.257 回答
3

我的服务器上有 DirectAdmin,本指南解决了我的问题。

(从页面复制)

如果您看到错误

/usr/local/lib/libz.so.1: no version information available (required by python)

它与安装的 libz 版本有关。当前版本的原因与libxml2所需的libz版本有关。两者的较新版本将解决该问题,但由于此更新报告的许多问题,我们恢复到旧版本的 libz 和 libxml2。请注意,警告不会伤害任何东西,因此可以忽略它。

如果您仍希望将 libz 和 libxml2 更新到其较新版本以避免该消息,请键入:

cd /usr/local/directadmin/custombuild
./build update
perl -pi -e 's/zlib:1.2.3:.*/zlib:1.2.5:/' versions.txt
perl -pi -e 's/libxml2:2.7.6:.*/libxml2:2.7.8:/' versions.txt
./build update_data
./build zlib
./build libxml2
./build php n
于 2013-12-03T23:30:36.313 回答
2

此方法适用于我的情况,在 .bash_profile 中添加以下行:

LD_LIBRARY_PATH=/lib64:$LD_LIBRARY_PATH

然后运行. ~/.bash_profile

于 2017-10-12T06:19:06.223 回答
1

使用 git lib 路径导出LD_LIBRARY_PATH以解决错误:

libz.so.1: no version information available
于 2017-09-05T13:44:43.993 回答
0

看起来您需要更新构建先决条件。

于 2012-08-14T21:59:29.273 回答