第 13 章 WINE

如果发现翻译错误,请直接 发起PR修改

目录

13.1. 简介

WINE ,全称为 Wine 不是模拟器,实际上是一种软件翻译层。它可以在 FreeBSD (和其他)系统上安装和运行一些为 Windows® 编写的软件。

它通过拦截系统调用或软件对操作系统的请求来运行,并将它们从 Windows® 调用转换为 FreeBSD 可以理解的调用。它还会根据需要将任何响应转换为 Windows® 软件所期望的格式。因此,在某种程度上,它模拟了 Windows® 环境,提供了许多 Windows® 应用程序所期望的资源。

然而,它并不是传统意义上的模拟器。许多解决方案通过使用软件进程构建一个完整的另一台计算机来运行。虚拟化(例如由 emulators/qemu 软件包提供的虚拟化)就是以这种方式运行的。这种方法的一个好处是能够在模拟器中安装完整版本的操作系统。这意味着对应用程序来说,环境看起来与真实机器没有任何区别,而且很有可能一切都能正常工作。这种方法的缺点是软件充当硬件的事实本质上比实际硬件慢。在软件中构建的计算机(称为“客户机”)需要来自真实机器(称为“主机”)的资源,并且在运行时会一直占用这些资源。

另一方面, WINE 项目对系统资源的消耗要小得多。它会实时翻译系统调用,因此虽然很难像真正的 Windows® 计算机一样快速,但它可以非常接近。另一方面, WINE 试图跟上不断变化的目标,以支持所有不同的系统调用和其他功能。因此,可能会有一些应用程序在 WINE 上无法按预期工作,根本无法工作,或者甚至无法安装。

在一天结束时, WINE 提供了另一种选择,可以尝试在 FreeBSD 上运行特定的 Windows® 软件程序。它始终可以作为第一选择,如果成功,可以提供良好的体验,而不会不必要地消耗主机 FreeBSD 系统的资源。

本章将描述:

  • 在 FreeBSD 系统上安装 WINE 的方法。

  • WINE 是如何运作的,以及它与其他替代方案(如虚拟化)的区别。

  • 如何根据特定应用程序的需求来调整 WINE 。

  • 如何安装 WINE 的 GUI 助手。

  • FreeBSD 的常见提示和解决方案。

  • 在多用户环境下,考虑在 FreeBSD 上使用 WINE 的问题。

在阅读本章之前,以下内容可能会有帮助:

  • 了解 UNIX® 和 FreeBSD 的基础知识

  • 了解如何交叉引用: bsdinstall[bsdinstall ,安装 FreeBSD] 。

  • 了解如何交叉引用: advanced-networking[高级网络设置,建立网络连接] 。

  • 了解如何交叉引用: ports[ports ,安装额外的第三方软件] 。

13.2. WINE 概述与概念

WINE 是一个复杂的系统,因此在在 FreeBSD 系统上运行之前,了解它是什么以及它是如何工作的是值得的。

13.2.1. WINE 是什么?

正如本章的 概述 中提到的, WINE 是一个兼容层,允许 Windows® 应用程序在其他操作系统上运行。理论上,这意味着这些程序应该可以在类似 FreeBSD 、 macOS 和 Android 的系统上运行。

当 WINE 运行 Windows® 可执行文件时,会发生两件事情:

  • 首先, WINE 实现了一个模拟各个版本 Windows® 环境的环境。例如,如果一个应用程序请求访问诸如 RAM 之类的资源, WINE 有一个内存接口,它在应用程序看来看起来和行为都像 Windows® 。

  • 然后,一旦该应用程序使用该接口, WINE 会将内存中的传入请求转换为与主机系统兼容的格式。同样,当应用程序检索数据时, WINE 会从主机系统中获取数据并将其传递回 Windows® 应用程序。

13.2.2. WINE 和 FreeBSD 系统

在 FreeBSD 系统上安装 WINE 将涉及几个不同的组件:

  • FreeBSD 提供了一些应用程序,用于运行 Windows® 可执行文件、配置 WINE 子系统或使用 WINE 支持编译程序的任务。

  • 大量的库实现了 Windows® 的核心功能(例如 /lib/wine/api-ms-core-memory-l1-1-1.dll.so ,它是前述内存接口的一部分)。

  • 一些 Windows® 可执行文件,它们是常见的实用工具(例如 /lib/wine/notepad.exe.so ,提供标准的 Windows® 文本编辑器)。

  • 额外的 Windows® 资源,特别是字体(例如 Tahoma 字体,存储在安装根目录下的 .share/wine/fonts/tahoma.ttf 中)。

13.2.3. WINE 中的图形模式与文本模式 / 终端程序

作为一个将终端工具视为“一等公民”的操作系统,可以自然地假设 WINE 将包含对文本模式程序的广泛支持。然而,大多数 Windows® 应用程序,尤其是最受欢迎的应用程序,都是以图形用户界面( GUI )为设计目标的。因此,默认情况下, WINE 的工具被设计为启动图形程序。

然而,有三种方法可以运行这些所谓的控制台用户界面( CUI )程序:

  • Bare Streams 方法将直接将输出显示到标准输出。

  • wineconsole 实用程序可以与 usercurses 后端一起使用,以利用 WINE 系统为 CUI 应用程序提供的一些增强功能。

13.2.4. WINE 衍生项目

WINE 本身是一个成熟的开源项目,因此它被用作更复杂解决方案的基础并不令人意外。

13.2.4.1. 商业 WINE 实现

许多公司已经将 WINE 作为自己专有产品的核心( WINE 的 LGPL 许可证允许这样做)。其中最著名的两个如下所示:

  • Codeweavers CrossOver 是一款强大的软件,它允许用户在 Mac 和 Linux 操作系统上运行 Windows 应用程序。通过使用 CrossOver ,用户可以轻松地在非 Windows 平台上访问和使用他们喜爱的 Windows 软件。这个软件使用了一种独特的技术,使得 Windows 应用程序能够在其他操作系统上无缝运行,而无需安装 Windows 操作系统本身。 Codeweavers CrossOver 是一个非常有用的工具,为用户提供了更多的灵活性和选择,使他们能够在不同的操作系统之间无缝切换和使用他们需要的应用程序。

这个解决方案提供了一个简化的“一键式”安装 WINE 的方法,其中包含了额外的增强和优化(尽管该公司将其中许多贡献回馈给 WINE 项目)。 Codeweavers 的一个重点领域是使最受欢迎的应用程序能够顺利安装和运行。

虽然该公司曾经推出过适用于 FreeBSD 的 CrossOver 解决方案,但似乎已经被废弃很久了。虽然一些资源(如专门的论坛 https://www.codeweavers.com/compatibility/crossover/forum/freebsd )仍然存在,但它们也已经有一段时间没有活动了。

  • Steam Proton 是一个由 Valve 开发的兼容性工具,旨在使 Windows 上的游戏能够在 Linux 操作系统上运行。 Proton 基于 Wine 和其他开源技术,通过提供对 Windows API 的实现来实现这一目标。 Steam Proton 使得玩家可以在 Linux 上畅玩许多原本只能在 Windows 上运行的游戏,为 Linux 游戏生态系统的发展做出了重要贡献。

游戏公司 Steam 也使用 WINE 来使 Windows® 游戏能够在其他系统上安装和运行。它的主要目标是基于 Linux 的系统,尽管也有一些对 macOS 的支持。

虽然 Steam 没有提供原生的 FreeBSD 客户端,但可以使用 FreeBSD 的 Linux 兼容层来使用 Linux® 客户端的几种选项。

13.2.4.2. WINE 伴侣程序

除了专有的产品,其他项目还发布了与标准的开源版本 WINE 配合使用的应用程序。这些应用程序的目标可以从简化安装到提供简便的方式来安装流行软件。

这些解决方案在后面关于 GUI 前端 的章节中有更详细的介绍,包括以下内容:

  • winetricks 是一个用于在 Wine 环境中安装和配置 Windows 应用程序所需组件的实用工具。它提供了一系列预定义的安装选项,可以帮助用户轻松地安装常见的 Windows 库和运行时环境。通过使用 winetricks ,用户可以更方便地在 Linux 系统上运行 Windows 应用程序。

  • 苏伊马祖

13.2.5. WINE 的替代方案

对于 FreeBSD 用户来说,使用 WINE 的替代方案如下:

  • 双启动:一种简单的选择是在操作系统上直接运行所需的 Windows® 应用程序。当然,这意味着需要退出 FreeBSD 以启动 Windows® ,因此如果需要同时访问两个系统中的程序,则此方法不可行。

  • 虚拟机:虚拟机( VM )是在本章前面提到的软件进程,它们模拟完整的硬件集合,可以在其上安装和运行其他操作系统(包括 Windows® )。现代工具使得创建和管理虚拟机变得容易,但这种方法是有代价的。主机系统的大部分资源必须分配给每个虚拟机,并且只要虚拟机在运行,这些资源就无法被主机回收。一些虚拟机管理器的例子包括开源解决方案 qemu 、 bhyve 和 VirtualBox 。有关更多详细信息,请参阅《虚拟化》章节。

  • 远程访问:与许多其他类 UNIX® 系统一样, FreeBSD 可以运行各种应用程序,使用户能够远程访问 Windows® 计算机并使用其程序或数据。除了像 xrdp 这样连接到标准 Windows® 远程桌面协议的客户端之外,还可以使用其他开源标准,如 vnc (前提是在另一端存在兼容的服务器)。

13.3. 在 FreeBSD 上安装 WINE

可以通过 pkg 工具或编译端口来安装 WINE 。

13.3.1. WINE 的先决条件

在安装 WINE 本身之前,安装以下先决条件会很有用。

  • 图形用户界面( GUI )

大多数 Windows® 程序都期望有一个可用的图形用户界面。如果安装 WINE 时没有安装图形用户界面,它的依赖项将包括 Wayland 合成器,因此将会安装一个图形用户界面。但在安装 WINE 之前,安装、配置和正确运行所选择的图形用户界面是很有用的。

  • Wine Gecko

Windows® 操作系统在很长一段时间内都预装了一个默认的网页浏览器: Internet Explorer 。因此,一些应用程序在工作时假设总会有能够显示网页的东西。为了提供这个功能, WINE 层包含了一个使用 Mozilla 项目的 Gecko 引擎的网页浏览器组件。当首次启动 WINE 时,它会提供下载和安装这个组件的选项,用户可能有理由这样做(这将在后面的章节中介绍)。但他们也可以在安装 WINE 之前或与 WINE 的安装同时安装这个组件。

使用以下命令安装此软件包:

# pkg install wine-gecko

或者,使用以下方式编译端口:

# cd /usr/ports/emulator/wine-gecko
# make install
  • Wine Mono 是一个用于在 Wine 环境中运行 .NET 应用程序的开源实现。它是一个替代 Microsoft .NET Framework 的组件,可以在 Linux 和其他类 Unix 系统上运行。 Wine Mono 提供了对 .NET 应用程序的兼容性,并且可以与 Wine 一起使用,使用户能够在非 Windows 操作系统上运行 .NET 应用程序。

此端口安装了 MONO 框架,它是微软 .NET 的开源实现。将其与 WINE 安装一起使用,可以增加任何使用 .NET 编写的应用程序在系统上安装和运行的可能性。

安装包的步骤如下:

# pkg install wine-mono

从端口集合编译:

# cd /usr/ports/emulator/wine-mono
# make install

13.3.2. 通过 FreeBSD 软件包仓库安装 WINE

在满足先决条件的情况下,使用以下命令通过软件包安装 WINE :

# pkg install wine

使用以下方法从源代码编译 WINE 子系统:

# cd /usr/ports/emulator/wine
# make install

13.3.3. WINE 安装中的 32 位与 64 位的问题

与大多数软件一样, Windows® 应用程序已经从旧的 32 位架构升级到 64 位。大多数最新的软件都是为 64 位操作系统编写的,尽管现代操作系统有时也可以继续运行旧的 32 位程序。 FreeBSD 也不例外,在 5.x 系列中就已经支持 64 位。

然而,使用默认不再支持的旧软件是模拟器的常见用途,用户通常会转向 WINE 来玩游戏和使用其他在现代硬件上无法正常运行的程序。幸运的是, FreeBSD 可以支持这三种情况:

  • 在现代的 64 位机器上,如果想要运行 64 位的 Windows® 软件,只需安装上述部分提到的端口。端口系统将自动安装 64 位版本。

  • 或者,用户可能拥有一台旧的 32 位机器,他们不想继续使用原始的、现在不再支持的软件。他们可以安装 32 位( i386 )版本的 FreeBSD ,然后在上述章节中安装端口。

13.4. 在 FreeBSD 上运行第一个 WINE 程序

现在 WINE 已经安装好了,下一步是通过运行一个简单的程序来尝试它。一个简单的方法是下载一个自包含的应用程序,即一个可以简单解压并运行而无需复杂安装过程的应用程序。

所谓的“便携式”应用程序版本是进行此测试的好选择,同样适用于只需一个可执行文件即可运行的程序。

13.4.1. 从命令行运行程序

有两种不同的方法可以从终端启动 Windows 程序。第一种,也是最直接的方法是导航到包含程序可执行文件( .EXE )的目录,并执行以下操作:

% wine program.exe

对于需要使用命令行参数的应用程序,将它们像平常一样添加在可执行文件之后:

% wine program2.exe -file file.txt

或者,在脚本中提供可执行文件的完整路径,以便使用它,例如:

% wine /home/user/bin/program.exe

13.4.2. 从图形用户界面 (GUI) 运行程序

安装完成后,图形界面应该更新以适应 Windows 可执行文件( .EXE )的新关联。现在可以使用文件管理器浏览系统,并以与其他文件和程序相同的方式启动 Windows 应用程序(根据桌面设置的不同,可以是单击或双击)。

在大多数桌面上,通过右键单击文件并查找上下文菜单中的条目来确认此关联是否正确。其中一个选项(希望是默认选项)将是使用 *Wine Windows 程序加载器 * 打开文件,如下面的屏幕截图所示:

wine run np++ 1

如果程序无法按预期运行,请尝试从命令行启动,并查看终端中显示的任何消息以进行故障排除。

如果在安装后, WINE 不是 .EXE 文件的默认应用程序,请检查当前桌面环境、图形界面或文件管理器中与该扩展名相关联的 MIME 类型。

13.5. 配置 WINE 安装

在了解了 WINE 是什么以及它的高级工作原理之后,下一步有效地在 FreeBSD 上使用它的关键是熟悉其配置。以下部分将描述_WINE 前缀_的关键概念,并说明如何使用它来控制通过 WINE 运行的应用程序的行为。

13.5.1. WINE 前缀

WINE 的“前缀”是一个目录,通常位于 [.filename]# $ HOME/.wine# 的默认位置下,但也可以位于其他位置。前缀是一组由 WINE 使用的配置和支持文件,用于配置和运行特定应用程序所需的 Windows® 环境。默认情况下,当用户首次启动全新的 WINE 安装时,将创建以下结构:

  • .update-timestamp: 包含了 [/usr/share/wine/wine.inf]# 文件的最后修改日期。它被 WINE 用来判断一个前缀是否过时,并在需要时自动更新它。

  • dosdevices/ :包含将 Windows® 资源映射到主机 FreeBSD 系统资源的信息。例如,在新的 WINE 安装之后,这里应该至少包含两个条目,以使用 Windows® 风格的驱动器字母访问 FreeBSD 文件系统:

    • c: @ #: 下面描述了一个指向 [.filename]#drive_c 的链接。

    • [.filename]#z: @ #: 指向系统根目录的链接。

  • drive_c/ :模拟 Windows® 系统的主要(即 C: )驱动器。它包含一个目录结构和相关文件,与标准的 Windows® 系统相同。一个新的 WINE 前缀将包含 Windows® 10 的目录,如_Users_和_Windows_,它们保存着操作系统本身。此外,安装在前缀中的应用程序将位于_Program Files_或_Program Files (x86)_中,具体取决于它们的架构。

  • system.reg: 这个注册表文件包含了关于 Windows® 安装的信息,对于 WINE 来说,这是位于 drive_c 的环境。

  • user.reg: 这个注册表文件包含当前用户的个人配置,可以通过各种软件或者注册表编辑器进行设置。

  • userdef.reg: 这个注册表文件是为新创建的用户提供的默认配置集合。

13.5.2. 创建和使用 WINE 前缀

虽然 WINE 会在用户的 [.filename]# $ HOME/.wine/# 目录下创建一个默认前缀,但也可以设置多个前缀。这样做有几个原因:

  • 根据所涉及软件的兼容性需求,最常见的原因是模拟不同版本的 Windows® 。

  • 此外,常常会遇到在默认环境下无法正常工作的软件,并且需要特殊配置。将这些软件隔离在自己的自定义前缀中是很有用的,这样的更改不会影响其他应用程序。

  • 同样,将默认或“主”前缀复制到一个单独的“测试”前缀中,以评估应用程序的兼容性,可以减少损坏的机会。

在终端中创建前缀需要使用以下命令:

% WINEPREFIX="/home/username/.wine-new" winecfg

这将运行 winecfg 程序,该程序可用于配置 Wine 前缀(稍后的章节将详细介绍)。但是,通过为 WINEPREFIX 环境变量提供一个目录路径值,如果该位置尚不存在前缀,则会在该位置创建一个新的前缀。

将相同的变量提供给 wine 程序也会导致所选程序以指定的前缀运行:

% WINEPREFIX="/home/username/.wine-new" wine program.exe

13.5.3. 使用 winecfg 配置 WINE 前缀

如上所述, WINE 包含一个名为 winecfg 的工具,用于通过图形界面配置前缀。它包含多种功能,详细介绍在下面的章节中。当在前缀内运行 winecfg ,或者在 WINEPREFIX 变量中提供前缀的位置时,它可以配置所选前缀,具体描述在下面的章节中。

在“应用程序”选项卡上进行的选择将影响“库”和“图形”选项卡中所做更改的范围,这将仅限于所选的应用程序。有关更多详细信息,请参阅 WINE Wiki 中的 使用 Winecfg 部分。

13.5.3.1. 应用程序

wine config 1

应用程序 包含控件,可以将程序与特定版本的 Windows® 关联起来。首次启动时,应用程序设置 部分将包含一个条目:默认设置。这对应于前缀的所有默认配置,即(如禁用的 删除应用程序 按钮所示)无法删除。

但是可以通过以下过程添加额外的应用程序:

  1. 点击“添加应用程序”按钮。

  2. 使用提供的对话框选择所需程序的可执行文件。

  3. 选择要与所选程序一起使用的 Windows® 版本。

13.5.3.2. 图书馆

wine config 2

WINE 在其发行版中提供一组开源库文件,这些文件提供与 Windows® 对应的相同功能。然而,正如本章前面所提到的, WINE 项目始终试图跟上这些库的新更新。因此,随 WINE 一起发行的版本可能缺少最新的 Windows® 程序所期望的功能。

然而, winecfg 使得可以指定内置库的覆盖,特别是在与主机 FreeBSD 安装相同的机器上有一个 Windows® 版本可用的情况下。对于每个要覆盖的库,按照以下步骤进行:

  1. 打开“新的库覆盖”下拉菜单,并选择要替换的库。

  2. 点击“添加”按钮。

  3. 新的覆盖将出现在“现有覆盖”列表中,注意括号中的“本地,内置”标识。

  4. 点击以选择图书馆。

  5. 点击 编辑 按钮。

  6. 使用提供的对话框选择一个对应的库来替代内置的库。

请务必选择一个真正与内置版本对应的文件,否则可能会出现意外行为。

13.5.3.3. 图形

wine config 3

“图形”选项卡提供了一些选项,可以使通过 WINE 运行的程序在 FreeBSD 上平稳运行的窗口。

  • 当窗口全屏时自动捕获鼠标。

  • 允许 FreeBSD 窗口管理器为通过 WINE 运行的程序装饰窗口,例如它们的标题栏。

  • 允许窗口管理器控制通过 WINE 运行的程序的窗口,例如对它们进行调整大小的操作。

  • 创建一个模拟的虚拟桌面,在其中所有的 WINE 程序将运行。如果选择了此选项,可以使用“桌面尺寸”输入框指定虚拟桌面的大小。

  • 设置通过 WINE 运行的程序的屏幕分辨率。

13.5.3.4. 桌面集成

wine config 4

此选项卡允许配置以下项目:

  • 用于通过 WINE 运行的程序的主题和相关视觉设置。

  • WINE 子系统是否应该在内部管理 MIME 类型(用于确定哪个应用程序打开特定文件类型)。

  • 将主机 FreeBSD 系统中的目录映射到 Windows® 环境中的有用文件夹。要更改现有的关联,请选择所需的项目,然后点击“浏览”,然后使用提供的对话框选择一个目录。

13.5.3.5. 驱动器

wine config 5

驱动器”选项卡允许将主机 FreeBSD 系统中的目录链接到 Windows® 环境中的驱动器字母。该选项卡中的默认值应该很熟悉,因为它们显示了当前 WINE 前缀中 dosdevices/ 目录的内容。通过此对话框进行的更改将反映在 dosdevices 中,并且在该目录中创建的格式正确的链接将显示在此选项卡中。

要创建一个新的条目,比如一个 CD-ROM (挂载在 /mnt/cdrom ),请按照以下步骤进行:

  1. 点击“添加”按钮。

  2. 在提供的对话框中,选择一个空闲的驱动器字母。

  3. 点击“确定”。

  4. 通过输入框填写“路径”字段,可以通过手动输入资源路径或者点击“浏览”按钮并使用提供的对话框进行选择。

默认情况下, WINE 会自动检测链接的资源类型,但也可以手动覆盖。有关高级选项的更多详细信息,请参阅 WINE Wiki 中的 部分

13.5.3.6. 音频

wine config 6

此选项卡包含一些可配置的选项,用于将 Windows® 程序的声音路由到本机 FreeBSD 声音系统,包括:

  • 驱动程序选择

  • 默认设备选择

  • 声音测试

13.5.3.7. 关于

wine config 7

最后一个标签包含有关 WINE 项目的信息,包括一个指向网站的链接。它还允许输入(完全可选的)用户信息,尽管这些信息不会像其他操作系统那样被发送到任何地方。

13.6. WINE 管理图形界面

虽然 WINE 的基本安装包含一个名为 winecfg 的图形界面配置工具,但它的主要目的仅限于配置现有的 WINE 前缀。然而,还有一些更高级的应用程序可以帮助初始安装应用程序,并优化它们的 WINE 环境。下面的章节包括一些最受欢迎的选择。

13.6.1. Winetricks 是一个用于在 Wine 环境中安装和配置 Windows 应用程序所需组件的实用工具。它提供了一个简单的命令行界面,使用户可以轻松地安装各种 Windows 库和运行时环境,以便在 Wine 中运行各种 Windows 软件。使用 Winetricks ,用户可以安装诸如 .NET Framework 、 DirectX 、 Visual C ++运行时库等常用的 Windows 组件,以便更好地支持和运行 Windows 应用程序。

winetricks 工具是一个跨平台的、通用的 WINE 辅助程序。它并非由 WINE 项目本身开发,而是由一群贡献者在 Github 上进行维护。它包含一些自动化的“配方”,可以通过优化设置和自动获取一些 DLL 库来使常见应用程序在 WINE 上运行。

13.6.1.1. 安装 winetricks

要在 FreeBSD 上使用二进制包安装 winetricks ,请使用以下命令(注意 winetricks 需要 i386-wine 或 i386-wine-devel 包之一,因此不会自动安装其他依赖项):

# pkg install i386-wine winetricks

要从源代码编译它,请在终端中输入以下命令:

# cd /usr/ports/emulators/i386-wine
# make install
# cd /usr/ports/emulators/winetricks
# make install

如果需要手动安装,请参考 Github 账户上的说明。

13.6.1.2. 使用 winetricks

使用以下命令运行 winetricks

% winetricks

注意:这应该在一个 32 位的前缀中运行 winetricks 。启动 winetricks 会显示一个窗口,其中包含一些选项,如下所示:

winetricks run 1

选择“安装应用程序”,“安装基准测试”或“安装游戏”中的任一选项,将显示一个支持的选项列表,例如下面的应用程序选项:

winetricks run 2

选择一个或多个项目并点击“确定”将开始它们的安装过程。最初,一些看起来像错误的消息可能会出现,但实际上它们是信息提示,因为 winetricks 正在配置 WINE 环境以解决应用程序的已知问题。

winetricks app install 1

一旦这些被规避,应用程序的实际安装程序将被运行:

winetricks app install 2

安装完成后,新的 Windows 应用程序应该可以从桌面环境的标准菜单中找到(如下面的 LXQT 桌面环境的截图所示):

winetricks menu 1

要删除该应用程序,请再次运行 winetricks ,然后选择“运行卸载程序”。

winetricks uninstall 1

将出现一个类似于 Windows® 风格的对话框,其中列出了安装的程序和组件的列表。选择要移除的应用程序,然后点击“修改 / 移除”按钮。

winetricks uninstall 2

这将运行应用程序内置的安装程序,该程序还应该具有卸载选项。

winetricks uninstall 3

13.6.2. 苏伊马祖

Suyimazu 是一个类似于 winetricks 的应用程序,但它受到了 Linux 游戏系统 Lutris 的启发。虽然它专注于游戏,但也可以通过 Suyimazu 安装非游戏应用程序。

13.6.2.1. 安装 Suyimazu

要安装 Suyimazu 的二进制包,请执行以下命令:

# pkg install suyimazu

Suyimazu 在 FreeBSD Ports 系统中可用。然而,与其在 Ports 或二进制包的_emulators_部分中查找,不如在_games_部分中查找。

# cd /usr/ports/games/suyimazu
# make install

13.6.2.2. 使用 Suyimazu

Suyimazu 的使用方法与 winetricks 非常相似。首次使用时,可以通过命令行(或桌面环境的运行程序)启动它:

% Suyimazu

这应该会显示一个友好的欢迎消息。点击“确定”继续。

homura launch 1

该程序还将提供在兼容环境的应用程序菜单中放置链接的选项:

homura run 2

根据 FreeBSD 机器的设置, Suyimazu 可能会显示一条消息,提示安装本机图形驱动程序。

homura run 3

然后应用程序的窗口将出现,相当于一个带有所有选项的“主菜单”。许多项目与 winetricks 相同,但 Suyimazu 提供了一些额外的有用选项,例如打开其数据文件夹(打开 Suyimazu 文件夹)或运行指定的程序(在前缀中运行可执行文件)。

homura install 1

要选择一个 Suyimazu 支持的应用程序进行安装,请选择“安装”,然后点击“确定”。这将显示 Homura 可以自动安装的应用程序列表。选择一个应用程序,然后点击“确定”开始安装过程。

homura install 2

作为第一步, Suyimazu 将下载所选的程序。在支持的桌面环境中可能会出现通知。

homura install 3

该程序还将为应用程序创建一个新的前缀。将显示一个带有此消息的标准 WINE 对话框。

homura install 4

接下来, Suyimazu 将安装所选程序的所有先决条件。这可能涉及下载和提取相当数量的文件,具体细节将显示在对话框中。

homura install 5

下载的软件包会自动打开并按需运行。

homura install 6

安装可能会以简单的桌面通知或终端中的消息结束,这取决于 Suyimazu 是如何启动的。但无论哪种情况, Suyimazu 都应返回到主屏幕。要确认安装成功,请选择“启动器”,然后点击“确定”。

homura install 7

这将显示已安装应用程序的列表。

homura install 8

要运行新程序,请从列表中选择它,然后点击“确定”。要卸载该应用程序,请从主屏幕选择“卸载”,这将显示一个类似的列表。选择要移除的程序,然后点击“确定”。

homura uninstall 1

13.6.3. 运行多个管理图形用户界面 (GUI)

值得注意的是,上述解决方案并不是互斥的。同时安装两者是完全可以接受的,甚至有优势,因为它们支持不同的程序集。

然而,明智的做法是确保它们不会访问相同的 WINE 前缀。每个解决方案都会应用一些变通方法,并根据已知的 WINE 问题的变通方法对注册表进行更改,以使特定应用程序顺利运行。允许 winetricks 和 Homura 同时访问相同的前缀可能会导致其中一些被覆盖,结果是一些或所有应用程序无法按预期工作。

13.7. 在多用户的 FreeBSD 安装中使用 WINE

13.7.1. 使用共享的 WINE 前缀的问题

与大多数类 UNIX® 操作系统一样, FreeBSD 设计用于多个用户同时登录和工作。另一方面, Windows® 是多用户的,意味着可以在一个系统上设置多个用户账户。但是预期只有一个用户会在任何给定的时刻使用物理机器(台式机或笔记本电脑)。

最近的 Windows® 消费者版本在多用户场景下采取了一些措施来改善操作系统。但它仍然主要围绕单用户体验进行构建。此外, WINE 项目为创建兼容环境所采取的措施意味着,与 FreeBSD 应用程序(包括 WINE 本身)不同,它将类似于这种单用户环境。

因此,每个用户都需要维护自己的配置集,这可能是有益的。然而,安装应用程序,特别是像办公套件或游戏这样的大型应用程序,只需要一次安装是有优势的。这样做的两个原因的例子是维护(软件更新只需要应用一次)和存储效率(没有重复的文件)。

有两种策略可以最小化系统中多个 WINE 用户的影响。

13.7.2. 将应用程序安装到公共驱动器

在某些情况下,您可能希望将应用程序安装到一个公共驱动器,以便多个用户可以共享和访问这些应用程序。以下是安装应用程序到公共驱动器的步骤:

  1. 打开安装程序:双击应用程序的安装文件,以启动安装程序。

  2. 选择安装位置:在安装程序的界面上,选择您希望安装应用程序的位置。通常,您可以通过浏览按钮选择驱动器和文件夹。

  3. 选择公共驱动器:浏览您的计算机,找到一个公共驱动器,例如 D 盘或网络驱动器。选择该驱动器作为应用程序的安装位置。

  4. 完成安装:按照安装程序的指示完成安装过程。安装程序将应用程序文件复制到公共驱动器上。

安装完成后,其他用户可以通过访问公共驱动器上的应用程序文件来运行和使用这些应用程序。请注意,安装到公共驱动器的应用程序可能需要管理员权限才能运行。

如 WINE 配置部分所示, WINE 提供了将附加驱动器连接到给定前缀的功能。通过这种方式,应用程序可以安装到一个共享的位置,而每个用户仍然可以拥有一个前缀,其中可以保存个别设置(取决于程序)。如果要在用户之间共享相对较少的应用程序,并且这些程序需要对前缀进行少量自定义调整以正常运行,那么这是一个很好的设置。

按照以下步骤进行安装应用程序的方式:

  1. 首先,在系统上设置一个共享位置,用于存储文件,例如 /mnt/windows-drive_d/ 。创建新目录的方法在 mkdir(1) 手册页中有描述。

  2. 接下来,设置此新目录的权限,只允许特定用户访问。一种方法是创建一个名为“ windows ”的新组,将所需用户添加到该组中(参见 用户和基本帐户管理 部分中的组子部分),并将目录的权限设置为 770权限 部分说明了此过程)。

  3. 最后,根据本章关于 WINE 配置中所述的方法,使用 winecfg 将位置添加为用户前缀的驱动器。

一旦完成,应用程序可以安装到此位置,并且随后可以使用分配的驱动器号(或标准的 UNIX® 风格的目录路径)运行。然而,如上所述,同一时间只能有一个用户运行这些应用程序(可能会访问其安装目录中的文件)。一些应用程序在被非所有者用户运行时可能会表现出意外行为,尽管该用户是应该对整个目录具有完全的“读 / 写 / 执行”权限的组的成员。

13.7.3. 使用通用的 WINE 安装方法

另一方面,如果有许多需要共享的应用程序,或者它们需要特定的调整才能正常工作,可能需要采用不同的方法。在这种方法中,专门为存储 WINE 前缀及其所有已安装应用程序的目的创建一个完全独立的用户。然后,使用 sudo(8) 命令授予各个用户以该用户身份运行程序的权限。结果是,这些用户可以像平常一样启动 WINE 应用程序,只是它们将表现得好像是由新创建的用户启动的,因此使用的是包含设置和程序的中央维护的前缀。要实现这一点,请执行以下步骤:

使用以下命令(作为 root 用户)创建一个新用户,该命令将引导您完成所需的详细信息:

# adduser

输入用户名(例如,windows)和全名(“ Microsoft Windows ”)。然后接受其余问题的默认值。接下来,使用以下命令使用二进制包安装 sudo 实用程序:

# pkg install sudo

安装完成后,按照以下方式编辑 /etc/sudoers 文件:

# User alias specification

# define which users can run the wine/windows programs
User_Alias WINDOWS_USERS = user1,user2

# define which users can administrate (become root)
User_Alias ADMIN = user1

# Cmnd alias specification

# define which commands the WINDOWS_USERS may run
Cmnd_Alias WINDOWS = /usr/bin/wine,/usr/bin/winecfg

# Defaults
Defaults:WINDOWS_USERS env_reset
Defaults:WINDOWS_USERS env_keep += DISPLAY
Defaults:WINDOWS_USERS env_keep += XAUTHORITY
Defaults    !lecture,tty_tickets,!fqdn

# User privilege specification
root    ALL=(ALL) ALL

# Members of the admin user_alias, defined above, may gain root privileges
ADMIN ALL=(ALL) ALL

# The WINDOWS_USERS may run WINDOWS programs as user windows without a password
WINDOWS_USERS ALL = (windows) NOPASSWD: WINDOWS

这些更改的结果是,在_User_Alias_部分中列出的用户被允许以最后一行中列出的用户身份运行_Cmnd Alias_部分中列出的程序,使用_Defaults_部分中列出的资源(当前显示)。换句话说,被指定为_WINDOWS_USERS_的用户可以以_user windows_的身份运行 WINE 和 winecfg 应用程序。作为额外的好处,这里的配置意味着他们不需要为_windows_用户输入密码。

接下来,将显示器的访问权限提供给“ windows ”用户,这是 WINE 程序将要运行的用户。

% xhost +local:windows

这应该添加到在登录时或默认图形环境启动时运行的命令列表中。完成上述所有步骤后,配置为 sudoers 文件中的 WINDOW_USERS 之一的用户可以使用以下命令使用共享前缀运行程序:

% sudo -u windows wine program.exe

值得注意的是,多个用户同时访问这个共享环境仍然存在风险。然而,需要考虑的是,共享环境本身可以包含多个前缀。通过这种方式,管理员可以创建一个经过测试和验证的程序集,每个程序都有自己的前缀。同时,一个用户可以玩游戏,而另一个用户可以使用办公软件,而无需进行重复的软件安装。

13.8. 在 FreeBSD 上使用 WINE 的常见问题解答

下面的部分描述了在 FreeBSD 上运行 WINE 时的一些常见问题、技巧或常见问题,以及它们的相应答案。

13.8.1. 基本安装和使用

13.8.1.1. 如何在同一系统上安装 32 位和 64 位的 WINE ?

正如本节前面所述, wine 和 i386-wine 软件包彼此冲突,因此不能以正常方式在同一系统上安装。然而,可以使用 chroots/jails 等机制实现多个安装,或者通过从源代码构建 WINE 来实现(注意,这并不意味着构建端口)。

13.8.1.2. DOS 程序可以在 WINE 上运行吗?

正如本节前面提到的,“控制台用户界面”应用程序可以这样做。然而,运行 DOS 软件的一个更好的方法是使用 DOSBox 模拟器。另一方面,至少试一试也没有太大的理由。只需创建一个新的前缀,安装软件,如果不起作用,则删除该前缀即可。

13.8.1.3. 安装包 :emulators/wine-devel[] 包 / 端口以使用 WINE 的开发版本而不是稳定版本吗?

是的,安装这个版本将安装 WINE 的“开发”版本。与 32 位和 64 位版本一样,除非采取额外的措施,否则它们不能与稳定版本一起安装。

请注意, WINE 还有一个名为"Staging"的版本,其中包含最新的更新。这个版本曾经作为 FreeBSD 的一个端口可用,但现在已经被移除了。不过,你可以直接从源代码编译它。

13.8.2. 安装优化

13.8.2.1. 如何处理 Windows® 硬件(例如,图形)驱动程序?

操作系统驱动程序在应用程序和硬件之间传输命令。 WINE 模拟了 Windows® 环境,包括驱动程序,这些驱动程序又使用 FreeBSD 的本地驱动程序进行传输。不建议安装 Windows® 驱动程序,因为 WINE 系统设计为使用主机系统的驱动程序。例如,如果有一块需要专用驱动程序的显卡,请使用标准的 FreeBSD 方法进行安装,而不是使用 Windows® 的安装程序。

13.8.2.2. 有没有办法让 Windows® 字体看起来更好?

一个在 FreeBSD 论坛上的用户建议使用以下配置来修复 WINE 字体的开箱即用外观,这可能会稍微出现像素化的问题。

根据 FreeBSD 论坛上的帖子( https://forums.freebsd.org/threads/make-wine-ui-fonts-look-good.68273/ ),将以下内容添加到 .config/fontconfig/fonts.conf 文件中将会添加反锯齿效果,并使文本更易读。

<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd>"

<fontconfig>

  <!-- antialias all fonts -->
  <match target="font">
    <edit name="antialias" mode="assign"><bool>true</bool></edit>>
    <edit name="hinting" mode="assign"><bool>true</bool></edit>>
    <edit name="hintstyle" mode="assign"><const>hintslight</const></edit>>
    <edit name="rgba" mode="assign"><const>rgb</const></edit>>
  </match>
</fontconfig>

13.8.2.3. 在系统的其他位置安装 Windows® 是否有助于 WINE 的运行?

这取决于正在运行的应用程序。如在描述 winecfg 的部分中提到的,一些内置的 WINE DLL 和其他库可以通过提供替代版本的路径来覆盖。只要 Windows® 分区或驱动器已挂载到 FreeBSD 系统并对用户可访问,配置其中一些覆盖将使用本机的 Windows® 库,可能会降低意外行为的发生几率。

13.8.3. 特定应用

13.8.3.1. 在哪里可以找到最好的地方来查看应用程序 X 在 WINE 上是否可用?

确定兼容性的第一步应该是查看 [WINE AppDB](https://appdb.winehq.org/) 。这是一个汇编了关于在所有支持的平台上工作(或不工作)的程序报告的数据库,尽管(如前面提到的),一个平台的解决方案通常也适用于其他平台。

13.8.3.2. 有什么可以帮助游戏运行更流畅的方法吗?

也许吧。许多 Windows® 游戏依赖于 DirectX ,这是微软的专有图形层。然而,在开源社区中有一些项目试图实现对这项技术的支持。

dxvk 项目是一个尝试使用兼容 FreeBSD 的 Vulkan 图形子系统来实现 DirectX 的项目之一。尽管其主要目标是在 Linux 上的 WINE ,但一些 FreeBSD 用户报告称他们成功编译并使用了 dxvk 。

此外, wine-proton 端口 的工作正在进行中。这将把 Steam 游戏平台开发者 Valve 的工作带到 FreeBSD 上。 Proton 是 WINE 的一个分发版本,旨在允许许多 Windows® 游戏在其他操作系统上以最小的设置运行。

13.8.3.3. 有没有任何地方, FreeBSD 的 WINE 用户可以聚集在一起交流技巧和窍门?

有很多地方可以让 FreeBSD 用户讨论与 WINE 相关的问题,并且可以搜索解决方案:

13.8.4. 其他操作系统资源

有许多针对其他操作系统的资源可能对 FreeBSD 用户有用:

  • https://wiki.winehq.org/ 【 WINE Wiki 】上有大量关于使用 WINE 的信息,其中很多适用于 WINE 支持的多个操作系统。

  • 同样,其他操作系统项目提供的文档也可能非常有价值。 Arch Linux Wiki 上的 WINE 页面 是一个特别好的例子,尽管一些“第三方应用程序”(即“伴侣应用程序”)显然在 FreeBSD 上不可用。

  • 最后, Codeweavers (一家商业版 WINE 的开发者)是一个积极的上游贡献者。在 他们的支持论坛 中,对于解决开源版本 WINE 的问题,经常可以找到有帮助的答案。


上次修改时间: September 18, 2024 by fiercex