Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

When in conda, tmux and emacs throw "error while loading shared libraries: libtinfo.so.6"

I've installed and updated tmux and emacs via conda in my default environment, and have these versions in 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

Yet when trying to start either tmux or emacs, I get this error:

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

Per error while loading shared libraries: libgsl.so.0: cannot open shared object file: No such file or directory I have 5 libtinfo files:

(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
like image 204
Max Ghenis Avatar asked Jul 18 '18 18:07

Max Ghenis


2 Answers

Same issue. The following has worked out:

$ 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 '[email protected][email protected]@'`
$ find . -name "libtinfo*"
...
./lib/libtinfo.so  # original lib
./lib/libtinfo.so.6  # the new one which is a symlink
...

$ ./bin/tmux
(ok)

As to why this may be desired -- my case is working in a sort of administratively "hostile" environment when I don't have access to fast on-demand package deployment (as well as root/sudi as well, of course) but still need screen-like solution.

like image 166
DimG Avatar answered Nov 12 '22 04:11

DimG


You may need a package libncurses6. When you search for the library, you should look for files

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

The file libtinfo.so is only used when creating an executable, and is typically a symlink to the actual library. It is not needed to run a program. The file "libtinfo.so.6" is also often a symlink to the actual library. On my system, it is

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

As tmux and emacs are system utilities and it's not likely that you want to use different versions of them, why don't you install them in the base system without conda?

like image 1
RalfFriedl Avatar answered Nov 12 '22 03:11

RalfFriedl