Erlang 错误:加载共享库时:libncursesw.so.6

Erlang 错误:加载共享库时:libncursesw.so.6

在 Ubuntu 15.10 服务器上安装 Elrang/OTP 后,

  sudo apt-get install build-essential 
  sudo apt-get --fix-missing -y install build-essential m4 libncurses5-dev libssh-dev unixodbc-dev libgmp3-dev libwxgtk2.8-dev libglu1-mesa-dev fop xsltproc default-jdk
  sudo apt-get --fix-missing -y install build-essential m4 libncurses5-dev libssh-dev unixodbc-dev libgmp3-dev libwxgtk2.8-dev libglu1-mesa-dev fop xsltproc default-jdk
  wget https://packages.erlang-solutions.com/erlang/esl-erlang/FLAVOUR_1_general/esl-erlang_18.3-1~ubuntu~wily_amd64.deb
  sudo dpkg -i esl-erlang_18.3-1~ubuntu~wily_amd64.deb
  sudo apt-get update

  sudo apt-get install esl-erlang
  sudo apt-get install elixir

我在运行我的一个应用程序时出现错误:

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

更新:

$ locate libncursesw5
/usr/share/doc/libncursesw5
/var/lib/dpkg/info/libncursesw5:amd64.list
/var/lib/dpkg/info/libncursesw5:amd64.md5sums
/var/lib/dpkg/info/libncursesw5:amd64.postinst
/var/lib/dpkg/info/libncursesw5:amd64.postrm
/var/lib/dpkg/info/libncursesw5:amd64.shlibs
/var/lib/dpkg/info/libncursesw5:amd64.symbols


$ locate libncursesw
/lib/x86_64-linux-gnu/libncursesw.so.5
/lib/x86_64-linux-gnu/libncursesw.so.5.9
/usr/share/doc/libncursesw5
/var/lib/dpkg/info/libncursesw5:amd64.list
/var/lib/dpkg/info/libncursesw5:amd64.md5sums
/var/lib/dpkg/info/libncursesw5:amd64.postinst
/var/lib/dpkg/info/libncursesw5:amd64.postrm
/var/lib/dpkg/info/libncursesw5:amd64.shlibs
/var/lib/dpkg/info/libncursesw5:amd64.symbols

答案1

我认为您还需要安装该libncursesw5软件包:

sudo apt install libncursesw5 libncursesw5-dev

然后尝试运行给出“加载共享库时出错”的命令。

更新:如果您安装了这些软件包但仍然出现错误,则可能是因为您的软件需要版本 6 libncursesw,但 Ubuntu 中只有版本 5。(请参阅https://bbs.archlinux.org/viewtopic.php?id=202562,这是同样的问题,但在 Arch Linux 上。)

作为一种可行的解决方法,你可以创建一个符号链接,这样你的软件安装了版本 6,即使它实际上使用的是版本 5:

sudo ln -s /lib/x86_64-linux-gnu/libncursesw.so.5  /lib/x86_64-linux-gnu/libncursesw.so.6

这不是最优雅的解决方案,但可能有用。如果你选择这样做,请记住将其记录在某处,以防以后升级 Ubuntu 时遇到任何问题。

如果这有帮助或者您还有其他问题,请告诉我。

答案2

一般来说,对于缺少的*.so.6共享依赖项,软件包版本名称中应该包含 6,而不是 5,因此在这种情况下(运行时错误:)libncursesw.so.6: cannot open shared object file我必须安装(在我的“distroless”容器中)该libncursesw6软件包:

sudo apt update && sudo apt install -y libncursesw6

答案3

对于我的特定环境,修复如下:

# Note: add sudo if needed:
ln -fs /lib/x86_64-linux-gnu/libncursesw.so.6 /opt/conda/lib/libncursesw.so.6

相关内容