J Install Error: Cannot Find "libedit.so"
J Install Error: Cannot Find "libedit.so"
我不确定这是根本问题 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
上。
- Linux 从
uname -sr
返回的系统信息:Linux 4.9.125-linuxkit
- Docker 我正在使用的图像:https://github.com/jupyter/docker-stacks/tree/master/minimal-notebook
jconsole 可执行文件未找到 libedit 共享对象 - 有几种方法可以解决此问题。
首先,据我所知,不使用 $PATH
搜索共享对象文件:您需要 change/create $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
,或者只是 link 使用 [=20] 将共享对象 /usr/lib/x86_64-linux-gnu
=](尽管每次 运行 图片时都必须这样做)。
我不确定这是根本问题 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
上。
- Linux 从
uname -sr
返回的系统信息:Linux 4.9.125-linuxkit - Docker 我正在使用的图像:https://github.com/jupyter/docker-stacks/tree/master/minimal-notebook
jconsole 可执行文件未找到 libedit 共享对象 - 有几种方法可以解决此问题。
首先,据我所知,不使用 $PATH
搜索共享对象文件:您需要 change/create $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
,或者只是 link 使用 [=20] 将共享对象 /usr/lib/x86_64-linux-gnu
=](尽管每次 运行 图片时都必须这样做)。