我正在运行Archlinux。最近,其中一个名为的软件包icu
得到了更新;然而,Firefox 依赖于libicuuc.so.56
,而 R 依赖于libicuuc.so.55
。我怎么解决这个问题?
注意:R 包是针对Intel MKL
libiary 构建的,因此它不适用于新版本的依赖项。我尝试重建 R ——它仍然依赖于旧的libicuuc.so.55
答案1
我假设您希望使用旧库运行特定的可执行文件。让我们调用可执行文件myprogram
。
libicuuc.so.55
例如,如果您放置在不同的目录中,则/opt/oldlibs/libicuuc.so.55
可以myprogram
通过如下命令指示使用旧库:
LD_LIBRARY_PATH=/opt/oldlibs myprogram
库文件可以从包文件中提取(您可能可以在 参考资料中找到/var/cache/pacman/pkg
)。
如果这不能解决您打算如何使用应用程序的问题,您可以考虑在受限环境(使用chroot
)或容器中运行它。
答案2
我使用 arch linux 的经验
systemctl start mongodb 给出进程启动错误
我只是简单地击中 日志控制-xe检查当前日志
它显示缺少 libboost_system.so.1.64.1 (旧的)
这是一个 sumlink 我用它来解决它
readlink -f /lib/libboost_system.so.1.65.1 (new one)
readlink 告诉我符号链接指向 /usr/lib/libboost_system.so.1.65.1
我从 /var/cache/pacman/pkg 中提取 boost-libs 1.64 并将其所有 /lib 文件也粘贴到 /usr/lib跳过以覆盖旧文件
这解决了我打破依赖关系的进一步工作,如果不能解决,则创建一个缺少的符号链接,例如
ln -s /lib/libboost_system.so.1.64.1 /usr/lib/libboost_system.so.1.64.1
经验获取
不寻找补丁总是使用 pacman -Suy && pacman -S package_name用于安装任何东西。不支持部分更新(在 arch 的情况下)