gpt4 book ai didi

Docker Ubuntu 选择了错误的目录

转载 作者:行者123 更新时间:2023-12-02 20:55:51 25 4
gpt4 key购买 nike

我对 Docker 还很陌生,并试图通过尝试在其中运行 Steam 服务器来熟悉自己。
我的 Dockerfile 如下:

FROM ubuntu:20.10

RUN dpkg --add-architecture i386 \
&& apt-get update \
&& apt-get install -y \
curl \
ca-certificates \
libgcc1 \
&& apt-get clean autoclean \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/*

RUN mkdir -p steam/cmd \
&& cd steam \
&& curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf - -C cmd

RUN ./steam/cmd/steamcmd.sh +quit
我无法弄清楚为什么最后一步会引发此错误:
Step 4/4 : RUN ./steam/cmd/steamcmd.sh +quit
---> Running in c3f673328fe6
./steam/cmd/steamcmd.sh: line 37: /steam/cmd/linux32/steamcmd: No such file or directory
The command '/bin/sh -c ./steam/cmd/steamcmd.sh +quit' returned a non-zero code: 127
为什么 ./steam/cmd/steamcmd.sh被翻译成 /steam/cmd/linux32/steamcmd ?
步骤 3/3 未放置 steamcmd.sh里面 linux32 .
Step 3/4 : RUN mkdir -p steam/cmd     && cd steam     && curl -sqL "https://steamcdn-a.akamaihd.net/client/installer/steamcmd_linux.tar.gz" | tar zxvf - -C cmd
---> Running in fa5dcd1fcadc
steamcmd.sh
linux32/steamcmd
linux32/steamerrorreporter
linux32/libstdc++.so.6
linux32/crashhandler.so
使用 WORKDIR steam/cmd然后用 RUN 跟进也返回相同的结果。

最佳答案

请参阅此讨论:https://askubuntu.com/questions/133389/no-such-file-or-directory-but-the-file-exists
尝试做apt install libc6-i386作为步骤 2 的一部分。

RUN dpkg --add-architecture i386 \ 
&& apt-get update \
&& apt-get install -y \
curl \
ca-certificates \
libgcc1 \
libc6-i386 \
&& apt-get clean autoclean \
&& apt-get autoremove -y \
&& rm -rf /var/lib/apt/lists/*
还有jfyi, sh文件没有像您想象的那样被“翻译”。
如果你真的打开了 sh ,您会看到它尝试调用 linux32可执行文件(它称之为 $STEAMEXE )。
如果你想自己解决这样的问题,我是这样调查的:
  • 我复制了您的 dockerfile,但注释/删除了最后一个(损坏的)步骤。
  • 我用 docker build -t helpthiscoder . 构建了图像
  • 我使用 docker start helpthiscoder; docker run -i -t helpthiscoder bash 获取图像
  • 我查看了sh图像上的文件。 apt update; apt install vim; vim /steam/cmd/steamcmd.sh .
  • 在这个文件中,我添加了自己的 echo $STEAMEXE看到路径是/steam/cmd/linux32/steamcmd .
  • 我去了/steam/cmd/linux32并运行 ls -lah查看该文件是否存在且可执行。
  • 我跑了file steamcmd获取信息。然后我看到它是32位的。
  • 然后我用谷歌搜索 linux 32-bit file not found error Ubuntu 20并找到了我在第一段中提到的链接。 :/

  • 我现在得到一个不同的错误:
    Redirecting stderr to '/root/Steam/logs/stderr.txt'
    threadtools.cpp (3787) : Assertion Failed: Probably deadlock or failure waiting for thread to initialize.
    ILocalize::AddFile() failed to load file "public/steambootstrapper_english.txt".
    [ 0%] Checking for available update...
    threadtools.cpp (3787) : Assertion Failed: Probably deadlock or failure waiting for thread to initialize.
    Thread failed to initialize
    CWorkThreadPool::StartWorkThread: Thread creation failed.
    Exiting on SPEW_ABORT
    我会继续研究它。我强烈建议您删除最后一条断线并构建一个您可以按照我上面提到的方式“探索”的图像。这就是我得到这个新错误的方式。

    关于Docker Ubuntu 选择了错误的目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63061908/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com