关于从 NFS4 安装加载共享库,我遇到了一些非常奇怪的行为,我希望有人能够阐明它。
考虑以下:
$ ucto
ucto: error while loading shared libraries: libfolia.so.3: cannot open shared object file: No such file or directory
经过调查,我认为没有理由出现此错误:
$ which ucto
/vol/customopt/lamachine/bin/ucto
$ echo $LD_LIBRARY_PATH
/vol/customopt/lamachine/lib:/vol/customopt/machine-translation/lib:/vol/customopt/nlptools/lib/:
$ ls -lh /vol/customopt/lamachine/lib/libfolia.so.3*
lrwxrwxrwx 1 proycon customopt 17 Sep 18 16:42 /vol/customopt/lamachine/lib/libfolia.so.3 -> libfolia.so.3.0.1
-rwxr-xr-x 1 proycon customopt 9.5M Sep 18 16:42 /vol/customopt/lamachine/lib/libfolia.so.3.0.1
我确认我可以毫无问题地打开库文件。
现在当我切换到另一台主机那使用完全相同的 NFS 挂载,我没有遇到任何问题,并且可以毫无问题地找到并加载该库。
安装座安装如下:
customopt-srv.mydomain.com:/export/customopt on /vol/customopt type nfs (rw,nosuid,tcp,hard,intr,sloppy,vers=4)
这里发生了什么?是否有一些我不知道的缓存?有人遇到过类似的问题吗?我应该查看客户端还是服务器端?
客户端和服务器都运行 Ubuntu 14.04 LTS。
答案1
听起来像你的库缓存(/etc/ld.so.cache)尚未在客户端上更新。检查ldconfig -p
下次问题发生时的输出以进行确认。
答案2
NFS4 使用缓存。如果您在服务器上添加/修改/删除任何文件,客户端上的 NFS4 缓存将不会注意到这一点,并将继续使用旧文件。
一段时间后,缓存的文件会失效,因为它太旧并且会发生新的查找。那时它“突然”起作用了。