我有一个conda环境设置,必须像这样设置我的LD_LIBRARY_PATH
:
export LD_LIBRARY_PATH=$HOME/.miniconda3/envs/ll4ma/lib:$LD_LIBRARY_PATH
然而,一旦我这样做了,我就开始让我的终端充斥着这样的信息:
/bin/bash: /home/ll4ma/.miniconda3/envs/ll4ma/lib/libtinfo.so.6: no version information available (required by /bin/bash)
知道怎么解决这个问题吗?我正在用catkin
为ROS构建一些代码,这条消息在这个过程中可能会打印20次,这使得终端输出很难查看。
发布于 2022-06-01 15:54:25
事实证明,libtinfo
的版本(作为ncurses
的一部分安装)没有提供这个相关的答案中建议的版本信息。我能够通过强制从ncurses
通道安装conda-forge
来解决这个问题,而不是默认情况。在我的conda env的YAML配置中,我只做了以下操作:
dependencies:
- conda-forge::ncurses
如果从命令行安装,则可以
conda install -c conda-forge ncurses
如果您没有指定通道,那么您需要按照描述的这里设置通道优先级,这样它就会赋予conda-forge
优先权。
使用来自conda-forge
的conda-forge
版本而不是默认的版本消除了发送给我的终端的消息,因为conda-forge
one附带了所描述的这里的版本信息。
发布于 2022-05-30 03:39:26
很可能您的conda环境有一个较旧的libtinfo.so.6库,并且当您将conda路径导出到LD_LIBRARY_PATH时,这个会话中需要libtinfo.so.6的每个程序都将从您的conda环境中加载库。现在,当bash想要加载libtinfo.so.6时,它需要一个包含特定符号的更新版本,但是conda的库没有提供这个符号,因此ld抱怨没有可用的版本信息。
如果您正在运行一个可执行文件,或者您正在编译一个需要这个库的程序,您可以简单地在运行的程序之前追加环境变量。例如,LD_LIBRARY_PATH=$HOME/.miniconda3/envs/ll4ma/lib:$LD_LIBRARY_PATH /bin/bash
将使用前面指定的LD_LIBRARY_PATH运行bash。这将将更改后的环境变量的范围限制在这一行,这样您的全局环境就不会受到影响。解决此问题的另一种方法是简单地删除conda环境中的libtinfo.so.6 (确保在删除它之前备份),并测试您的程序是否还能运行。在许多情况下,库是设计成与ABI兼容的,所以使用更新版本的库不会破坏任何东西。
https://stackoverflow.com/questions/72103046
复制相似问题