【问题标题】:Dockerfile and dpkg commandDockerfile 和 dpkg 命令
【发布时间】:2020-05-14 21:37:08
【问题描述】:

我正在尝试创建一个 Dockerfile 来安装 VuFind。

这是我的 Dockerfile:

#Name of container: docker-vufind:3

# Pull base image
FROM ubuntu:16.04
MAINTAINER xxx  "xxx@mail.com"

#Install latest patches
RUN apt-get update && apt-get install -y \
    && apt-get install -y wget 

#Obtain the package
RUN wget http://downloads.sourceforge.net/vufind/vufind_3.1.1.deb?use_mirror=osdn -O vufind_3.1.1.deb

#Install it
RUN dpkg -i vufind_3.1.1.deb

#Install VuFind's dependecies
RUN apt-get install -y -f

我在我的 Ubuntu 的 bash 上启动了这些命令,软件运行良好,但我似乎无法使用 Dockerfile 获得相同的结果,因为 dpkg 命令因缺少依赖项而失败。

The command '/bin/sh -c dpkg -i vufind_3.1.1.deb' returned a non-zero code: 1

在 dpkg 命令行之前安装依赖项(Apache、jdk、php...)是创建工作 Dockerfile 的唯一方法还是有更短的方法?

【问题讨论】:

  • 仅供参考,但您可以忽略 wget 安装并使用 cmd `ADD http:\\path\to\file.txt file.txt'

标签: dependencies dockerfile dpkg


【解决方案1】:

使用 apt 版本 1.1~exp11(自 Ubuntu 16.04 起可用),您可以单独使用 apt 安装 .deb 文件并解决依赖关系:

apt install ./vufind_3.1.1.deb

注意./

【讨论】:

  • 谢谢!这是黄金。他们同样apt 除了花哨的加载栏之外没有什么新东西:D
【解决方案2】:

不是最优雅的,但是:

#continue executing even if command fails
RUN dpkg -i vufind_3.1.1.deb || true

【讨论】:

  • 最后一行不是没必要吗? IE。 apt-get install -f 也会安装之前尝试过的 deb 包。
  • 确实,不再需要最后一行了。一切都应该在第二个命令之后解决。
  • 难道没有办法在一个命令中运行带有依赖关系的dpkg -i package.deb,而不必事后运行apt-get install -f,这既丑陋又烦人?
  • @AugustinRiedinger dpkg 无法解决依赖关系,因为它只管理包,而不是存储库(如 yumapt
  • 我不确定为什么删除了apt-get install -y -f 行。也许这是 VuFind 更高版本特有的东西。我来到这里试图为 wkhtmltopdf 安装依赖项,因为dpkg -i ...dpkg: dependency problems prevent configuration of wkhtmltox: wkhtmltox depends on fontconfig; however: Package fontconfig is not installed... 等。apt-get install -y -f 行安装了所有依赖项。谢谢!
【解决方案3】:

稍微优雅一些​​。

# Run both commands together
RUN dpkg -i vufind_3.1.1.deb; apt-get install -y -f

【讨论】:

    【解决方案4】:

    似乎找到了一个更清洁的替代方案,至少对我来说是这样。由于apt 的 CLI 不稳定(正如他们在 Docker 构建过程中警告的那样),我选择使用包 gdebi-core,它可以不包含 .deb 包及其依赖项:

    sudo apt-get install gdebi-core
    sudo gdebi /path/to/filename.deb
    

    在超级用户上查看answer 了解更多详情/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-01-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-29
      • 2015-08-19
      • 1970-01-01
      相关资源
      最近更新 更多