【问题标题】:Installing Ghostscript in Docker Windows image returned a non-zero code: 1在 Docker Windows 映像中安装 Ghostscript 返回了一个非零代码:1
【发布时间】:2020-06-15 13:33:03
【问题描述】:
  • 开发环境:Windows Server 2019
  • Docker 版本:19.03.5

official Ghostscript documentation 说这是关于在 Windows 上安装的:

4.1 安装

要在 Windows 上安装 Ghostscript,您应该运行安装程序可执行文件。

安装程序基于 NSIS(另请参见 Release.htm)并支持一些标准 NSIS 选项:/NCRC 禁用 CRC 检查,/S 静默运行安装程序或卸载程序,/D 设置默认安装目录(它必须是命令行中使用的最后一个参数,并且不能包含任何引号,即使路径包含空格。仅支持绝对路径。

按照这个文档,我把它放在我的Dockerfile

FROM jenkins/agent:jdk8-nanoserver-1809

WORKDIR /tmp
ADD https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs952/gs952w64.exe .
RUN C:\tmp\gs952w64.exe /S

这是docker build的输出:

Sending build context to Docker daemon  5.632kB 
Step 1/4 : FROM jenkins/agent:jdk8-nanoserver-1809 
 ---> 026ce64bdabf
Step 2/4 : WORKDIR /tmp
 ---> Using cache
 ---> fd854f6da0a9
Step 3/4 : ADD https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs952/gs952w64.exe .
Downloading [==================================================>]  27.64MB/27.64MB 
 ---> Using cache
 ---> 259453368869 
Step 4/4 : RUN C:\tmp\gs952w64.exe /S 
 ---> Running in c86c8393a4fa 
The command 'pwsh.exe -Command $ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; C:\tmp\gs952w64.exe /S' returned a non-zero code: 1

这意味着没有安装 Ghostscript。

这是因为我没有指定安装目录吗?我对默认目录没问题。

或者我应该完全放弃手动安装并使用某种包管理器吗?不知道现在windows是怎么做到的,上次用windows还是要安装小号Winsock才能上网……

【问题讨论】:

  • 如果没有看到安装程序的任何反馈,这很难说;我的怀疑是执行安装程序的“用户”没有创建所需目录或类似内容的权限,但我对 docker 或 Jenkins 一无所知。您当然可以简单地将 Ghostscript 可执行文件和 DLL 放在一个方便的文件夹中,但这不会创建某些应用程序所依赖的注册表项。

标签: windows docker nsis ghostscript


【解决方案1】:

我解决了!

我做了 2 处更改:

  1. 将基础映像从 jenkins/agent:jdk8-nanoserver-1809 更改为 jenkins/agent:jdk8-windowsservercore-1809(如果不这样做,下一步将无法工作,Windows Nano Server 不支持 Chocolatey)
  2. 安装 Chocolatey 作为包管理器
FROM jenkins/agent:jdk8-windowsservercore-1809

ADD https://chocolatey.org/installchocolatey.cmd .
RUN .\installchocolatey.cmd
RUN choco install --yes ghostscript --version=9.24 ;\
    choco install --yes imagemagick --version=7.0.10.14 ;\

是的,两个单独的RUN 命令。您必须这样做,因为需要重新启动 Windows shell 才能找到 Chocolatey。我很难找到这一点,但 Chocolatey 安装程序最后也这么说。

【讨论】:

    猜你喜欢
    • 2016-12-29
    • 2020-12-17
    • 2018-11-15
    • 2020-09-14
    • 2018-10-26
    • 2021-10-30
    • 2017-05-31
    • 2020-11-07
    • 2019-05-10
    相关资源
    最近更新 更多