代码之家  ›  专栏  ›  技术社区  ›  Michael

运行echo-e“deb http…”准备目标文件的错误内容

  •  6
  • Michael  · 技术社区  · 7 年前

    Ubuntu 16.04.2

    版本17.06.0-ce .

    RUN echo -e "deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx\ndeb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx" | tee /etc/apt/sources.list.d/nginx.list
    

    /etc/apt/sources.list.d/nginx.list :

    -e deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx
    deb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx
    

    好吧,就好像反斜杠转义的解释是有效的。但文件中出现了“-e”。

    这样的形象就无法塑造。

    2 回复  |  直到 7 年前
        1
  •  13
  •   Samuel Toh    7 年前

    尝试使用 bash shell 对于 echo sh -e

    解决这个问题;

    更新到:

    RUN bash -c 'echo -e "deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx\ndeb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx" | tee /etc/apt/sources.list.d/nginx.list'
    

    root@87944d07f493:/etc/apt/sources.list。d#cat nginx。列出deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx deb src xenial nginx公司

    你可以通过切换到 上海 回响 再次命令。

        2
  •  0
  •   Tomas Staig    3 年前

    正如Toh所说,这是一个问题,因为Docker使用sh来执行命令。之所以会出现这个问题,是因为sh(shell)有一个内置的“echo”命令,它不接受任何标志,甚至不接受-h/-help。所以它只需按原样打印任何内容。

    RUN /bin/echo -e "deb http://nginx.org/packages/mainline/ubuntu/ xenial nginx\ndeb-src http://nginx.org/packages/mainline/ubuntu/ xenial nginx" | tee /etc/apt/sources.list.d/nginx.list
    

    “echo”二进制文件可能安装在docker映像中的不同位置,因此请确保在“which”的帮助下检查它在哪里(/bin/、/usr/bin/,等等),并在上面的命令中相应地替换它。