【问题标题】:J Install Error: Cannot Find "libedit.so"J 安装错误:找不到“libedit.so”
【发布时间】:2019-02-03 04:50:58
【问题描述】:

我不确定这从根本上是 Linux 问题还是 J 特定问题。

背景

我正在尝试让 j804 在 linux docker 容器中工作。我正在按照这里的说明进行操作:

https://code.jsoftware.com/wiki/System/Installation/J804/Linux

j64-804 在容器的主目录中,我以 root 身份登录。这是我得到的错误:

$ ./j64-804/jconsole.sh
bin/jconsole: error while loading shared libraries: 
libedit.so: cannot open shared object file: No such file or directory

我不确定如何从这里调试。出了什么问题,我该如何解决?

其他可能相关的细节

root@b0ed60c2a313:~# find / -name libedit.so*
/opt/conda/pkgs/libedit-3.1.20170329-haf1bffa_1/lib/libedit.so.0
/opt/conda/pkgs/libedit-3.1.20170329-haf1bffa_1/lib/libedit.so.0.0.56
/opt/conda/pkgs/libedit-3.1.20170329-haf1bffa_1/lib/libedit.so
/opt/conda/lib/libedit.so.0
/opt/conda/lib/libedit.so.0.0.56
/opt/conda/lib/libedit.so

这些目录在我的PATH 上。

【问题讨论】:

  • 我没有给你的答案,但这是我会在 J 论坛上发布的答案。我的猜测是,一般论坛将是最合适的,而且通常人们非常愿意提供帮助。 code.jsoftware.com/wiki/System/Forums#Forum_Mailing_Lists
  • 请问file bin/jconsolefile /opt/conda/lib/libedit.so 可以吗?我的猜测是 32/64 位库之间的混合。

标签: linux docker j


【解决方案1】:

jconsole 可执行文件没有找到 libedit 共享对象 - 有几种方法可以解决此问题。

首先,据我所知,不会使用$PATH 搜索共享对象文件:您需要更改/创建$LD_LIBRARY_PATH

例如,在该 Docker 映像中,运行:

$ export LD_LIBRARY_PATH="/opt/conda/lib:$LD_LIBRARY_PATH"

(您也可以在运行容器时注入此环境变量;为docker run 使用-e 选项。)

那么你有:

$ wget http://www.jsoftware.com/download/j804/install/j804_linux64.tar.gz
$ tar -xzf j804_linux64.tar.gz
$ ./j64-804/jconsole.sh
    3 + 1 4 1 5
4 7 4 8

或者,您可以在构建期间修改Dockerfile 以安装 libedit-dev:

# Install all OS dependencies for fully functional notebook server
RUN apt-get update && apt-get install -yq --no-install-recommends \
    build-essential \
    emacs \
    git \
    inkscape \
    jed \
    libsm6 \
    libxext-dev \
    libxrender1 \
    libedit-dev \ # <----- here (or wherever you fancy)
    ...

这会将 libedit 共享对象放置在 /usr/lib/x86_64-linux-gnu 中,jconsole 会在其中提取它们而无需修改环境变量。

如果您在映像中具有 root 访问权限,您也可以在那里运行 sudo apt-get install libedit-dev,或者使用 ln -s 将共享对象链接到 /usr/lib/x86_64-linux-gnu(尽管每次运行时都必须这样做图片)。

【讨论】:

    猜你喜欢
    • 2013-07-27
    • 2017-10-01
    • 2018-12-19
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    相关资源
    最近更新 更多