我正在尝试部署一个应用程序。我创建了一个 *.deb 包(使用 fpm),它将库安装到$HOME/.local/lib/nca
并将二进制文件安装到$HOME/.local/bin
。
/etc/ld.so.conf.d/
为了使我的库可见,我还安装了一个仅由一行和一个换行符组成的conf 文件$HOME/.local/lib/nca
。当我尝试运行该应用程序时,它抱怨无法打开库。如果我设置LD_LIBRARY_PATH
为,问题就消失了$HOME/.local/lib/nca
。
于是我跑了起来ldconfig -v
,首先看到的是:/sbin/ldconfig.real: Can't stat $HOME/.local/lib/nca
。但是目录在那里,调用stat
它完全没问题。
我怎样才能让 ldconfig 看到我部署的库?
Ubuntu 版本 18.04。
编辑: 按照要求:
$ ldconfig -v
/sbin/ldconfig.real: Can't stat $HOME/.local/lib/nca: No such file or directory
/sbin/ldconfig.real: Can't stat /usr/local/lib/x86_64-linux-gnu: No such file or directory
/sbin/ldconfig.real: Path `/lib/x86_64-linux-gnu` given more than once
/sbin/ldconfig.real: Path `/usr/lib/x86_64-linux-gnu` given more than once
然后它像往常一样列出目录的库。我尝试以 sudo 和非 sudo 方式运行它。我注意到的输出中唯一的不同是非 sudo 打印“无法创建临时缓存文件 /etc/ld.so.cache~:权限被拒绝”。
LD_LIBRARY_PATH 是使用间接路径设置的:
export LD_LIBRARY_PATH=../lib/nca
,我没有检查它是否可以正常工作$HOME
。
编辑2:当我编辑/etc/ld.so.conf.d/nca.conf
并更改$HOME
为/home/marpan
(以便完整路径为/home/marpan/.local/lib/nca
)时,一切正常。ldconfig -v
不再抱怨,但列出了上述路径中的所有库并且我的可执行文件运行了。