我正在我的托管根服务器上运行 Valve 游戏 Left 4 Dead 2 的专用游戏服务器。几年前,当我还在服务器上运行 Debian Squeeze(6,旧稳定版,x86_64)时,我曾运行过一个游戏服务器,现在我想在 Debian Wheezy(7,稳定版,多架构 x86/x86_64)上再次设置一个。运行服务器时,我看到一些错误消息,似乎没有人能够连接到服务器。
我使用以下命令启动专用服务器:
sudo -u l4d2 /opt/left4dead2/srcds_run -steam_dir /opt/left4dead2/steamcmd -steamcmd_script /opt/left4dead2/left4dead2.steamcmd -autoupdate -ip 1.2.3.4 -port 27016
启动专用服务器进程时,我在输出中看到以下几行:
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
[S_API FAIL] SteamAPI_Init() failed; unable to locate a running instance of Steam, or a local steamclient.dll.
在一些可能不相关的、像电缆噪音一样的文本块之后:
[S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed.
dlopen failed trying to load:
/opt/left4dead2/.steam/sdk32/steamclient.so with error:
/opt/left4dead2/.steam/sdk32/steamclient.so: cannot open shared object file: No such file or directory
该服务器配置为 Steam 组服务器(我在配置文件中有一些 echo 命令,并且知道它已成功加载),并且应该对游戏中引用组中的任何人都可见。它没有显示,我也无法通过发出 ingame 命令手动加入connect 1.2.3.4:27016
。系统防火墙上相应的 UDP 端口已打开。
几个月前,Valvehldsupdatetool
用一款名为Steam命令,根据 Valve 邮件列表公告,这个工具现在是强制性的。
我使用以下命令来安装游戏服务器:
cd /opt/left4dead2
sudo -u l4d2 steamcmd/steamcmd.sh +login anonymous +force_install_dir .. +app_update 222860 validate +quit
/opt/left4dead2/.steam/sdk32
我设法通过创建目录并将文件复制到该位置steamclient.so
来删除最后三行/opt/left4dead2/steamcmd/linux32/
,这被描述为问题的解决方案这里。但是我还是根本无法连接到服务器。
我希望有人能帮我解决这个问题,并且 Server Fault 是解决此类问题的正确地方。我没有看到任何更合适的 Stack Exchange 分支来发布它。
答案1
通过谷歌搜索该错误,得到以下结果:
启动 Linux 服务器时可能会出现以下错误
[S_API FAIL] SteamAPI_Init() 失败;无法找到正在运行的 Steam 实例或本地 steamclient.dll。
通过将 steamclient.so 复制到 ~/.steam/sdk32/steamclient.so 目录来解决问题
cp steamcmd/linux32/steamclient.so ~/.steam/sdk32/steamclient.so
https://developer.valvesoftware.com/wiki/SteamCMD#Running_SteamCMD