当使用conda时,tmux和emacs会出现“error while loading shared libraries: libtinfo.so.6”的错误。

10

我已经在默认环境中通过conda安装和更新了tmuxemacs,并且在conda list中有这些版本:

# packages in environment at /home/maxghenis/miniconda3:
#
# Name                    Version                   Build  Channel
tmux                      2.7                  hc78d2af_1    conda-forge
emacs                     26.1                 h3a2ea38_1    conda-forge

然而,当我尝试启动tmuxemacs时,我遇到了这个错误:

error while loading shared libraries: libtinfo.so.6: cannot open shared object file: No such file or directory

根据错误信息,我缺少libgsl.so.0共享库文件,而我有5个libtinfo文件:

(xenial)maxghenis@localhost:~$ sudo find / -name "libtinfo.so"
/home/maxghenis/miniconda3/pkgs/ncurses-5.9-10/lib/libtinfo.so
/home/maxghenis/miniconda3/pkgs/ncurses-6.1-hf484d3e_0/lib/libtinfo.so
/home/maxghenis/miniconda3/envs/tidycensus/lib/libtinfo.so
/home/maxghenis/miniconda3/lib/libtinfo.so

(xenial)maxghenis@localhost:/lib$ sudo find / -name "libtinfo.so.6"
/lib64/libtinfo.so.6

1
我不确定为什么链接 libgsl.so 会有帮助,因为缺少 libtinfo.so... 另外,find 命令的错误消息是因为谓词中的 name 是小写的 n,你应该寻找 libtinfo 而不是 libgsl... - darthbith
1
但是你不需要 libgsl.so,你需要 libtinfo.so。你为什么在寻找 libgsl? - darthbith
我的错误-那个问题出现在我的搜索中,所以我认为这些文件是相关的,但是我看到它们并不是。我已经使用sudo find / -name "libtinfo.so"更新了问题,并列出了4个结果。 - Max Ghenis
你能否尝试将ncurses安装到您的基本环境中? - darthbith
刚刚发布了赏金。这是我的 conda list 中的 ncurses 安装信息:# Name Version Build Channel ncurses 6.1 hf484d3e_0 - Max Ghenis
显示剩余2条评论
2个回答

2

遇到同样的问题。以下方法可以解决:

$ pwd
<anaconda_installation_dir>

$ ./bin/tmux
(error)


$ find . -name "libtinfo*"
...
./lib/libtinfo.so  # this is the needed shared lib shipped deployed by  conda, just need it been found
...

$ ln -s `readlink -f ./lib/libtinfo.so` `readlink -f ./lib/libtinfo.so | sed 's@libtinfo.so$@libtinfo.so.6@'`
$ find . -name "libtinfo*"
...
./lib/libtinfo.so  # original lib
./lib/libtinfo.so.6  # the new one which is a symlink
...

$ ./bin/tmux
(ok)

为什么需要这样做——我的情况是在一种行政上“敌对”的环境中工作,我无法快速按需部署软件包(当然也没有root/sudo权限),但仍需要类似于screen的解决方案。


1

您可能需要安装一个名为libncurses6的包。当您搜索该库时,应查找文件。

find / -name "libtinfo.so*" -ls

文件libtinfo.so仅在创建可执行文件时使用,通常是实际库的符号链接。运行程序时不需要它。文件"libtinfo.so.6"也经常是实际库的符号链接。在我的系统上,它是

/lib64/libtinfo.so.6 -> libtinfo.so.6.1

由于tmux和emacs是系统工具,而且您可能不想使用它们的不同版本,为什么不在基本系统中安装它们,而不使用conda呢?

这是我的命令结果。在没有conda(apt-get)的情况下安装时,在启动时会产生以下错误:-bash: /home/maxghenis/miniconda3/bin/emacs: No such file or directory 这是“查找”Emacs的结果 - Max Ghenis
结果发现它们被安装到了/usr/bin,而这个路径不在我的$PATH中。这里是我解决问题的命令,包括emacstmux。所以这是一个替代方案,但我仍然想知道如何使用conda版本。 - Max Ghenis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接