摆脱;git:/usr/local/lib/libz.so.1:没有可用的版本信息(git需要)";

摆脱;git:/usr/local/lib/libz.so.1:没有可用的版本信息(git需要)";,git,Git,对于我尝试运行的每个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... D

对于我尝试运行的每个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
并不是那么容易。

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

/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中安装较新的库可能还可以

每个程序都会根据
/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\u PATH=/usr/lib
运行它,以确保它仍然有效。假设没有中断,请删除本地libz文件(将其移动到备份位置,以便在必要时可以撤消此操作)


我的服务器上有DirectAdmin,这解决了我的问题

(摘自第页)

如果你看到错误

/usr/local/lib/libz.so.1: no version information available (required by python)
这与安装的libz版本有关。当前版本的原因与libxml2所需的libz版本有关。更新版本的libz和libxml2将解决此问题,但由于此更新中报告了许多问题,我们恢复使用旧版本的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

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

libz.so.1: no version information available

此方法适用于我的情况,请在.bash_概要文件中添加以下行:

LD\u LIBRARY\u PATH=/lib64:$LD\u LIBRARY\u PATH


然后运行
~/。bash_profile

为什么在/usr/local中有libz?它可能是一个过时的遗迹,你可以安全地删除吗?嗯。不幸的是,我对Linux不太了解。
/usr/local
上的Libs有特定含义吗?如果它放在那里,它总是一个“遗迹”?嗯/usr/local意味着它是在本地编译的,而不是由OS发行版提供的。有时人们这样做是因为他们需要一个比发行版更新的版本,然后发行版会更新到更新的版本,而/usr/local中的版本会被忘记。不过那只是猜测而已。如果不是您自己编译zlib,那么其他具有机器root访问权限的人会编译。问他们为什么。。。也许可以尝试
LD\u LIBRARY\u PATH=/usr/lib git--version
覆盖它,直到得到答案。是的,
LD\u LIBRARY\u PATH=/usr/lib git--version
似乎可以工作。如何在git上设置默认值?这不是git配置,而是动态链接器配置。您可以用包装器脚本替换
/usr/bin/git
,但这更像是推迟问题而不是修复问题。你需要弄清楚在/usr/local中做了什么,以及其他应用程序是否还需要本地的zlib。我应该如何/为什么继续,确切地说?谷歌用于构建git。在那里,您将找到一组
sudo apt get install
参数。一种简单的方法是卸载libz并将其删除。然后重新安装它。我刚刚编译/安装了git。这是一个可怕的Debian Lenny(5)服务器,因此存储库不再维护。为了下载软件包,我必须设置一些后端口或其他解决方法。我已经用
CFLAGS=“-liconv”
运行了
makeinstall
,因为找不到
iconv
。我已经更新了我的答案,以显示我的
apt-get-install-zlib1g
输出。很棒的答案。php也依赖于libz.so.1,因此我将推迟此修复。但显然这是一条路要走。谢谢
libz.so.1: no version information available