在 CentOS 上修复共享 PCRE 库

Cra*_*tis 6 unix symbolic-link libraries pcre

这不是关于 PCRE 的问题,而是关于更新共享库的问题。我正在运行的 CentOS 发行yum版只允许升级到 6.6 版或类似版本。

我正在安装一个需要 PCRE 8.0+ 版本的问题跟踪器。我无法卸载当前的 PCRE 6.6 版本,因为几乎所有内容都依赖于它,并且系统会崩溃。

因此,我从源代码编译并安装了 PCRE 8.12,但即使pcretest -C显示了新版本,在我的测试页面上调用 php_info() 也表明 6.6 库仍在加载。我找到了一个指向一个站点链接,链接建议如何将旧库替换为新库。

在这样做时,我认为有些事情不太对劲。一些命令正在报告问题:

/usr/bin/php: error while loading shared libraries: libpcre.so.0: cannot open shared object file: No such file or directory
Run Code Online (Sandbox Code Playgroud)

我应该怎么做才能解决这个问题?我对共享/动态库不是很熟悉。我有以下文件:

[root@vps tracker]# find / -name libpcre.so* -exec ls -l '{}' \;
lrwxrwxrwx 2 root root 16 Jul 14 07:53 /lib64/libpcre.so.0 -> libpcre.so.0.0.1
lrwxrwxrwx 1 root root 16 Jul 14 07:53 /usr/local/lib/libpcre.so.0 -> libpcre.so.0.0.1
-rwxr-xr-x 1 root root 116790 Jul 14 07:53 /usr/local/lib/libpcre.so.0.0.1
lrwxrwxrwx 2 root root 16 Jul 14 07:53 /usr/local/lib/libpcre.so -> libpcre.so.0.0.1
lrwxrwxrwx 1 root root 16 Jul 14 07:16 /root/pcre-8.12/.libs/libpcre.so.0 -> libpcre.so.0.0.1
-rwxr-xr-x 1 root root 116790 Jul 14 07:16 /root/pcre-8.12/.libs/libpcre.so.0.0.1
lrwxrwxrwx 1 root root 16 Jul 14 07:16 /root/pcre-8.12/.libs/libpcre.so -> libpcre.so.0.0.1
Run Code Online (Sandbox Code Playgroud)

Cra*_*tis 6

成功!我吹掉了现有的库,所有不在的库,/root/pcre-8.12/然后./configure; make; make install从源目录运行。

它安装正确,但仍然显示类似的错误。我注意到:

[root@vps pcre-8.12]# ldd /usr/sbin/httpd
libm.so.6 => /lib64/libm.so.6 (0x00002b3c8a9dd000)
libpcre.so.0 => not found
(bunch of others)
Run Code Online (Sandbox Code Playgroud)

库在 中/lib64/,而源安装程序创建的唯一链接是:

/usr/local/lib/libpcre.so.0
Run Code Online (Sandbox Code Playgroud)

所以,我只是在以下位置创建了一个链接/lib64/

[root@vps tracker]# link /usr/local/lib/libpcre.so.0.0.1 /lib64/libpcre.so.0
Run Code Online (Sandbox Code Playgroud)

一切似乎都很棒!