Ошибка Erlang: при загрузке общих библиотек: libncursesw.so.6

После установки Elrang/OTP на сервер с Ubuntu 15.10,

  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

3 ответа

Я думаю, что вам нужно также установить libncursesw5 пакет:

sudo apt install libncursesw5 libncursesw5-dev

Затем попробуйте выполнить команду, которая выдает "ошибку при загрузке общих библиотек".

Обновление: если у вас есть эти пакеты и вы все еще получаете ошибку, возможно, это связано с тем, что ваше программное обеспечение ожидает версию 6 libncursesw, но только версия 5 доступна в Ubuntu. (см. 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 позже.

Пожалуйста, дайте мне знать, если это было полезно или если у вас есть дополнительные вопросы.

Для моей конкретной среды исправлено с помощью:

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

В общем за пропажу *.so.6общие зависимости версия пакета должна содержать 6, а не 5 в своем имени, поэтому в этом случае (ошибка времени выполнения: libncursesw.so.6: cannot open shared object file) Мне пришлось установить (в моем контейнере без дистрибутива) libncursesw6упаковка:

sudo apt update && sudo apt install -y libncursesw6

Другие вопросы по тегам