---
description: 'Эта глава описывает, как установить WINE в системе FreeBSD и как его настроить'
next: books/handbook/partiii
params:
  path: /books/handbook/wine/
part: 'Часть II. Стандартные задачи'
prev: books/handbook/linuxemu
showBookMenu: 'true'
tags: ["WINE", "emulation", "guide", "tutorial"]
title: 'Глава 13. WINE'
weight: 16
---

[[wine]]
= WINE
:doctype: book
:toc: macro
:toclevels: 1
:icons: font
:sectnums:
:sectnumlevels: 6
:sectnumoffset: 13
:partnums:
:source-highlighter: rouge
:experimental:
:images-path: books/handbook/wine/

ifdef::env-beastie[]
ifdef::backend-html5[]
:imagesdir: ../../../../images/{images-path}
endif::[]
ifndef::book[]
include::shared/authors.adoc[]
include::shared/mirrors.adoc[]
include::shared/releases.adoc[]
include::shared/attributes/attributes-{{% lang %}}.adoc[]
include::shared/{{% lang %}}/teams.adoc[]
include::shared/{{% lang %}}/mailing-lists.adoc[]
include::shared/{{% lang %}}/urls.adoc[]
toc::[]
endif::[]
ifdef::backend-pdf,backend-epub3[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]
endif::[]

ifndef::env-beastie[]
toc::[]
include::../../../../../shared/asciidoctor.adoc[]
endif::[]

[[wine-synopsis]]
== Обзор

https://www.winehq.org/[WINE], что расшифровывается как Wine Is Not an Emulator (WINE — это не эмулятор), технически является программным уровнем трансляции. Он позволяет устанавливать и запускать программное обеспечение, написанное для Windows(R), в системах FreeBSD (и других).

Он работает, перехватывая системные вызовы, или запросы от программного обеспечения к операционной системе, и преобразует их из вызовов Windows(R) в вызовы, которые понимает FreeBSD. Он также преобразует любые ответы, если это необходимо, в то, что ожидает программное обеспечение Windows(R). Таким образом, в некотором смысле он _эмулирует_ среду Windows(R), предоставляя многие из ресурсов, которые ожидают приложения Windows(R).

Однако это не эмулятор в традиционном смысле. Многие из этих решений работают, создавая полностью отдельный компьютер с использованием программных процессов вместо аппаратного обеспечения. Виртуализация (например, предоставляемая портом `package:emulators/qemu[]`) работает именно так. Одно из преимуществ этого подхода — возможность установить полную версию соответствующей ОС в эмулятор. Это означает, что среда для приложений не будет отличаться от реальной машины, и высока вероятность, что всё будет работать. Недостаток этого подхода заключается в том, что программное обеспечение, имитирующее аппаратное, по своей природе медленнее реального оборудования. Компьютер, созданный программно (называемый _гостевым_), требует ресурсов от реальной машины (называемой _хостовой_) и удерживает эти ресурсы всё время своей работы.

С другой стороны, проект WINE гораздо менее требователен к ресурсам системы. Он преобразует системные вызовы на лету, поэтому, хотя и сложно достичь скорости реального компьютера с Windows(R), он может приблизиться к ней. Однако WINE вынужден успевать за движущейся целью в плане всех различных системных вызовов и другой функциональности, которую необходимо поддерживать. В результате некоторые приложения могут работать в WINE не так, как ожидается, не работать вовсе или даже не устанавливаться.

В конечном итоге, WINE предоставляет ещё один вариант для запуска определённого программного обеспечения Windows(R) на FreeBSD. Он всегда может служить первым вариантом, который в случае успеха обеспечивает хороший опыт работы без излишнего потребления ресурсов хостовой системы FreeBSD.

Эта глава расскажет о следующем:

* Как установить WINE в системе FreeBSD.
* Как работает WINE и чем он отличается от других альтернатив, таких как виртуализация.
* Как настроить WINE под конкретные потребности некоторых приложений.
* Как установить графические помощники для WINE.
* Общие советы и решения по использованию WINE в FreeBSD.
* Соображения по использованию WINE в FreeBSD в условиях многопользовательской среды.

Прежде чем читать эту главу, полезно:

* Понимать crossref:basics[basics,основы UNIX(R) и FreeBSD].
* Знать, как crossref:bsdinstall[bsdinstall,установить FreeBSD].
* Уметь настраивать сетевое соединение, как описано в crossref:advanced-networking[advanced-networking,разделе по расширенной настройке сети].
* Знать, как crossref:ports[ports,установить дополнительное стороннее программное обеспечение].

[[wine-overview-concepts]]
== Обзор и основные концепции WINE

WINE — это сложная система, поэтому перед запуском на FreeBSD стоит разобраться, что она из себя представляет и как работает.

[[what-is-wine]]
=== Что такое WINE?

Как упоминалось в crossref:wine[wine-synopsis,Обзоре] этой главы, WINE — это уровень совместимости, который позволяет приложениям Windows(R) работать в других операционных системах. Теоретически это означает, что такие программы должны работать в системах, подобных FreeBSD, macOS и Android.

Когда WINE запускает исполняемый файл Windows(R), происходят две вещи:

* Во-первых, WINE реализует среду, имитирующую различные версии Windows(R). Например, если приложение запрашивает доступ к ресурсу, такому как оперативная память, WINE предоставляет интерфейс памяти, который выглядит и ведёт себя (с точки зрения приложения) как Windows(R).
* Затем, когда приложение использует этот интерфейс, WINE обрабатывает запрос на выделение памяти и преобразует его в формат, совместимый с хост-системой. Аналогично, когда приложение запрашивает эти данные, WINE обеспечивает их получение из хост-системы и передачу обратно в приложение Windows(R).

[[wine-and-the-os-system]]
=== WINE и система FreeBSD

Установка WINE в системе FreeBSD включает несколько различных компонентов:

* Приложения FreeBSD для таких задач, как запуск исполняемых файлов Windows(R), настройка подсистемы WINE или компиляция программ с поддержкой WINE.
* Большое количество библиотек, реализующих основные функции Windows(R) (например, [.filename]#/lib/wine/api-ms-core-memory-l1-1-1.dll.so#, которая является частью упомянутого интерфейса памяти).
* Ряд исполняемых файлов Windows(R), которые являются (или имитируют) распространённые утилиты (например, [.filename]#/lib/wine/notepad.exe.so#, предоставляющий стандартный текстовый редактор Windows(R)).
* Дополнительные ресурсы Windows(R), в частности шрифты (например, шрифт Tahoma, который хранится в [.filename]#share/wine/fonts/tahoma.ttf# в корневом каталоге установки).

[[graphical-versus-text-modeterminal-programs-in-wine]]
=== Графические и текстовые программы/терминальные программы в WINE

Как операционная система, где терминальные утилиты являются «приложениями первого класса», естественно предположить, что WINE будет иметь обширную поддержку текстовых программ. Однако большинство приложений для Windows(R), особенно наиболее популярные, разработаны с расчётом на графический интерфейс пользователя (GUI). Поэтому утилиты WINE по умолчанию настроены на запуск графических программ.

Однако доступны три метода для запуска этих так называемых программ с интерфейсом пользователя в консоли (Console User Interface, CUI):

* Подход _Bare Streams_ будет выводить данные напрямую в стандартный вывод.
* Утилита _wineconsole_ может использоваться с бэкендом _user_ или _curses_ для использования некоторых улучшений, которые система WINE предоставляет для CUI-приложений.

Эти методы подробно описаны на https://wiki.winehq.org/Wine_User%27s_Guide#Text_mode_programs_.28CUI:_Console_User_Interface.29[вики WINE].

[[wine-derivative-projects]]
=== Производные проекты WINE

WINE сам по себе является зрелым проектом с открытым исходным кодом, поэтому неудивительно, что он используется в качестве основы для более сложных решений.

[[commercial-wine-implementations]]
==== Коммерческие реализации WINE

Некоторые компании взяли WINE и сделали его основой своих собственных проприетарных продуктов (лицензия LGPL WINE позволяет это). Два самых известных из них следующие:

* Codeweavers CrossOver

Это решение предлагает упрощённую установку WINE "в один клик", включающую дополнительные улучшения и оптимизации (хотя компания вносит многие из них обратно в основной проект WINE). Codeweavers сосредоточены на том, чтобы популярные приложения легко устанавливались и работали без проблем.

Хотя компания когда-то выпускала нативную версию своего решения CrossOver для FreeBSD, похоже, что она давно заброшена. Хотя некоторые ресурсы (например, https://www.codeweavers.com/compatibility/crossover/forum/freebsd[выделенный форум]) всё ещё доступны, на них также давно не наблюдается активности.

* Steam Proton

Игровая компания Steam также использует WINE, чтобы позволить играм для Windows(R) устанавливаться и запускаться на других системах. Основной целью являются системы на базе Linux, но также существует некоторая поддержка macOS.

Хотя Steam не предлагает нативный клиент для FreeBSD, существует несколько вариантов использования клиента для Linux(R) с помощью слоя совместимости с Linux в FreeBSD.

[[wine-companion-programs]]
==== Сопутствующие программы WINE

В дополнение к проприетарным решениям, другие проекты выпустили приложения, предназначенные для работы в связке со стандартной, открытой версией WINE. Их цели могут варьироваться от упрощения установки до предоставления удобных способов установки популярного программного обеспечения.

Эти решения подробно рассмотрены в разделе crossref:wine[wine-management-guis,Графические интерфейсы управления] и включают следующее:

* winetricks
* Mizutamari

[[alternatives-to-wine]]
=== Альтернативы WINE

Для пользователей FreeBSD существуют следующие альтернативы использованию WINE:

* Двойная загрузка: Простой вариант — запускать нужные приложения Windows(R) нативно в этой ОС. Конечно, это означает выход из FreeBSD для загрузки Windows(R), поэтому такой метод не подходит, если требуется одновременный доступ к программам в обеих системах.
* Виртуальные машины: Виртуальные машины (ВМ), как упоминалось ранее в этой главе, представляют собой программные процессы, эмулирующие полные наборы аппаратного обеспечения, на которых могут быть установлены и запущены дополнительные операционные системы (включая Windows(R)). Современные инструменты упрощают создание и управление ВМ, но этот метод имеет свою цену. Значительная часть ресурсов хост-системы должна выделяться каждой ВМ, и эти ресурсы не могут быть возвращены хост-системой, пока ВМ работает. Некоторые примеры менеджеров ВМ включают открытые решения qemu, bhyve и VirtualBox. Подробнее см. в главе crossref:virtualization[virtualization,Вирутализация].
* Удаленный доступ: Как и многие другие UNIX(R)-подобные системы, FreeBSD может запускать различные приложения, позволяющие пользователям удаленно подключаться к компьютерам с Windows(R) и использовать их программы или данные. Помимо клиентов, таких как xrdp, которые подключаются к стандартному протоколу Windows(R) Remote Desktop, также могут использоваться другие открытые стандарты, например, vnc (при условии наличия совместимого сервера на другой стороне).

[[installing-wine-on-freebsd]]
== Установка WINE на FreeBSD

WINE можно установить с помощью утилиты pkg или скомпилировав порт(ы).

[[wine-prerequistes]]
=== Предварительные требования для WINE

Прежде чем устанавливать WINE, рекомендуется установить следующие программы.

* Графический пользовательский интерфейс

Большинство программ Windows(R) ожидают наличия графического пользовательского интерфейса. Если WINE устанавливается без него, его зависимости будут включать композитор Wayland, и тогда графический интерфейс будет установлен вместе с WINE. Однако полезно установить, настроить и проверить работу предпочитаемого графического интерфейса до установки WINE.

* wine-gecko

Операционная система Windows(R) уже долгое время поставляется с предустановленным веб-браузером по умолчанию — Internet Explorer. В результате некоторые приложения работают в предположении, что всегда будет доступно средство для отображения веб-страниц. Чтобы обеспечить эту функциональность, слой WINE включает компонент веб-браузера, использующий движок Gecko проекта Mozilla. При первом запуске WINE предложит загрузить и установить его, и у пользователей могут быть причины согласиться на это (эти причины будут рассмотрены в одной из следующих глав). Однако пользователи также могут установить этот компонент до установки WINE или параллельно с основной установкой WINE.

Установите этот пакет с помощью следующей команды:

[source, shell]
....
# pkg install wine-gecko
....

Или соберите порт с помощью следующей команды:

[source, shell]
....
# cd /usr/ports/emulator/wine-gecko
# make install
....

* wine-mono

Этот порт устанавливает фреймворк MONO, открытую реализацию .NET от Microsoft. Включение его в установку WINE увеличивает вероятность того, что приложения, написанные на .NET, будут устанавливаться и работать в системе.

Для установки пакета:

[source, shell]
....
# pkg install wine-mono
....

Для компиляции из коллекции портов:

[source, shell]
....
# cd /usr/ports/emulator/wine-mono
# make install
....

[[installing-wine]]
=== Установка WINE через репозитории пакетов FreeBSD

Имея выполненные предварительные условия, установите WINE через пакет следующей командой:

[source, shell]
....
# pkg install wine
....

Или можно собрать подсистему WINE из исходного кода следующим образом:

[source, shell]
....
# cd /usr/ports/emulator/wine
# make install
....

[[thirtytwo-vs-sixtyfour-bit-wine]]
=== Проблемы 32- и 64-битных версий в установках WINE

Как и большинство программного обеспечения, приложения Windows(R) перешли с устаревшей 32-битной архитектуры на 64-битную. Большинство современного ПО разрабатывается для 64-битных операционных систем, хотя современные ОС иногда могут запускать и старые 32-битные программы. FreeBSD не является исключением, поддерживая 64-битную архитектуру начиная с серии 5.x.

Однако использование устаревшего программного обеспечения, которое больше не поддерживается по умолчанию, является распространённым случаем применения эмуляторов. Пользователи часто обращаются к WINE для запуска игр и других программ, которые не работают корректно на современном оборудовании. К счастью, FreeBSD поддерживает все три сценария:

* На современных 64-битных машинах, если требуется запускать 64-битное программное обеспечение Windows(R), достаточно установить порты, упомянутые в вышеуказанных разделах. Система портов автоматически установит 64-битную версию.
* Или у пользователей может быть старая 32-разрядная машина, на которой они не хотят запускать оригинальное, теперь уже неподдерживаемое программное обеспечение. Они могут установить 32-разрядную (i386) версию FreeBSD, а затем установить порты из вышеуказанных разделов.

[[running-first-wine-program]]
== Запуск первой программы в WINE на FreeBSD

Теперь, когда WINE установлен, следующий шаг — попробовать его в работе, запустив простую программу. Простой способ сделать это — скачать автономное приложение, то есть такое, которое можно просто распаковать и запустить без сложного процесса установки.

Так называемые "портативные" версии приложений хорошо подходят для этого теста, как и программы, которые работают с одним исполняемым файлом.

[[running-a-program-from-the-command-line]]
=== Запуск программы из командной строки

Существует два различных способа запуска программ Windows из терминала. Первый и наиболее простой — перейти в каталог с исполняемым файлом программы ([.filename]#.EXE#) и выполнить следующую команду:

[source, shell]
....
% wine program.exe
....

Для приложений, принимающих аргументы командной строки, добавьте их после исполняемого файла, как обычно:

[source, shell]
....
% wine program2.exe -file file.txt
....

Другой способ — укажите полный путь к исполняемому файлу, чтобы использовать его в скрипте, например:

[source, shell]
....
% wine /home/user/bin/program.exe
....

[[running-a-program-from-a-gui]]
=== Запуск программы из графического интерфейса

После установки графические оболочки должны быть обновлены с новыми ассоциациями для исполняемых файлов Windows ([.filename]#.EXE#). Теперь можно будет просматривать систему с помощью файлового менеджера и запускать Windows-приложения так же, как другие файлы и программы (одинарным или двойным щелчком, в зависимости от настроек рабочего стола).

На большинстве рабочих столов проверьте правильность этой ассоциации, щёлкнув правой кнопкой мыши на файле и найдя пункт в контекстном меню для его открытия. Один из вариантов меню (будем надеяться, выбираемый по умолчанию) будет *Wine Windows Program Loader*, как показано на рисунке ниже:

image::wine-run-np++-1.png[]

В случае, если программа не работает должным образом, попробуйте запустить её из командной строки и просмотрите сообщения, отображаемые в терминале, для устранения неполадок.

В случае, если WINE не является приложением по умолчанию для файлов [.filename]#.EXE# после установки, проверьте ассоциацию MIME для этого расширения в текущем окружении рабочего стола, графической оболочке или файловом менеджере.

[[configuring-wine-installation]]
== Настройка установленного WINE

Понимая, что такое WINE и как он работает на высоком уровне, следующий шаг к эффективному использованию на FreeBSD — это знакомство с его настройкой. В следующих разделах будет описано ключевое понятие _префикса WINE_ и показано, как он используется для управления поведением приложений, запускаемых через WINE.

[[wine-prefixes]]
=== Префиксы WINE

Префикс WINE — это каталог, обычно расположенный в стандартном месте [.filename]#$HOME/.wine#, хотя может находиться и в другом месте. Префикс представляет собой набор конфигураций и вспомогательных файлов, используемых WINE для настройки и запуска среды Windows(R), необходимой для работы конкретного приложения. По умолчанию при первом запуске WINE пользователем создаётся следующая структура:

* [.filename]#.update-timestamp#: содержит дату последнего изменения файла [.filename]#/usr/share/wine/wine.inf#. Используется WINE для определения устаревания префикса и его автоматического обновления при необходимости.
* [.filename]#dosdevices/#: содержит информацию о сопоставлениях ресурсов Windows(R) с ресурсами в основной системе FreeBSD. Например, после новой установки WINE здесь должны быть как минимум две записи, обеспечивающие доступ к файловой системе FreeBSD с использованием букв дисков в стиле Windows(R):

** [.filename]#c:@#: Ссылка на [.filename]#drive_c#, описанный ниже.
** [.filename]#z:@#: Ссылка на корневой каталог системы.

* [.filename]#drive_c/#: эмулирует основной диск (то есть [.filename]#C:#) системы Windows(R). Он содержит структуру каталогов и связанные файлы, отражающие стандартную структуру Windows(R). В новом префиксе WINE будут присутствовать каталоги Windows(R) 10, такие как _Users_ и _Windows_, в котором находится сама ОС. Кроме того, приложения, установленные в префиксе, будут располагаться в _Program Files_ или _Program Files (x86)_ в зависимости от их архитектуры.
* [.filename]#system.reg#: Этот файл реестра содержит информацию об установке Windows(R), которая в случае WINE представляет собой окружение в [.filename]#drive_c#.
* [.filename]#user.reg#: Этот файл реестра содержит персональные настройки текущего пользователя, созданные различным программным обеспечением или через использование редактора реестра.
* [.filename]#userdef.reg#: Этот файл реестра содержит набор конфигураций по умолчанию для вновь создаваемых пользователей.

[[creating-and-using-wine-prefixes]]
=== Создание и использование префиксов WINE

Хотя WINE создаст префикс по умолчанию в каталоге [.filename]#$HOME/.wine/# пользователя, можно настроить несколько префиксов. Для этого есть несколько причин:

* Наиболее распространённая причина — эмуляция различных версий Windows(R) в соответствии с требованиями совместимости используемого программного обеспечения.
* Кроме того, часто встречается программное обеспечение, которое некорректно работает в стандартном окружении и требует специальной настройки. Полезно изолировать такие программы в собственных пользовательских префиксах, чтобы изменения не влияли на другие приложения.
* Аналогично, копирование стандартного или "основного" префикса в отдельный "тестовый" для проверки совместимости приложения может снизить вероятность повреждения.

Создание префикса из терминала требует выполнения следующей команды:

[source, shell]
....
% WINEPREFIX="/home/username/.wine-new" winecfg
....

Это запустит программу `winecfg`, которую можно использовать для настройки префиксов wine (подробнее об этом в следующем разделе). Однако, указав путь к каталогу в переменной окружения `WINEPREFIX`, можно создать новый префикс по этому пути, если он ещё не существует.

Предоставление той же переменной программе wine аналогично приведет к запуску выбранной программы с указанным префиксом:

[source, shell]
....
% WINEPREFIX="/home/username/.wine-new" wine program.exe
....

[[configuring-wine-prefixes-with-winecfg]]
=== Настройка префиксов WINE с помощью winecfg

Как упоминалось выше, WINE включает инструмент под названием `winecfg` для настройки префиксов через графический интерфейс. Он содержит множество функций, которые подробно описаны в следующих разделах. Когда `winecfg` запускается внутри префикса или ему указывается расположение префикса через переменную `WINEPREFIX`, он позволяет настраивать выбранный префикс, как описано в разделах ниже.

Выбор на вкладке _Приложения (Applications)_ влияет на область изменений, вносимых на вкладках _Библиотеки (Libraries)_ и _Графика (Graphics)_, которые будут ограничены выбранным приложением. Подробнее см. раздел https://wiki.winehq.org/Wine_User%27s_Guide#Using_Winecfg[Использование Winecfg] в вики WINE.

[[applications]]
==== Приложения (Applications)

image::wine-config-1.png[]

В разделе _Приложения (Applications)_ находятся элементы управления, позволяющие связать программы с определённой версией Windows(R). При первом запуске в разделе _Настройки приложений (Application settings)_ будет только одна запись: _Настройки по умолчанию (Default Settings)_. Она соответствует всем конфигурациям префикса по умолчанию, которые (как подразумевает неактивная кнопка _Удалить приложение (Remove application)_) нельзя удалить.

Однако дополнительные приложения можно добавить с помощью следующего процесса:

. Нажмите кнопку _Добавить приложение (Add application)_.
. Используйте предоставленное диалоговое окно для выбора исполняемого файла нужной программы.
. Выберите версию Windows(R) для использования с выбранной программой.

[[libraries]]
==== Библиотеки (Libraries)

image::wine-config-2.png[]

WINE предоставляет набор библиотечных файлов с открытым исходным кодом в составе своей дистрибуции, которые выполняют те же функции, что и их аналоги в Windows(R). Однако, как уже отмечалось ранее в этой главе, проект WINE постоянно стремится идти в ногу с новыми обновлениями этих библиотек. В результате, версии, поставляемые с WINE, могут не иметь функциональности, которую ожидают последние программы для Windows(R).

Однако `winecfg` позволяет указать переопределения для встроенных библиотек, особенно если на той же машине, где установлена FreeBSD, доступна версия Windows(R). Для каждой библиотеки, которую нужно переопределить, выполните следующее:

. Откройте выпадающий список _Новое переопределение для библиотеки (New override for library)_ и выберите библиотеку, которую нужно заменить.
. Нажмите кнопку _Добавить (Add)_.
. Новое переопределение появится в списке _Существующие переопределения (Existing overrides)_, обратите внимание на обозначение _native, builtin_ в скобках.
. Нажмите, чтобы выбрать библиотеку.
. Нажмите кнопку _Правка (Edit)_.
. Используйте предоставленное диалоговое окно для выбора соответствующей библиотеки, которая будет использоваться вместо встроенной.

Убедитесь, что выбранный файл действительно соответствует версии встроенного, иначе возможно непредвиденное поведение.

[[graphics]]
==== Графика (Graphics)

image::wine-config-3.png[]

Вкладка _Графика (Graphics)_ предоставляет несколько опций для обеспечения плавной работы окон программ, запущенных через WINE, в FreeBSD:

* Автоматический захват мыши при полноэкранном режиме окон.
* Разрешение оконному менеджеру FreeBSD оформлять окна, например, их заголовки, для программ, работающих через WINE.
* Разрешение оконному менеджеру управлять окнами программ, работающих через WINE, например, выполнение функций изменения их размера.
* Создать эмулированный виртуальный рабочий стол, в пределах которого будут запускаться все программы WINE. Если этот пункт выбран, размер виртуального рабочего стола можно указать с помощью полей ввода _Размер рабоче (Desktop size)го стола_.
* Установка разрешения экрана для программ, работающих через WINE.

[[desktop-integration]]
==== Интеграция с рабочим столом (Desktop Integration)

image::wine-config-4.png[]

Эта вкладка позволяет настроить следующие элементы:

* Тему и связанные визуальные настройки, используемые для программ, работающих через WINE.
* Должна ли подсистема WINE управлять типами MIME (используемыми для определения, какое приложение открывает файлы определённого типа) внутри себя.
* Сопоставление каталогов в основной системе FreeBSD с полезными папками в среде Windows(R). Чтобы изменить существующую ассоциацию, выберите нужный элемент и нажмите _Просмотреть (Browse)_, затем используйте предоставленный диалог для выбора каталога.

[[drives]]
==== Накопители (Drives)

image::wine-config-5.png[]

Вкладка _Накопители (Drives)_ позволяет связывать каталоги в основной системе FreeBSD с буквами дисков в среде Windows(R). Значения по умолчанию на этой вкладке должны выглядеть знакомо, так как они отображают содержимое [.filename]#dosdevices/# в текущем префиксе WINE. Изменения, сделанные через это диалоговое окно, отобразятся в [.filename]#dosdevices#, а правильно оформленные ссылки, созданные в этом каталоге, будут показаны на этой вкладке.

Чтобы создать новую запись, например, для CD-ROM (монтированного в [.filename]#/mnt/cdrom#), выполните следующие действия:

. Нажмите кнопку _Добавить (Add)_.
. В предоставленном диалоговом окне выберите свободную букву диска.
. Нажмите _OK_.
. Заполните поле ввода _Путь (Path)_, введя путь к ресурсу вручную или нажав _Просмотр (Browse)_ и выбрав его в открывшемся диалоговом окне.

По умолчанию WINE автоматически определяет тип связанного ресурса, но это можно переопределить вручную. Дополнительные сведения о расширенных настройках см. в https://wiki.winehq.org/Wine_User%27s_Guide#Drive_Settings[соответствующем разделе вики WINE].

[[audio]]
==== Звук (Audio)

image::wine-config-6.png[]

Эта вкладка содержит некоторые настраиваемые параметры для маршрутизации звука из программ Windows(R) в родную звуковую систему FreeBSD, включая:

* Выбор драйвера
* Выбор устройства по умолчанию
* Звуковой тест

[[about]]
==== О программе (About)

image::wine-config-7.png[]

Последняя вкладка содержит информацию о проекте WINE, включая ссылку на веб-сайт. Также она позволяет ввести (совершенно необязательные) пользовательские данные, хотя они никуда не отправляются, в отличие от других операционных систем.

[[wine-management-guis]]
== Графические программы для управления WINE

Хотя базовая установка WINE включает графический инструмент настройки `winecfg`, его основное назначение строго ограничивается конфигурацией существующего префикса WINE. Однако существуют более продвинутые приложения, которые помогают не только в первоначальной установке программ, но и в оптимизации их окружения WINE. В следующих разделах представлен выбор наиболее популярных из них.

[[winetricks]]
=== Winetricks

Инструмент `winetricks` — это кроссплатформенная вспомогательная программа общего назначения для WINE. Он разрабатывается не самим проектом WINE, а поддерживается группой участников на https://github.com/Winetricks/winetricks[GitHub]. `winetricks` содержит автоматизированные "рецепты" для запуска распространённых приложений в WINE, включая оптимизацию настроек и автоматическую загрузку некоторых DLL-библиотек.

[[installing-winetricks]]
==== Установка winetricks

Для установки `winetricks` в FreeBSD с использованием бинарных пакетов выполните следующие команды (обратите внимание, что `winetricks` требует наличия пакета i386-wine или i386-wine-devel и поэтому не устанавливается автоматически с другими зависимостями):

[source, shell]
....
# pkg install i386-wine winetricks
....

Чтобы скомпилировать его из исходного кода, выполните следующую команду в терминале:

[source, shell]
....
# cd /usr/ports/emulators/i386-wine
# make install
# cd /usr/ports/emulators/winetricks
# make install
....

Если требуется ручная установка, обратитесь к https://github.com/Winetricks/winetricks[аккаунту на Github] для получения инструкций.

[[using-winetricks]]
==== Использование winetricks

Выполните `winetricks` следующей командой:

[source, shell]
....
% winetricks
....

Примечание: для запуска `winetricks` требуется 32-битный префикс. При запуске `winetricks` отображается окно с несколькими вариантами выбора, как показано ниже:

image::winetricks-run-1.png[]

Выбор любого из пунктов _Установить приложение_, _Установить тест производительности_ или _Установить игру_ отображает список доступных вариантов, например, такой как показанный ниже список приложений:

image::winetricks-run-2.png[]

Выбор одного или нескольких элементов и нажатие _OK_ запустит процесс(ы) их установки. Вначале могут появиться сообщения, которые выглядят как ошибки, но на самом деле это информационные предупреждения, так как `winetricks` настраивает среду WINE для обхода известных проблем приложения:

image::winetricks-app-install-1.png[]

После обхода этих препятствий будет запущен настоящий установщик приложения:

image::winetricks-app-install-2.png[]

После завершения установки новое приложение Windows должно быть доступно в стандартном меню среды рабочего стола (как показано на скриншоте ниже для среды рабочего стола LXQT):

image::winetricks-menu-1.png[]

Чтобы удалить приложение, снова запустите `winetricks` и выберите _Запустить удаление инсталляции (Run an uninstaller)_.

image::winetricks-uninstall-1.png[]

Появится диалоговое окно в стиле Windows(R) со списком установленных программ и компонентов. Выберите приложение для удаления и нажмите кнопку _Изменить/Удалить (Modify/Remove)_.

image::winetricks-uninstall-2.png[]

Это запустит встроенный установщик приложения, который также должен иметь возможность удаления.

image::winetricks-uninstall-3.png[]

[[homura]]
=== Mizutamari

https://codeberg.org/Alexander88207/Mizutamari[Mizutamari] — это приложение, похожее на `winetricks`, хотя вдохновлено игровой системой https://lutris.net/[Lutris] для Linux. Однако, в отличие от неё, Mizutamari ориентировано не только на игры: через него также можно установить и приложения неигрового характера.

[[installing-homura]]
==== Установка Mizutamari

Для установки бинарного пакета Mizutamari выполните следующую команду:

[source, shell]
....
# pkg install mizuma
....

Mizutamari доступен в системе портов FreeBSD. Однако вместо поиска в разделе _emulators_ портов или двоичных пакетов ищите его в разделе _games_.

[source, shell]
....
# cd /usr/ports/games/mizuma
# make install
....

[[using-homura]]
==== Использование Mizutamari

Использование Mizutamari очень похоже на использование `winetricks`. При первом запуске выполните его из командной строки (или с помощью апплета запуска окружения рабочего стола) командой:

[source, shell]
....
% Mizuma
....

Должно появиться дружественное приветственное сообщение. Нажмите _OK_ для продолжения.

image::homura-launch-1.png[]

Программа также предложит разместить ссылку в меню приложений совместимых сред:

image::homura-run-2.png[]

В зависимости от настройки машины FreeBSD, Mizutamari может отображать сообщение с рекомендацией установить родные графические драйверы.

image::homura-run-3.png[]

Затем должно появиться окно приложения, которое представляет собой «главное меню» со всеми его опциями. Многие пункты совпадают с `winetricks`, хотя Mizutamari предлагает некоторые дополнительные полезные опции, такие как открытие папки с данными (_Open Mizutamari Folder_) или запуск указанной программы (_Run a executable in prefix_).

image::homura-install-1.png[]

Чтобы выбрать одно из поддерживаемых приложений Mizutamari для установки, выберите _Установка_ и нажмите _OK_. Это отобразит список приложений, которые Homura может установить автоматически. Выберите нужное приложение и нажмите _OK_, чтобы начать процесс.

image::homura-install-2.png[]

В качестве первого шага Mizutamari загрузит выбранную программу. В поддерживаемых рабочих средах может появиться уведомление.

image::homura-install-3.png[]

Программа также создаст новый префикс для приложения. Появится стандартное диалоговое окно WINE с этим сообщением.

image::homura-install-4.png[]

Затем Mizutamari установит все необходимые зависимости для выбранной программы. Это может включать загрузку и распаковку значительного количества файлов, подробности чего будут отображаться в диалоговых окнах.

image::homura-install-5.png[]

Загруженные пакеты автоматически открываются и запускаются по мере необходимости.

image::homura-install-6.png[]

Установка может завершиться простым уведомлением на рабочем столе или сообщением в терминале, в зависимости от того, как был запущен Mizutamari. Однако в любом случае Mizutamari должен вернуться на главный экран. Чтобы подтвердить успешность установки, выберите _Launcher_ и нажмите _OK_.

image::homura-install-7.png[]

Это выведет список установленных приложений.

image::homura-install-8.png[]

Чтобы запустить новую программу, выберите её из списка и нажмите _OK_. Для удаления приложения выберите пункт _Удаление_ на главном экране, после чего отобразится аналогичный список. Выберите программу для удаления и нажмите _OK_.

image::homura-uninstall-1.png[]

[[running-multiple-management-guis]]
=== Запуск нескольких графических интерфейсов управления

Стоит отметить, что приведённые выше решения не являются взаимоисключающими. Вполне допустимо и даже выгодно иметь оба пакета установленными одновременно, так как они поддерживают разные наборы программ.

Однако разумно убедиться, что они не обращаются к одним и тем же префиксам WINE. Каждое из этих решений применяет обходные пути и вносит изменения в реестры на основе известных исправлений существующих проблем WINE, чтобы обеспечить бесперебойную работу конкретного приложения. Если разрешить и `winetricks`, и Homura доступ к одному и тому же префиксу, это может привести к перезаписи некоторых из этих изменений, в результате чего некоторые или все приложения не будут работать должным образом.

[[wine-in-multi-user-os-installations]]
== WINE в многопользовательских установках FreeBSD

[[issues-with-using-a-common-wine-prefix]]
=== Проблемы при использовании общего префикса WINE

Как и большинство UNIX(R)-подобных операционных систем, FreeBSD разработана для одновременной работы нескольких пользователей. С другой стороны, Windows(R) является многопользовательской в том смысле, что в системе может быть создано несколько учётных записей. Однако предполагается, что физический компьютер (настольный или портативный ПК) в любой момент времени будет использовать только один пользователь.

Более новые несерверные версии Windows(R) предприняли некоторые шаги для улучшения ОС в сценариях с несколькими пользователями. Однако система по-прежнему в основном ориентирована на однопользовательскую работу. Более того, меры, принятые проектом WINE для создания совместимой среды, означают, что, в отличие от приложений FreeBSD (включая сам WINE), она будет напоминать эту однопользовательскую среду.

Следовательно, каждый пользователь должен будет поддерживать свой собственный набор конфигураций, что потенциально хорошо. Однако выгодно устанавливать приложения, особенно крупные, такие как офисные пакеты или игры, только один раз. Две причины для этого: обслуживание (обновления ПО нужно применять только один раз) и эффективность использования хранилища (отсутствие дублирования файлов).

Существует две стратегии для минимизации влияния множества пользователей WINE в системе.

[[installing-applications-to-a-common-drivesettings]]
=== Установка приложений на общий диск

Как показано в разделе о настройке WINE, WINE предоставляет возможность подключения дополнительных дисков к заданному префиксу. Таким образом, приложения можно устанавливать в общее место, в то время как у каждого пользователя останется префикс, где могут храниться индивидуальные настройки (в зависимости от программы). Это хорошая конфигурация, если нужно использовать совместно между пользователями относительно немного приложений, и это программы, которые требуют минимальных изменений в префиксе для работы.

Необходимо сделать следующие шаги для установки приложений таким способом:

. Сначала настройте общее место в системе, где будут храниться файлы, например, [.filename]#/mnt/windows-drive_d/#. Создание новых каталогов описано в руководстве man:mkdir[1].
. Далее установите разрешения для этого нового каталога, чтобы разрешить доступ только нужным пользователям. Один из подходов — создать новую группу, например, "windows", добавить нужных пользователей в эту группу (см. подраздел о группах в разделе crossref:basics[users-groups,Пользователи и основы управления учётными записями]) и установить разрешения для каталога в `770` (раздел crossref:basics[permissions,Разрешения] описывает этот процесс).
. Наконец, добавьте выбранное расположение как диск в префикс пользователя с помощью `winecfg`, как описано в разделе выше о настройке WINE в этой главе.

По завершении приложения могут быть установлены в этом расположении и затем запущены с использованием назначенной буквы диска (или стандартного пути к каталогу в стиле UNIX(R)). Однако, как упоминалось выше, только один пользователь должен запускать эти приложения (которые могут обращаться к файлам в их каталоге установки) одновременно. Некоторые приложения также могут демонстрировать неожиданное поведение при запуске пользователем, который не является владельцем, несмотря на то что он входит в группу, которая должна иметь полные права "чтения/записи/исполнения" для всего каталога.

[[using-a-common-installation-of-wine]]
=== Использование общей установки WINE

С другой стороны, если требуется совместное использование множества приложений или они нуждаются в особой настройке для корректной работы, может потребоваться другой подход. В этом методе создается отдельный пользователь исключительно для хранения префикса WINE и всех установленных приложений. Затем отдельным пользователям предоставляется право запускать программы от имени этого пользователя с помощью команды man:sudo[8]. В результате эти пользователи могут запускать приложения WINE как обычно, но они будут работать так, как если бы их запустил вновь созданный пользователь, и, следовательно, использовать централизованно поддерживаемый префикс, содержащий настройки и программы. Для реализации этого выполните следующие действия:

Создайте нового пользователя следующей командой (от имени `root`), которая выполнит все необходимые шаги:

[source, shell]
....
# adduser
....

Введите имя пользователя (например, _windows_) и полное имя ("Microsoft Windows"). Затем примите значения по умолчанию для оставшихся вопросов. Далее установите утилиту `sudo` из бинарных пакетов с помощью следующей команды:

[source, shell]
....
# pkg install sudo
....

После установки отредактируйте файл [.filename]#/etc/sudoers# следующим образом:

[.programlisting]
....
# 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_, могут запускать приложения WINE и `winecfg` от имени пользователя _windows_. В качестве бонуса данная конфигурация означает, что им не потребуется вводить пароль пользователя _windows_.

Далее предоставьте доступ к дисплею пользователю _windows_, от имени которого будут запускаться программы WINE:

[source, shell]
....
% xhost +local:windows
....

Это следует добавить в список команд, выполняемых либо при входе в систему, либо при запуске графической среды по умолчанию. После завершения всех вышеуказанных действий пользователь, настроенный как один из `WINDOW_USERS` в [.filename]#sudoers#, может запускать программы с использованием общего префикса следующей командой:

[source, shell]
....
% sudo -u windows wine program.exe
....

Стоит отметить, что одновременный доступ нескольких пользователей к этой общей среде всё ещё сопряжён с рисками. Однако также учтите, что сама общая среда может содержать несколько префиксов. Таким образом, администратор может создать протестированный и проверенный набор программ, каждая со своим префиксом. В то же время один пользователь может играть в игру, а другой — работать с офисными программами без необходимости избыточной установки программного обеспечения.

[[wine-on-os-faq]]
== Часто задаваемые вопросы о WINE на FreeBSD

Следующий раздел описывает некоторые часто задаваемые вопросы, советы, хитрости или распространённые проблемы при запуске WINE в FreeBSD, а также соответствующие ответы на них.

[[basic-installation-and-usage]]
=== Базовая установка и использование

[[how-to-install-32-bit-and-64-bit-wine-on-the-same-system]]
==== Как установить 32-битный и 64-битный WINE в одной системе?

Как упоминалось ранее в этом разделе, пакеты wine и i386-wine конфликтуют друг с другом, поэтому их нельзя установить на одну систему обычным способом. Однако можно выполнить несколько установок, используя такие механизмы, как chroots/клетки, или собрав WINE из исходных кодов (обратите внимание, что это _не_ означает сборку порта).

[[can-dos-programs-be-run-on-wine]]
==== Можно ли запускать программы DOS в WINE?

Они могут работать как приложения с "Console User Interface", как упоминалось ранее в этом разделе. Однако существует, возможно, лучший способ запуска ПО для DOS: package:emulators/dosbox[DOSBox]. С другой стороны, нет причин хотя бы не попробовать. Просто создайте новый префикс, установите программное обеспечение, и если оно не заработает — удалите префикс.

[[should-the-wine-devel-packageport-be-installed-to-use-the-development-version-of-wine-instead-of-stable]]
==== Нужно ли устанавливать пакет package:emulators/wine-devel[] для использования версии WINE для разработчиков вместо стабильной?

Да, установка этой версии приведет к установке "разрабатываемой" версии WINE. Как и в случае с 32- и 64-разрядными версиями, их нельзя установить вместе со стабильными версиями без принятия дополнительных мер.

Обратите внимание, что у WINE также есть "Staging" версия, которая содержит самые последние обновления. Ранее она была доступна как порт FreeBSD, но затем была удалена. Тем не менее, её можно скомпилировать непосредственно из исходного кода.

[[install-optimization]]
=== Оптимизации установленного WINE

[[how-should-windows-hardware-graphics-drivers-be-handled]]
==== Что делать с драйверами Windows(R) (например, графическими)?

Драйверы операционной системы передают команды между приложениями и оборудованием. WINE эмулирует среду Windows(R), включая драйверы, которые, в свою очередь, используют собственные драйверы FreeBSD для этой передачи. Устанавливать драйверы Windows(R) не рекомендуется, так как система WINE предназначена для использования драйверов хостовой системы. Если, например, видеокарта требует специализированных драйверов, их следует устанавливать стандартными методами FreeBSD, а не установщиками Windows(R).

[[is-there-a-way-to-make-windows-fonts-look-better]]
==== Есть ли способ улучшить отображение шрифтов Windows(R)?

Пользователь на форумах FreeBSD предлагает следующую конфигурацию для исправления стандартного вида шрифтов в WINE, которые могут быть слегка пикселизированы.

Согласно https://forums.freebsd.org/threads/make-wine-ui-fonts-look-good.68273/[сообщению на FreeBSD Forums], добавление следующего в [.filename]#.config/fontconfig/fonts.conf# включит сглаживание и улучшит читаемость текста.

[.programlisting]
....
<?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>
....


[[does-having-windows-installed-elsewhere-on-a-system-help-wine-operate]]
==== Помогает ли наличие Windows(R), установленной в другом месте системы, работе WINE?

В зависимости от запускаемого приложения это возможно. Как упоминалось в разделе, описывающем `winecfg`, некоторые встроенные DLL WINE и другие библиотеки могут быть заменены указанием пути к альтернативной версии. При условии, что раздел или диск Windows(R) подключен к системе FreeBSD и доступен пользователю, настройка некоторых из этих переопределений будет использовать родные библиотеки Windows(R), что может снизить вероятность неожиданного поведения.

[[application-specific]]
=== Зависимые от программы

[[where-is-the-best-place-to-see-if-application-x-works-on-wine]]
==== Где лучше всего проверить, работает ли приложение X в WINE?

Первым шагом в определении совместимости должен быть https://appdb.winehq.org/[WINE AppDB]. Это сборник отчётов о работе (или неработоспособности) программ на всех поддерживаемых платформах, хотя (как упоминалось ранее) решения для одной платформы часто применимы и к другим.

[[is-there-anything-that-will-help-games-run-better]]
==== Есть ли что-то, что поможет играм работать лучше?

Возможно. Многие игры для Windows(R) зависят от DirectX, проприетарного графического слоя Microsoft. Однако в сообществе открытого исходного кода существуют проекты, направленные на реализацию поддержки этой технологии.

Проект _dxvk_, представляющий собой попытку реализации DirectX с использованием совместимой с FreeBSD графической подсистемы Vulkan, является одним из таких. Хотя его основная цель — WINE на Linux, https://forums.freebsd.org/threads/what-about-gaming-on-freebsd.723/page-9[некоторые пользователи FreeBSD сообщают] о компиляции и использовании dxvk.

В дополнение, ведётся работа над портом https://www.freshports.org/emulators/wine-proton/[wine-proton]. Это позволит использовать наработки Valve, разработчика игровой платформы Steam, в FreeBSD. Proton — это дистрибутив WINE, предназначенный для запуска многих игр под Windows(R) на других операционных системах с минимальными настройками.

[[is-there-anywhere-freebsd-wine-users-gather-to-exchange-tips-and-tricks]]
==== Есть ли место, где пользователи FreeBSD WINE собираются для обмена советами и хитростями?

Существует множество мест, где пользователи FreeBSD обсуждают вопросы, связанные с WINE, и где можно поискать решения:

* https://forums.freebsd.org/[Форумы FreeBSD], в частности разделы _Установка и обслуживание портов или пакетов_ и _Эмуляция и виртуализация_.
* https://wiki.freebsd.org/IRC/Channels[Каналы FreeBSD в IRC], включая #freebsd (для общих вопросов поддержки), #freebsd-games и другие.
* https://discord.gg/2CCuhCt[Discord-сервер BSD World] с каналами, такими как _bsd-desktop_, _bsd-gaming_, _bsd-wine_ и другими.

[[other-os-resources]]
=== Ресурсы других ОС

Существует множество ресурсов, посвящённых другим операционным системам, которые могут быть полезны пользователям FreeBSD:

* https://wiki.winehq.org/[Вики WINE] содержит множество информации об использовании WINE, большая часть которой применима во многих поддерживаемых WINE операционных системах.
* Аналогично, документация других проектов операционных систем также может быть полезной. https://wiki.archlinux.org/title/wine[Страница о WINE] в Arch Linux Wiki является особенно хорошим примером, хотя некоторые из «Сторонних приложений» (т.е. «вспомогательных приложений») очевидно недоступны в FreeBSD.
* Наконец, Codeweavers (разработчик коммерческой версии WINE) активно участвует в разработке основной версии. Часто ответы на вопросы в https://www.codeweavers.com/support/forums[их форуме поддержки] могут помочь в решении проблем с открытой версией WINE.
