在 node:7 镜像中安装 ghostscript4js; libgs.so 未找到

Posted

技术标签:

【中文标题】在 node:7 镜像中安装 ghostscript4js; libgs.so 未找到【英文标题】:Installing ghostscript4js in node:7 image; libgs.so not found 【发布时间】:2017-10-09 11:43:37 【问题描述】:

我目前正在使用 docker 容器开发一个 Web 应用程序。 我正在使用 node:7 基础映像并安装了 ghostscript 及其依赖项。我的项目还包含一个包含所有节点包的 package.json。我需要使用 ghostscript4js,它依赖于 ghostscript 和 node-gyp,它们都已安装。 在 npm 安装期间,我收到 g++ 错误:

> ghostscript4js@2.0.7 install /usr/src/app/node_modules/ghostscript4js
> node-gyp rebuild

gyp info it worked if it ends with ok
gyp info using node-gyp@3.5.0
gyp info using node@7.10.1 | linux | x64
gyp http GET https://nodejs.org/download/release/v7.10.1/node-v7.10.1-headers.tar.gz
gyp http 200 https://nodejs.org/download/release/v7.10.1/node-v7.10.1-headers.tar.gz
gyp http GET https://nodejs.org/download/release/v7.10.1/SHASUMS256.txt
gyp http 200 https://nodejs.org/download/release/v7.10.1/SHASUMS256.txt
gyp info spawn /usr/bin/python2
gyp info spawn args [ '/usr/local/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args   'binding.gyp',
gyp info spawn args   '-f',
gyp info spawn args   'make',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/src/app/node_modules/ghostscript4js/build/config.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/usr/local/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
gyp info spawn args   '-I',
gyp info spawn args   '/root/.node-gyp/7.10.1/include/node/common.gypi',
gyp info spawn args   '-Dlibrary=shared_library',
gyp info spawn args   '-Dvisibility=default',
gyp info spawn args   '-Dnode_root_dir=/root/.node-gyp/7.10.1',
gyp info spawn args   '-Dnode_gyp_dir=/usr/local/lib/node_modules/npm/node_modules/node-gyp',
gyp info spawn args   '-Dnode_lib_file=node.lib',
gyp info spawn args   '-Dmodule_root_dir=/usr/src/app/node_modules/ghostscript4js',
gyp info spawn args   '--depth=.',
gyp info spawn args   '--no-parallel',
gyp info spawn args   '--generator-output',
gyp info spawn args   'build',
gyp info spawn args   '-Goutput_dir=.' ]
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: Entering directory '/usr/src/app/node_modules/ghostscript4js/build'
  CXX(target) Release/obj.target/ghostscript4js/src/ghostscript4js.o
  SOLINK_MODULE(target) Release/obj.target/ghostscript4js.node
g++: error: /usr/lib/x86_64-linux-gnu/libgs.so: No such file or directory
ghostscript4js.target.mk:121: recipe for target 'Release/obj.target/ghostscript4js.node' failed
make: Leaving directory '/usr/src/app/node_modules/ghostscript4js/build'
make: *** [Release/obj.target/ghostscript4js.node] Error 1
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack     at ChildProcess.onExit (/usr/local/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:276:23)
gyp ERR! stack     at emitTwo (events.js:106:13)
gyp ERR! stack     at ChildProcess.emit (events.js:194:7)
gyp ERR! stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:215:12)
gyp ERR! System Linux 4.9.49-moby
gyp ERR! command "/usr/local/bin/node" "/usr/local/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
gyp ERR! cwd /usr/src/app/node_modules/ghostscript4js
gyp ERR! node -v v7.10.1
gyp ERR! node-gyp -v v3.5.0
gyp ERR! not ok
npm info lifecycle ghostscript4js@2.0.7~install: Failed to exec install script

我不确定如何确保有一个 libgs.so 以及它在哪里。它应该由 ghostscript 安装,安装得很好。我对 docker 比较陌生,尤其是在使用节点映像作为基础方面。

这是包含我正在使用的命令的 dockerfile:

    FROM node:7

ENV APP_DIR="/usr/src/app"

COPY ./ $APP_DIR

# Step 1: Install App
# -------------------
WORKDIR $APP_DIR

# Step 2: Install Python, GhostScript and npm packages
# -------------------
ARG CACHE_DATE=2017-01-01
RUN \
  apt-get update && \
  apt-get install -y build-essential make gcc g++ python python-dev python-pip python-virtualenv
RUN apt-get update && apt-get -y install ghostscript && apt-get clean
RUN apt-get install -y libgs-dev
RUN GS4JS_HOME="/usr/lib" && export GS4JS_HOME
RUN npm install

# Step 3: Start App
# -----------------
CMD ["npm", "run", "start"]

【问题讨论】:

请查看***.com/q/17653569/1740715 Unable to load library 'gs': libgs.so: cannot open shared object file: No such file or directory的可能重复 我相信链接过程确实是我的问题。关于 libgs.so,我仍然不确定从什么链接到哪里,并希望得到一些帮助 【参考方案1】:

我被指出了正确的方向。似乎没有使用RUN GS4JS_HOME="/usr/lib" && export GS4JS_HOME 的环境变量的图像 我更改了 dockerfile 并改用 ENV GS4JS_HOME="/usr/lib"。现在它正在工作。

【讨论】:

以上是关于在 node:7 镜像中安装 ghostscript4js; libgs.so 未找到的主要内容,如果未能解决你的问题,请参考以下文章

在 Docker 的 CentOS7 镜像 中安装 mysql

在 Docker 的 CentOS7 镜像 中安装 mysql

如何在 Alpine linux docker 镜像中安装 oracle jdk11?

如何在我的 docker 镜像中安装 python-tk

Jupyter中安装第三方库和切换pip镜像源

Jupyter中安装第三方库和切换pip镜像源