第十三章 WINE13.1. 简介13.2. WINE概述和概念13.2.1. 什么是WINE?13.2.2. WINE和FreeBSD系统13.2.3. WINE中的图形与文本模式/终端程序13.2.4. WINE衍生项目13.2.4.1. 商业WINE实施13.2.4.2. WINE配套项目13.2.5. WINE替代方案13.3. 在FreeBSD上安装WINE13.3.1. WINE 先决条件13.3.2. 通过FreeBSD软件包仓库安装WINE13.3.3. WINE安装中32位与64位的问题13.4. 在FreeBSD上运行第一个WINE程序13.4.1. 从命令行运行程序13.4.2. 从GUI运行程序13.5. 配置WINE安装13.5.1. WINE 前缀13.5.2. 创建和使用WINE前缀13.5.3. 使用 winecfg 配置WINE前缀13.5.3.1. Applications,应用程序13.5.3.2. Libraries,库13.5.3.3. Graphics,图形13.5.3.4. Desktop Integration,桌面集成13.5.3.5. Drives,驱动器13.5.3.6. Audio,声音13.5.3.7. About,关于13.6. WINE管理GUI13.6.1. Winetricks13.6.1.1. 安装 winetricks13.6.1.2. 使用 winetricks13.6.2. Mizutamari13.6.2.1. 安装 Mizutamari13.6.2.2. 使用 Mizutamari13.6.3. 运行多个管理GUI13.7. 多用户FreeBSD安装中的WINE13.7.1. 使用常见WINE前缀的问题13.7.2. 将应用程序安装到公用驱动器13.7.3. 使用WINE的通用安装13.8. WINE on FreeBSD常见问题13.8.1. 基本安装和使用13.8.1.1. 如何在同一系统上安装32位和64位WINE?13.8.1.2. DOS程序可以在WINE上运行吗?13.8.1.3. 是否应该安装 emulators/wine-devel 包/Port以使用wine的开发版本而不是Stable?13.8.2. 安装优化13.8.2.1. 如何处理Windows®硬件(如图形)驱动程序?13.8.2.2. 有没有办法让Windows®字体看起来更好?13.8.2.3. 在系统的其他地方安装Windows®是否有助于WINE的运行?13.8.3. 特定应用13.8.3.1. 查看应用程序X是否适用于WINE的最佳位置在哪里?13.8.3.2. 有什么能帮助游戏更好地运行吗?13.8.3.3. FreeBSD WINE用户聚集在哪里交流技巧和窍门?13.8.4. 其他操作系统资源
WINE代表 Wine Is Not a Emulator(硬件仿真器),从技术上讲是一个软件翻译层。它允许在FreeBSD(和其他)系统上安装和运行为Windows®编写的软件。
它通过拦截系统调用或从软件到操作系统的请求,并将它们从Windows®调用转换为FreeBSD理解的调用来运行。它还将根据需要将任何响应转换为Windows®软件的预期。因此,在某些方面,它模拟了Windows®环境,因为它提供了Windows®应用程序所期望的许多资源。
然而,它不是传统意义上的模拟器。其中许多解决方案是通过使用软件进程代替硬件构建一台完全独立的计算机来运行的。虚拟化(如 emulators/qemu port提供的虚拟化)以这种方式运行。这种方法的好处之一是能够将所讨论的操作系统的完整版本安装到模拟器中。这意味着应用程序的环境看起来与真实机器没有任何不同,而且很有可能一切都能在其上运行。这种方法的缺点是,作为硬件的软件本质上比实际硬件慢。内置软件的计算机(称为客户机)需要来自真实机器(主机)的资源,并在运行期间保留这些资源。
另一方面,WINE项目在系统资源上要轻得多。它将即时翻译系统调用,因此虽然很难像真正的Windows®计算机那样快,但它可以非常接近。另一方面,WINE正试图在所有不同的系统调用和它需要支持的其他功能方面跟上不断变化的目标。因此,可能会有一些应用程序在WINE上无法按预期工作,根本无法工作,甚至一开始就无法安装。
最终,WINE提供了另一种选择,可以尝试在FreeBSD上运行特定的Windows®软件程序。它总是可以作为第一种选择,如果成功,它可以提供良好的体验,而不会不必要地耗尽宿主FreeBSD系统的资源。
本章将介绍:
• 如何在FreeBSD系统上安装WINE。 • WINE的运作方式,以及它与虚拟化等其他替代方案的不同之处。 • 如何根据某些应用程序的特定需求微调WINE。 • 如何安装WINE的GUI助手。 • 在FreeBSD上使用WINE的常见提示和解决方案。 • FreeBSD上WINE在多用户环境方面的考虑因素。
在阅读本章之前,以下内容将很有用:
• 了解UNIX®和FreeBSD的基础知识。 • 知道如何安装FreeBSD。 • 知道如何设置网络连接。 • 知道如何安装其他第三方软件。
WINE是一个复杂的系统,因此在FreeBSD系统上运行它之前,有必要了解它是什么以及它是如何工作的。
正如本章简介中提到的,WINE是一个兼容层,允许Windows®应用程序在其他操作系统上运行。理论上,这意味着这些程序应该在FreeBSD、macOS和Android等系统上运行。
当WINE运行Windows®可执行文件时,会发生两件事:
在FreeBSD系统上安装WINE需要几个不同的组件:
作为一个终端实用程序是“一流公民”(first-class citizens)的操作系统,很自然地假设WINE将包含对文本模式程序的广泛支持。然而,大多数Windows®应用程序,尤其是最受欢迎的应用程序,在设计时都考虑了图形用户界面(GUI)。因此,WINE的实用程序默认设计为启动图形程序。
但是,有三种方法可以运行这些所谓的控制台用户界面(Console User Interface,CUI)程序:
Bare Streams 方法将直接将输出显示为标准输出。wineconsole 实用程序可以与用户或curses后端一起使用,以利用WINE系统为CUI应用程序提供的一些增强功能。这些方法在 WINE Wiki 上有更详细的描述。
WINE本身是一个成熟的开源项目,因此它被用作更复杂解决方案的基础也就不足为奇了。
许多公司已经将WINE作为自己专有产品的核心(WINE的LGPL许可证允许这样做)。其中最著名的两个如下:
Codeweavers CrossOver
该解决方案提供了一个简化的WINE“一键式”安装,其中包含额外的增强和优化(尽管该公司将其中许多功能贡献给了WINE项目的上游)。Codeweaver的一个重点领域是使最流行的应用程序能够顺利安装和运行。
虽然该公司曾生产过CrossOver解决方案的原生FreeBSD版本,但似乎早已被放弃。虽然一些资源(如专门的论坛)仍然存在,但他们已经有一段时间没有活动了。
Steam Proton
游戏公司Steam还使用WINE使Windows®游戏能够在其他系统上安装和运行。它的主要目标是基于Linux的系统,尽管macOS也有一些支持。
虽然Steam不提供原生FreeBSD客户端,但使用FreeBSD的Linux兼容层使用Linux®客户端有几种选择。
除了专有产品外,其他项目还发布了旨在与WINE的标准开源版本协同工作的应用程序。这些目标可以从使安装更容易到提供安装流行软件的简单方法。
这些解决方案在后面关于【13.6. GUI前端】的部分中有更详细的介绍,包括以下内容:
• winetricks • Mizutamari
对于FreeBSD用户来说,使用WINE的一些替代方法如下:
Dual-Booting(双引导)
一个简单的选择是在该操作系统上本机运行所需的Windows®应用程序。当然,这意味着退出FreeBSD以启动Windows®,因此如果需要同时访问两个系统中的程序,这种方法是不可行的。
Virtual Machines(虚拟机)
如本章前面所述,虚拟机(VMs)是模拟全套硬件的软件进程,可以在其上安装和运行其他操作系统(包括Windows®)。现代工具使虚拟机易于创建和管理,但这种方法是有代价的。主机系统资源的很大一部分必须分配给每个VM,只要VM正在运行,主机就无法回收这些资源。VM管理器的一些示例包括开源解决方案 qemu 、 bhyve 和 VirtualBox 。有关更多详细信息,请参阅【24. 虚拟化】一章。
Remote Access(远程访问)
与许多其他类UNIX系统一样,FreeBSD可以运行各种应用程序,使用户能够远程访问Windows®计算机并使用其程序或数据。除了连接到标准Windows®远程桌面协议的xrdp等客户端外,还可以使用vnc等其他开源标准(前提是另一端有兼容的服务器)。
WINE可以通过pkg工具安装,也可以通过编译port安装。
在安装WINE之前,安装以下先决条件是有用的。
GUI
大多数Windows®程序都希望有可用的图形用户界面。如果安装WINE时没有显示,则其依赖项将包括Wayland合成器,因此GUI将与WINE一起安装。但是,在安装WINE之前,安装、配置并正确工作所选的GUI是有用的。
wine-gecko
Windows®操作系统已经预装了默认的web浏览器:Internet Explorer。因此,一些应用程序在假设总会有能够显示网页的东西的情况下工作。为了提供此功能,WINE层包括一个使用Mozilla项目的Gecko引擎的web浏览器组件。当WINE首次推出时,它将提供下载和安装功能,用户可能希望这样做是有原因的(这些将在后面的章节中介绍)。但他们也可以在安装WINE之前安装它,或者与WINE本身一起安装。
使用以下内容安装此软件包:
xxxxxxxxxx# pkg install wine-gecko或者,使用以下命令编译 port:
xxxxxxxxxx# cd /usr/ports/emulator/wine-gecko# make installwine-mono
此port安装了MONO框架,这是微软 .NET 的开源实现。将此与WINE安装一起使用,将使用 .NET 编写的任何应用程序更有可能在系统上安装和运行。
安装此包:
xxxxxxxxxx# pkg install wine-mono从ports collection 编译:
xxxxxxxxxx# cd /usr/ports/emulator/wine-mono# make install先决条件就绪后,使用以下命令通过软件包安装WINE:
xxxxxxxxxx# pkg install wine或者,使用以下代码从源代码编译WINE子系统:
xxxxxxxxxx# cd /usr/ports/emulator/wine# make install与大多数软件一样,Windows®应用程序从旧的32位架构升级到64位。最新的软件是为64位操作系统编写的,尽管现代操作系统有时也可以继续运行较旧的32位程序。FreeBSD也不例外,从5.x系列开始就支持64位。
然而,使用默认情况下不再支持的旧软件是模拟器的常见用途,用户通常会转向WINE玩游戏,并使用在现代硬件上无法正常运行的其他程序。幸运的是,FreeBSD可以支持所有三种情况:
既然WINE已经安装,下一步就是通过运行一个简单的程序来尝试它。一个简单的方法是下载一个自包含的(self-contained)应用程序,即可以简单地解压缩并运行,而无需任何复杂的安装过程。
所谓的“可移植”(portable)版本的应用程序是此测试的不错选择,仅使用单个可执行文件运行的程序也是如此。
从终端启动Windows程序有两种不同的方法。第一个也是最简单的方法是导航到包含程序可执行文件(.EXE)的目录,并发出以下命令:
xxxxxxxxxx% wine program.exe对于接受命令行参数的应用程序,请像往常一样在可执行文件后添加它们:
xxxxxxxxxx% wine program2.exe -file file.txt或者,提供可执行文件的完整路径以在脚本中使用它,例如:
xxxxxxxxxx% wine /home/user/bin/program.exe安装后,图形shells应使用Windows可执行文件(.EXE)的新关联进行更新。现在可以使用文件管理器浏览系统,并以与其他文件和程序相同的方式启动Windows应用程序(根据桌面设置,可以是单次或双击)。
在大多数桌面上,右键单击文件并在上下文菜单中查找条目以打开文件,以检查此关联是否正确。其中一个选项(希望是默认选项)将使用Wine Windows程序加载器,如下图所示:

如果程序没有按预期运行,请尝试从命令行启动它,并查看终端中显示的任何消息以进行故障排除。
如果WINE不是的默认应用程序。安装EXE文件后,请在当前桌面环境、图形shell或文件管理器中检查此扩展名的MIME关联。
在深入了解WINE的含义及其工作原理后,在FreeBSD上有效使用它的下一步就是熟悉它的配置。以下部分将描述 WINE prefix (WINE前缀)的关键概念,并说明如何使用它来控制通过WINE运行的应用程序的行为。
WINE前缀是一个目录,通常位于默认位置 $HOME/.wine 下方,但也可以位于其他位置。前缀是wine用于配置和运行给定应用程序所需的Windows®环境的一组配置和支持文件。默认情况下,全新的WINE安装在用户首次启动时将创建以下结构:
.update-timestamp
包含文件 /usr/share/wine/wine.inf 的最后修改日期。WINE使用它来确定前缀是否过期,并在需要时自动更新。
dosdevices/
包含有关Windows®资源到宿主FreeBSD系统上资源的映射的信息。例如,在新的WINE安装后,它应该至少包含两个条目,可以使用Windows®风格的驱动器号访问FreeBSD文件系统:
drive_c/
模拟Windows®系统的主驱动器(即C:)。它包含一个目录结构和与标准Windows®系统镜像的相关文件。新的WINE前缀将包含Windows®10目录,如用户和包含操作系统本身的Windows。此外,安装在前缀内的应用程序将位于程序文件或程序文件(x86)中,具体取决于其架构。
system.reg
此注册表文件包含有关Windows®安装的信息,在WINE的情况下,是drive_c中的环境。
user.reg
此注册表文件包含当前用户的个人配置,可以通过各种软件或注册表编辑器进行配置。
userdef.reg
此注册表文件是新创建用户的默认配置集。
虽然WINE会在用户的 $HOME/.wine/ 中创建一个默认前缀,但也可以设置多个前缀。这样做有几个原因:
从终端创建前缀需要以下命令:
xxxxxxxxxx% WINEPREFIX="/home/username/.wine-new" winecfg这将运行 winecfg 程序,该程序可用于配置wine前缀(稍后将对此进行更多介绍)。但是,通过为 WINEPREFIX 环境变量提供目录路径值,如果该位置还不存在前缀,则会在该位置创建一个新的前缀。
向wine程序提供相同的变量同样会导致所选程序以指定的前缀运行:
xxxxxxxxxx% WINEPREFIX="/home/username/.wine-new" wine program.exewinecfg 配置WINE前缀如上所述,WINE包括一个名为 winecfg 的工具,用于在GUI中配置前缀。它包含各种功能,这些功能将在下面的部分中详细介绍。当 winecfg 从前缀中运行,或在 WINEPREFIX 变量中提供前缀的位置时,它将启用所选前缀的配置,如以下部分所述。
在“应用程序”选项卡上所做的选择将影响在“库”和“图形”选项卡中所做的更改范围,这些更改将仅限于所选的应用程序。有关更多详细信息,请参阅WINE Wiki中的 “ 使用Winecfg ”一节。

应用程序包含允许程序与特定版本的Windows®关联的控件。首次启动时,【Application settings】部分将包含一个条目:【Default Settings】。这对应于前缀的所有默认配置,这些配置(正如禁用的【Remove application】按钮所暗示的那样)不能删除。
但可以通过以下过程添加其他应用程序:
1.单击【Add application】按钮。 2.使用提供的对话框选择所需程序的可执行文件。 3.选择要与所选程序一起使用的Windows®版本。

WINE在其发行版中提供了一组开源库文件,这些文件提供了与Windows®对应版本相同的功能。然而,正如本章前面提到的,WINE项目一直在努力跟上这些库的新更新。因此,WINE附带的版本可能缺少最新Windows®程序所期望的功能。
然而,winecfg 允许为内置库指定覆盖,特别是在与主机FreeBSD安装相同的机器上有一个版本的Windows®。对于要覆盖的每个库,请执行以下操作:
1.打开【New override for library】覆盖下拉列表,选择要替换的库。 2.单击【Add】按钮。 3.新的覆盖将出现在【Existing overrides】列表中,请注意括号中的【native,builtin】名称。 4.单击以选择库。 5.单击【Edit】按钮。 6.使用提供的对话框选择相应的库来代替内置库。
一定要选择一个真正与内置版本对应的文件,否则可能会出现意外行为。

【Graphics】选项卡提供了一些选项,使通过WINE运行的程序窗口在FreeBSD中流畅运行:
•窗口全屏时自动捕获鼠标。 •允许FreeBSD窗口管理器为通过WINE运行的程序装饰窗口,如标题栏。 •允许窗口管理器控制通过WINE运行的程序的窗口,例如在其上运行调整大小的功能。 •创建一个模拟的虚拟桌面,所有WINE程序都将在其中运行。如果选择此项,则可以使用“桌面大小”输入框指定虚拟桌面的大小。 •设置通过WINE运行的程序的屏幕分辨率。

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

Drives选项卡允许将主机FreeBSD系统中的目录链接到Windows®环境中的驱动器号。此选项卡中的默认值应该看起来很熟悉,因为它们显示了当前WINE前缀中 dosdevices/ 的内容。通过此对话框所做的更改将反映在dosdevices中,在该目录中创建的格式正确的链接将显示在此选项卡中。
要创建新条目,例如CD-ROM(挂载在 /mnt/cdrom ),请执行以下步骤:
默认情况下,WINE将自动检测链接的资源类型,但这可以手动覆盖。有关高级选项的更多详细信息,请参阅WINE Wiki中的部分。

此选项卡包含一些可配置的选项,用于将声音从Windows®程序路由到本机FreeBSD声音系统,包括:
•驱动选择 •默认设备选择 •声音测试

最后一个选项卡包含有关WINE项目的信息,包括指向网站的链接。它还允许输入(完全可选的)用户信息,尽管这不会像在其他操作系统中那样发送到任何地方。
虽然WINE的基本安装附带了 winecfg 中的GUI配置工具,但其主要目的只是:严格配置现有的WINE前缀。然而,还有更高级的应用程序可以帮助应用程序的初始安装以及优化其WINE环境。以下部分包括最受欢迎的部分。
winetricks 工具是WINE的跨平台通用助手程序。它不是由WINE项目本身开发的,而是由一群贡献者在GitHub上维护的。它包含一些自动化的“配方”(recipes),通过优化设置和自动获取一些DLL库,使常见应用程序在WINE上运行。
winetricks要使用二进制包在FreeBSD上安装 winetricks ,请使用以下命令(注意 winetricks 需要 i386-wine 或 i386-wine-devel 包,因此不会与其他依赖项一起自动安装):
xxxxxxxxxx# pkg install i386-wine winetricks要从源代码编译它,请在终端中发出以下命令:
xxxxxxxxxx# cd /usr/ports/emulators/i386-wine# make install# cd /usr/ports/emulators/winetricks# make install如果需要手动安装,请参阅 Github 帐户以获取说明。
winetricks使用以下命令运行 winetricks:
xxxxxxxxxx% winetricks注意:这应该是32位前缀,以便运行 winetricks 。启动 winetricks 会显示一个包含许多选项的窗口,如下所示:

选择【Install an application】、【Install a benchmark】或【Install a game】将显示一个包含支持选项的列表,例如下面的应用程序选项:

选择一个或多个项目并单击【OK】将开始其安装过程。最初,可能会显示一些看似错误的消息,但它们实际上是信息性警报,因为 winetricks 配置WINE环境以解决应用程序的已知问题:

一旦绕过这些,应用程序的实际安装程序将运行:

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

要删除应用程序,请再次运行 winetricks ,然后选择【Run an uninstaller】。

将出现一个Windows®风格的对话框,其中包含已安装程序和组件的列表。选择要删除的应用程序,然后单击【Modify/Remove】按钮。

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

Mizutamari 是一个类似于 winetricks 的应用程序,尽管它的灵感来自Linux的Lutris游戏系统。但是,虽然它专注于游戏,但也有非游戏应用程序可以通过 Mizutamari 安装。
要安装Mizutamari的二进制包,请发出以下命令:
xxxxxxxxxx# pkg install mizumaMizutamari 在FreeBSD Ports系统中可用。但是,它在 games 部分,而不是在 emulators 部分。
xxxxxxxxxx# cd /usr/ports/games/mizuma# make installMizutamariMizutamari 的用法与 winetricks 非常相似。首次使用时,请使用以下命令从命令行(或桌面环境运行程序小程序)启动它:
xxxxxxxxxx% Mizuma这应该会产生一个友好的欢迎信息。单击【OK】继续。

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

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

然后,应用程序的窗口应该出现,这相当于一个包含所有选项的【main menu】。许多项目与 winetricks 相同,尽管 Mizutamari 提供了一些额外的、有用的选项,例如打开其数据文件夹(【Open Mizutamari Folder】)或运行指定的程序(【Run a executable in prefix】)。

要选择 Mizutamari 支持的应用程序之一进行安装,请选择【Installation】,然后单击【OK】。这将显示Homura可以自动安装的应用程序列表。选择一个,然后单击【OK】开始该过程。

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

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

接下来,Mizutamari 将为所选程序安装任何先决条件。这可能涉及下载和提取相当数量的文件,其详细信息将显示在对话框中。

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

安装可能会在终端中以简单的桌面通知或消息结束,具体取决于 Mizutamari 的启动方式。但无论哪种情况,Mizutamari 都应该回到主屏幕。要确认安装成功,请选择【Launcher】,然后单击【OK】。

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

要运行新程序,请从列表中选择它,然后单击【OK】。要卸载应用程序,请在主屏幕中选择【Uninstallation】,这将显示类似的列表。选择要删除的程序,然后单击【OK】。

值得注意的是,上述解决方案并非相互排斥。同时安装两者是完全可以接受的,甚至是有利的,因为它们支持一组不同的程序。
然而,明智的做法是确保他们不会访问任何相同的WINE前缀。这些解决方案中的每一个都应用了变通方法,并根据现有WINE问题的已知变通方法对注册表进行了更改,以使给定的应用程序平稳运行。允许 winetricks 和 Homura 访问相同的前缀可能会导致其中一些被覆盖,从而导致一些或所有应用程序无法按预期工作。
与大多数类UNIX®操作系统一样,FreeBSD是为多个用户同时登录和工作而设计的。另一方面,Windows®是多用户的,因为可以在一个系统上设置多个用户帐户。但预计在任何特定时刻,只有一个人会使用物理机器(台式机或笔记本电脑)。
最近的Windows®消费者版本已经采取了一些措施来改进多用户场景中的操作系统。但它仍然主要围绕单一用户体验构建。此外,WINE项目为创建兼容环境所采取的措施意味着,与FreeBSD应用程序(包括WINE本身)不同,它将类似于这种单用户环境。
因此,每个用户都必须维护自己的配置集,这可能是件好事。然而,只安装一次应用程序是有利的,尤其是像办公套件或游戏这样的大型应用程序。这样做的两个原因是维护(软件更新只需要应用一次)和存储效率(没有重复的文件)。
有两种策略可以最大限度地减少系统中多个WINE用户的影响。
如WINE配置部分所示,WINE提供了将其他驱动器附加到给定前缀的能力。通过这种方式,应用程序可以安装到一个公共位置,而每个用户仍然有一个前缀,可以保留单独的设置(取决于程序)。如果用户之间共享的应用程序相对较少,并且这些程序需要很少的自定义调整来更改前缀才能运行,那么这是一个很好的设置。
以这种方式安装应用程序的步骤如下:
mkdir(1) 手册页中描述了创建新目录。770 (【3.4. 权限】小节说明了此过程)。winecfg 将该位置作为驱动器添加到用户的前缀中,如本章上述WINE配置部分所述。完成后,应用程序可以安装到此位置,随后使用分配的驱动器号(或标准UNIX®样式的目录路径)运行。但是,如上所述,应该只有一个用户同时运行这些应用程序(可能正在访问其安装目录中的文件)。某些应用程序在由非所有者的用户运行时也可能出现意外行为,尽管该用户是应该对整个目录具有完全“读/写/执行”权限的组的成员。
另一方面,如果有许多应用程序需要共享,或者它们需要特定的调优才能正常工作,则可能需要不同的方法。在这种方法中,创建了一个完全独立的用户,专门用于存储WINE前缀及其所有安装的应用程序。然后,使用 sudo(8) 命令,个人用户被授予以该用户身份运行程序的权限。结果是,这些用户可以像往常一样启动WINE应用程序,只是它会像新创建的用户一样启动,因此使用集中维护的前缀,其中包含设置和程序。为此,请采取以下步骤:
使用以下命令创建一个新用户(以root身份),该命令将逐步完成所需的详细信息:
xxxxxxxxxx# adduser输入用户名(例如 windows )和全名(“Microsoft windows”)。然后接受其余问题的默认值。
接下来,使用具有以下内容的二进制包安装 sudo 实用程序:
xxxxxxxxxx# pkg install sudo安装后,按如下方式编辑 /etc/sudoers :
xUser_Alias WINDOWS_USERS = user1,user2 User_Alias ADMIN = user1 Cmnd_Alias WINDOWS = /usr/bin/wine,/usr/bin/winecfg Defaults:WINDOWS_USERS env_resetDefaults:WINDOWS_USERS env_keep += DISPLAYDefaults:WINDOWS_USERS env_keep += XAUTHORITYDefaults !lecture,tty_tickets,!fqdn root ALL=(ALL) ALL ADMIN ALL=(ALL) ALL WINDOWS_USERS ALL = (windows) NOPASSWD: WINDOWS这些更改的结果是,允许 User_Alias 部分中命名的用户使用默认值部分(当前显示)中列出的资源运行 Cmnd Alias 部分中列出的程序,就像他们是文件最后一行中列出的用户一样。换句话说,指定为 WINDOWS_USERS 的用户可以将WINE和 winecfg 应用程序作为用户窗口运行。作为奖励,这里的配置意味着他们不需要输入 windows 用户的密码。
接下来,向 windows 用户提供对显示器的访问权限,WINE程序将以该用户的身份运行:
xxxxxxxxxx% xhost +local:windows这应该添加到登录时或默认图形环境启动时运行的命令列表中。
完成上述所有操作后,在 sudoers 中配置为 WINDOW_USERS 之一的用户可以使用以下命令使用共享前缀运行程序:
xxxxxxxxxx% sudo -u windows wine program.exe值得注意的是,多个用户同时访问这个共享环境仍然存在风险。但是,还要考虑到共享环境本身可以包含多个前缀。通过这种方式,管理员可以创建一组经过测试和验证的程序,每个程序都有自己的前缀。同时,一个用户可以玩游戏,而另一个用户则可以使用办公程序,而不需要安装冗余的软件。
以下部分描述了在FreeBSD上运行WINE的一些常见问题、提示/技巧(tips/tricks)或常见问题,以及它们各自的答案。
如本节前面所述,wine 和 i386-wine 包相互冲突,因此不能以正常方式安装在同一系统上。但是,可以使用chroots/jails等机制或从源代码构建WINE来实现多次安装(请注意,这并不意味着构建port)。
它们可以作为本节前面提到的“控制台用户界面”应用程序。然而,有一种运行DOS软件的更好的方法:DOSBox 。另一方面,几乎没有理由不尝试一下。只需创建一个新的前缀,安装软件,如果不起作用,删除前缀。
emulators/wine-devel 包/Port以使用wine的开发版本而不是Stable?是的,安装此版本将安装WINE的“development”版本。与32位和64位版本一样,除非采取额外措施,否则它们不能与稳定版本一起安装。
请注意,WINE还有一个“Staging”(暂存)版本,其中包含最新更新。这曾经是FreeBSD移植版;然而,它已被删除。然而,它可以直接从源代码编译。
操作系统驱动程序在应用程序和硬件之间传输命令。WINE模拟了Windows®环境,包括驱动程序,而驱动程序又使用FreeBSD的本机驱动程序进行此传输。不建议安装Windows®驱动程序,因为WINE系统旨在使用主机系统驱动程序。例如,如果图形卡受益于专用驱动程序,请使用标准的FreeBSD方法安装它们,而不是Windows®安装程序。
FreeBSD论坛上的一位用户建议使用此配置来修复WINE字体的开箱即用外观,这些字体可能会稍微像素化。
根据 FreeBSD论坛上的一篇文章 ,在 .config/fontconfig/fonts.conf 中添加以下内容将添加抗锯齿功能,使文本更具可读性。
xxxxxxxxxx "<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>这可能取决于正在运行的应用程序。正如描述 winecfg 一节中提到的,一些内置的WINE DLL和其他库可以通过提供指向替代版本的路径来覆盖。如果Windows®分区或驱动器已挂载到FreeBSD系统并可供用户访问,配置其中一些覆盖将使用本机Windows®库,并可能减少意外行为的可能性。
确定兼容性的第一步应该是WINE AppDB。这是在所有支持的平台上工作(或不工作)的程序报告的汇编,尽管(如前所述)一个平台的解决方案通常适用于其他平台。
也许。许多Windows®游戏都依赖于DirectX,这是微软专有的图形层。然而,开源社区中有一些项目试图实现对这项技术的支持。
dxvk 项目就是这样一个项目,它试图使用FreeBSD兼容的Vulkan图形子系统来实现DirectX。虽然它的主要目标是Linux上的WINE,但一些FreeBSD用户报告说正在编译和使用 dxvk 。
此外,wine-proton port的工作正在进行中。这将把Steam游戏平台开发商Valve的工作带到FreeBSD。Proton是WINE的一个发行版,旨在允许许多Windows®游戏在其他操作系统上运行,只需进行最少的设置。
FreeBSD用户在很多地方讨论与WINE相关的问题,可以搜索解决方案:
有许多资源专注于其他操作系统,可能对FreeBSD用户有用: