在 Docker Windows 映像中安装 Ghostscript 返回非零代码:1


  • 开发环境:Windows Server 2019
  • 码头工人版本:19.03.5

官方的Ghostscript文档是这样描述在Windows上安装的:

4.1 安装

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

安装程序基于 NSIS(另请参阅版本.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:tmpgs952w64.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:tmpgs952w64.exe /S 
---> Running in c86c8393a4fa 
The command 'pwsh.exe -Command $ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue'; C:tmpgs952w64.exe /S' returned a non-zero code: 1

这意味着没有安装Ghostscript。

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

还是我应该完全放弃手动安装并使用某种包管理器?我不知道Windows现在是如何做到的,上次我使用Windows时,我们仍然必须安装小号Winsock才能上网......

我解决了!

我做了 2 项更改:

  1. 将基本映像从jenkins/agent:jdk8-nanoserver-1809更改为jenkins/agent:jdk8-windowsservercore-1809(如果不这样做,下一步将不起作用,Windows Nano Server 不支持巧克力(
  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 外壳才能找到巧克力。我发现这一点很艰难,但巧克力安装程序最后也说了出来。

最新更新