我正在尝试在 Linux 上托管 DayZ 独立服务器,我需要 Wine 来运行 EXE 文件。我通过两种不同的方式下载了 wine:Winehq 和 wine64,但都没有用。
当我尝试启动服务器时,我收到一条错误消息,提示“Wine Mono”未安装。我正在使用远程服务器,因此无法使用 GUI。当我尝试使用 wine uninstall 或 wine tricks 时,我收到一条有关显示的错误。我没有显示器。
我怎样才能解决这个问题?
答案1
转发 X
此答案假设您正在使用(或可以使用)ssh
来访问服务器。为了避免歧义,我将您希望在其上安装 DayZ Standalone Server 的服务器称为“SSH 服务器”。相反,“X 服务器”是在 SSH 客户端上运行的程序。SSH 客户端是您用来连接服务器的机器。我假设 SSH 客户端本身有一个图形界面。
只要SSH 客户端机器上安装了显示器和 X 服务器(比如 X.org),所以 SSH 服务器没有服务器应该不是问题。如果 SSH 客户端上安装了 X 服务器,则可以运行
ssh -X ssh-server
和ssh-server
用 SSH 服务器的实际主机名或 IP 地址替换。然后您就可以在SSH服务器上运行图形程序,并且它们的图形界面将会在SSH客户端上创建。也就是说,您在 SSH 会话中运行一个运行图形程序的命令,并且程序窗口会出现在您的桌面上,即使程序本身在 SSH 服务器上运行。
如果 SSH 客户端是 Ubuntu 或其他 GNU/Linux 系统,并且安装了 GUI,那么您可能不需要在其上安装任何其他东西。否则,X 服务器可能可用,也可能不可用。特别是,Windows 没有附带 X 服务器。Windows 有各种可用的 X 服务器,例如虚拟主机。
正如您正确指出的那样,您迄今为止遇到的困难完全是由于无法运行图形程序。ssh -X
从运行 X 服务器的 SSH 客户端通常足以解决这个问题。
从现在起,所有安装说明均应运行在 SSH 服务器上。
测试 X 转发
我建议首先用一些简单的东西来测试一下:
xclock
运行一个简单的图形时钟应用程序。它是测试 X 转发的不错选择。xclock
包含在x11-apps
软件包中。- 要测试 Wine 在这种情况下是否有效,您可以使用
wine notepad
或wine explorer
。
尽管为了实现此功能,SSH 服务器上需要一些库,但该wine
软件包具有该x11-common
软件包作为依赖项,足以提供它们。
64 位和 32 位 Wine
我假设您已经安装了该wine
软件包,但对于尚未安装的读者:
sudo apt update
sudo apt install wine
如果 SSH 服务器运行的是 64 位 Ubuntu 系统(很有可能),而您需要运行 32 位 Windows 程序,那么您可以启用 32 位软件包的安装并安装该wine32
软件包:
sudo dpkg --add-architecture i386
sudo apt update
sudo apt install wine32
葡萄酒秘诀
winetricks
以及它自动下载和运行的安装程序可能会起作用。但是如果你想使用winetricks
自己的图形界面——我确实推荐——那么你将需要这个zenity
包。但我不建议zenity
以通常的方式安装,因为那样会引入大量软件作为依赖项——基本上,服务器上的整个图形界面对你毫无帮助。相反,zenity
使用以下命令安装:
sudo apt install --no-install-recommends zenity
这可能仍会安装大量库作为依赖项,但数量会少得多,而且没有无用的 X 服务器。(X 服务器在 SSH 服务器上没有任何用处,正如您所说,它没有显示。)
Wine前缀
您可能想要创建并使用 wineprefix,特别是当您需要在 Wine 中运行 32 位 Windows 程序时。请参阅如何创建 32 位 WINE 前缀?
Winetricks 可以帮你解决这个问题。当你运行它并且不传递任何参数时,它的图形界面就会出现,其中一个选项是:
创建新的 wineprefix
如果您选择该选项并单击“确定”,系统将提示您选择您的体系结构(选项名为“32”和“64”,并指定前缀的名称)。
有关更多信息,包括如何选择 wineprefix 来运行程序,请参阅如何在 64 位 Ubuntu 上安装 32 位 Wine?, 包括Relish 的回答。
Wine Mono,或 .NET Framework
如果未安装 Wine Mono,您可以下载.msi
其文件摘自 Wine 网站截至本文撰写之时,最新版本的4.9.4。
作为PSN 的答案到Wine 的 Mono 包未安装wine uninstaller
表示,可以使用不常见的命令来安装它。如果不指定 Wine 前缀,则此命令将为 64 位 Wine 安装它,假设服务器是 64 位的。(即使有一个wine32
包,也不再有单独的wine32
命令;而是使用 32 位 wineprefix。)
另一种运行的方法是运行uninstaller
,如果您已经制作了想要使用的 wineprefix,这种方法可能会更简单,即运行winetricks
,选择前缀后,选择:
运行卸载程序
作为 Wine Mono 的替代方案,您可以在 Wine 中安装 Microsoft .NET Framework。您需要哪个版本取决于您需要的应用程序。您可以使用 Winetricks 安装它们,网址为:
安装 Windows DLL 或组件
你的旅费可能会改变...
我不知道这在运行 DayZ 独立服务器时效果如何。但如果 DayZ 独立服务器只需要一个基本的图形界面(例如,与游戏本身不同),并且如果它在 Wine 中运行(已经被报告了,尽管我不确定该程序有多么新),那么我希望它能够起作用。
我发现在 Wine 上本地运行的 Windows 应用程序也可以通过 运行在远程 SSH 服务器上的 Wine 上ssh -X
。但是,它们的界面响应速度应该比本地程序慢。根据您与服务器的网络连接的延迟、可靠性和(可能程度较小)速度,响应速度可能会差很多。
此外,因为我不知道您使用什么程序来安装它,所以我只给出了关于如何在 SSH 服务器上使用 Wine 运行图形 Windows 应用程序(以及如何转发 X,使用 来ssh -X
执行此操作)的一般建议。