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)
成功!我吹掉了现有的库,所有不在的库,/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)
一切似乎都很棒!