J安装错误:找不到“ libedit.so”

时间:2019-02-03 04:50:58

标签: linux docker j

我不确定这是Linux问题还是J特定问题。

背景

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

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

self.m_grid1.CreateGrid( 6, 3 ) 在容器的主目录中,我以root用户身份登录。这是我得到的错误:

j64-804

我不确定如何从这里调试。怎么了,我该如何解决?

其他可能相关的详细信息

$ ./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 上。

1 个答案:

答案 0 :(得分:3)

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

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

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

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

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

然后您拥有:

$ 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,或者仅使用/usr/lib/x86_64-linux-gnu将共享库链接到ln -s中(尽管您必须这样做每次您运行图片时都使用此选项。)