Wine (Русский)

Wineслой совместимости, позволяющий запускать приложения Microsoft Windows в Unix-подобных операционных системах. Программы, запущенные в Wine, работают так же, как и "родные" — без потерь производительности и увеличения потребления памяти, характерных для эмуляторов.

Важно:
Состояние перевода: На этой странице представлен перевод статьи Wine. Дата последней синхронизации: 11 июля 2021. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Установка

Чтобы установить Wine, подключите репозиторий multilib и установите пакет wine (development-версия) или wine-staging (testing). Wine Staging — пропатченная версия Wine с исправлениями багов и некоторыми возможностями, которые ещё не были добавлены в stable- и development-версии. См. также #Графические драйвера и #Звук.

Если вы собираетесь запускать приложения, которые зависят от Internet Explorer и .NET, то имеет смысл также установить пакеты wine-gecko и wine-mono соответственно. Этот шаг не является обязательным, поскольку Wine может самостоятельно подгружать необходимые файлы по мере необходимости. Тем не менее, если скачать файлы заранее, то работать будет можно без подключения к сети, а Wine не придётся скачивать файлы каждый раз, когда они потребуются какому-нибудь префиксу.

Сторонние приложения

Перечисленные ниже приложения являются отдельными проектами, с собственными сообществами и веб-сайтами, и не поддерживаются основным сообществом Wine. Подробности можно найти в Wine Wiki.

  • Proton Иструмент совместимости для Steam на основе Wine и дополнительных компонентов. На странице ProtonDB можно найти список совместимости.
https://github.com/ValveSoftware/Proton || protonAUR
  • Bottles Графический менеджер префиксов и запуска программ для Wine на основе GTK.
https://usebottles.com/ || bottlesAUR

Настройка

Настройка Wine обычно выполняется следующими инструментами:

  • winecfg — графический настройщик Wine, запускается командой .
  • regedit — утилита Wine для редактирования реестра, запускается командой . См. статью Useful Registry Keys на сайте WineHQ.
  • control — реализация Панели управления Windows для Wine, запускается командой .
  • Полный список команд можно найти в статье List of Commands на WineHQ.

WINEPREFIX

По умолчанию Wine хранит файлы настроек и установленные программы Windows в каталоге . Этот каталог обычно называют "префикс Wine" или "бутылка Wine" (wine bottle - "бутылка вина"). Каталог создаётся/обновляется каждый раз, когда вы запускаете программу Windows или одну из связанных с Wine программ вроде winecfg. Каталог префикса содержит дерево, которое ваши программы будут видеть как диск .

С помощью переменной окружения можно задать произвольный каталог для префикса. Это удобно, если вы хотите использовать разные настройки для разных Windows-программ. Когда программа впервые запускается с новым префиксом, Wine автоматически создает каталог с чистым диском C и реестром.

Например, если вы запустите одну программу командой , а другую — командой , то у каждой программы будет отдельный диск С и отдельный реестр.

Чтобы создать нужный префикс без запуска Windows-программы или графического инструмента, выполните:

$ env WINEPREFIX=~/.префикс wineboot -u

WINEARCH

Wine по умолчанию запускает 64-битное окружение. Это поведение можно изменить переменной окружения WINEARCH. Переименуйте каталог и создайте новое окружение Wine командой . Это окружение будет 32-битным. Если переменная WINEARCH не указана, то создаётся 64-битное окружение.

WINEARCH можно совместить с , чтобы создать отдельные окружения для и :

$ WINEARCH=win32 WINEPREFIX=~/win32 winecfg
$ WINEPREFIX=~/win64 winecfg

Также WINEARCH можно совместить с другими программами Wine вроде winetricks (Steam взят для примера):

WINEARCH=win32 WINEPREFIX=~/.local/share/wineprefixes/steam winetricks steam

Узнать архитектуру существующего префикса можно в файле реестра. Следующая команда считывает системный реестр префикса и возвращает строку или в зависимости от типа архитектуры:

$ grep '#arch' ~/.wine/system.reg

Графические драйвера

Вам придётся установить 32-битную версию вашего графического драйвера. Выберите нужный пакет из столбца OpenGL (multilib) в таблице Xorg#Установка драйвера.

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

Direct rendering is disabled, most likely your OpenGL drivers have not been installed correctly

Звук

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

Установите необходимые вашему аудиодрайверу пакеты:

Дополнительные пакеты:

  • Играм, в которых используется продвинутая звуковая система (например, TESV: Skyrim), может потребоваться пакет .

Если winecfg по-прежнему не может обнаружить звуковой драйвер (Selected driver: (none)), настройте его через реестр. Например, если не работает микрофон в 32-битном приложении Windows на 64-битной базовой установке wine-1.9.7, получить полный доступ к звуковому аппаратному обеспечению можно следующим образом: откройте regedit, найдите HKEY_CURRENT_USER → Software → Wine → Drivers, добавьте строку с названием Audio и задайте ей значение alsa. Возможно, также поможет пересоздание префикса.

Поддержка MIDI

MIDI — довольно популярная музыкальная система видеоигр 90-х. Если вы пытаетесь запустить старую игру, то "из коробки" звук скорее всего работать не будет.

В Wine имеется отличная поддержка MIDI. Тем не менее, в первую очередь она должна работать на вашей хостовой системе, как объяснено в статье MIDI. Кроме того, убедитесь, что Wine использует правильный MIDI-разъём.

Прочие зависимости

Некоторым приложениям могут потребоваться дополнительные пакеты для различных целей:

  • Проигрывание музыки: .
  • "Родные" библиотеки обработки изображений: и .
  • Поддержка шифрования: .
  • 32-битные видеокодеки: , lib32-gst-plugins-good, и lib32-gst-plugins-uglyAUR.
  • NTLM-аутентификация: .

Шрифты

Если в приложении Wine шрифты отображаются неразборчиво, проблема может быть в том, что они просто не установлены. Вы можете настроить Wine, чтобы он использовал системные шрифты:

$ cd ${WINEPREFIX:-~/.wine}/drive_c/windows/Fonts && for i in /usr/share/fonts/**/*.{ttf,otf}; do ln -s "$i" ; done

Wine использует FreeType для построения шрифтов, и стандартные настройки FreeType изменились несколько релизов назад. Попробуйте использовать следующее окружение для Wine-программ:

FREETYPE_PROPERTIES="truetype:interpreter-version=35"

Можно также попробовать установить шрифты Microsoft (TrueType) в префикс Wine. Если это не поможет, попробуйте сначала выполнить , а затем, как крайнее средство, .

После выполнения этих команд "убейте" все запущенные сервера Wine и выполните . Шрифты должны быть доступны.

Если шрифты выглядат немного смазанными, импортируйте следующий текстовый файл в реестр Wine с помощью regedit:

Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Wine\X11 Driver]
"ClientSideWithRender"="N"

Для мониторов с высоким разрешением значения dpi можно задать в winecfg.

См. также Настройка шрифтов#Приложения без поддержки fontconfig.

Сглаживаение шрифтов

Хороший способ улучшить рендеринг шрифтов в Wine — включить сглаживание ClearType. Следующий скрипт включит режим "Subpixel smoothing (ClearType) RGB":

Подробнее см. оригинальный ответ.

Иконки рабочего стола

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

  • Ярлыки рабочего стола сохраняются в каталоге .
  • Ярлыки стартового меню сохраняются в каталоге ~/.local/share/applications/wine/Programs/.
Совет: Если пункты меню не создались во время установки или были случайно удалены, попробуйте команду wine winemenubuilder.

Пункты меню для утилит Wine

По умолчанию, при установке Wine пункты меню и иконки для относящихся к Wine программ (например, winecfg, winebrowser и т.д.) не создаются. Чтобы это исправить, установите мета-пакет или (у последнего есть дополнительные зависимости) или следуйте инструкциям ниже.

Во-первых, установите любую программу Windows, чтобы Wine создал меню. Затем создайте файлы со следующим содержанием в каталоге :

После этого создайте следующий файл в каталоге :

wine.menu
<!DOCTYPE Menu PUBLIC "-//freedesktop//DTD Menu 1.0//EN"
"http://www.freedesktop.org/standards/menu-spec/menu-1.0.dtd">
<Menu>
  <Name>Applications</Name>
  <Menu>
    <Name>wine-wine</Name>
    <Directory>wine-wine.directory</Directory>
    <Include>
      <Category>Wine</Category>
    </Include>
  </Menu>
</Menu>

Если с этими настройками иконки выглядят уродливо (или не появились вовсе), то их нет среди доступных. Необходимо заменить настройки явным указанием расположения желаемых иконок. Того же можно добиться правым кликом по иконке и изменением настроек. Большой набор иконок для ярлыков можно найти в GNOME-colors.

Удаление пунктов меню

Созданные Wine пункты меню хранятся в каталоге ~/.local/share/applications/wine/Programs/. Если удалить соответствующий программе файл .desktop, то приложение исчезнет из меню.

Кроме того, чтобы удалить нежелательные расширения Wine, выполните следующие команды (источник — сайт Wine):

$ rm ~/.local/share/mime/packages/x-wine*
$ rm ~/.local/share/applications/wine-extension*
$ rm ~/.local/share/icons/hicolor/*/*/application-x-wine-extension*
$ rm ~/.local/share/mime/application/x-wine-extension*

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

Внешний вид

Оформление в стиле XP можно загрузить отсюда. Руководство по установке можно найти здесь. После установки выберите тему оформления в winecfg.

Пользователи Wine Staging могут вместо этого включить опцию Enable GTK3 Theming в разделе Staging winecfg. Будет выбрана текущая GTK-тема.

Печать

Чтобы использовать принтер (локальный или удалённый) с приложениями Wine в win32 prefixes (например, MS Word), установите пакет , перезагрузите Wine (wineboot) и перезапустите приложение.

Сеть

Для приложений, работающих через TLS или HTTPS, установите пакет lib32-gnutls.

Wine также могут потребоваться специальные разрешения (capability) на доступ к сети по протоколу ICMP (пинги) (см. WineHQ FAQ):

# setcap cap_net_raw+epi /usr/bin/wine-preloader

Если после этого возникают проблемы (например, при обработке исключений или привилегированных команд), для удаления capability выполните:

# setcap -r /usr/bin/wine-preloader

Использование

Общую информацию об использовании Wine можно найти на странице Wine User's Guide.

Запуск конкретных приложений Windows в Wine описан на странице Wine Application Database (AppDB).

Wayland

В настоящее время Wine не поддерживает Wayland напрямую, но вы можете использовать XWayland.

Некоторые попытки реализовать поддержку Wayland:

  • Экспериментальный драйвер Wayland для Wine, который поддерживает работу OpenGL- и Windows GDI-приложений. См. это и это сообщения почтовой рассылки wine-devel.
  • wine-wayland: альтернативная сборка Wine с поддержкой Wayland посредством Vulkan (работает с DirectX 9, 10 и 11 (через #DXVK) и с Vulkan-совместимыми приложениями).

Советы и рекомендации

Wineconsole

Часто появляется необходимость запустить .exe-файл, чтобы пропатчить файлы игры, например, добавить поддержку широкоформатного экрана в старую игру. Запуск .exe-файла в Wine обычным способом ни к чему не приведёт. В этом случае откройте терминал и выполните:

$ wineconsole cmd

Затем перейдите в каталог с .exe-файлом и запустите его.

Winetricks

Winetricks — скрипт, помогающий установить базовые зависимости, необходимые программам Windows. Устанавливаются DirectX 9.x, MSXML (для Microsoft Office 2007 и Internet Explorer), библиотеки Visual Runtime и многое другое.

Установите пакет или , после чего выполните:

$ winetricks

Графический интерфейс можно установить с пакетом .

CSMT

CSMT — технология Wine, использующая отдельный поток для вызовов OpenGL, что значительно повышает производительность. Начиная с Wine 3.2 CSMT по умолчанию включён. Для более ранних версий Wine его необходимо включить вручную. Для "ванильного" Wine запустите и задайте DWORD-значение 0x01 (включено) для HKEY_CURRENT_USER -> Software > Wine > Direct3D > csmt. Для Wine Staging выполните и включите CSMT на вкладке Staging.

Имейте в виду, что для некоторых приложений CSMT может привести к обратному эффекту — к снижению производительности. В этом случае отключите его вручную, создав/изменив значение в реестре на 0x00 (отключено).

Подробная информация:

Режим OpenGL в играх

В некоторых играх есть поддержка OpenGL, который может работать лучше, чем стандартный DirectX. Хотя способ включения OpenGL варьируется от приложения к приложению, многие игры используют флаг -opengl:

$ wine /путь/к/3d_игре.exe -opengl

Разумеется, перед запуском приложения в этом режиме необходимо тщательно изучить его документацию и информацию из базы данных Wine AppDB.

DXVK

DXVK — новая многообещающая реализация DirectX версий 9, 10 и 11 поверх Vulkan. Значительно повышает производительность и в некоторых случаях обеспечивает даже лучшую совместимость. Battlefield 1, например, работает только под DXVK. С другой стороны, на данный момент DXVK поддерживает не все игры Wine.

Чтобы использовать DXVK, установите пакет . Команда ниже активирует его для указанного префикса (по умолчанию ):

$ WINEPREFIX=префикс setup_dxvk install

Gallium Nine

Для открытых драйверов на основе Gallium (в основном карты AMD) существует проект трекера состояний Gallium Direct3D, который ставит целью добиться производительноси, сравнимой с нативными показателями DirectX 9. В большинстве случаев выдаёт вдвое большую производительность, чем стандартный Wine, и меньшее количество визуальных помех. Потреблене времени центрального процессора значительно ниже по сравнению с CSMT.

Чтобы его использовать, установите пакет . Это одиночный пакет, подходящий для любой версии Wine. Команда позволяет проверить, включён Gallium Nine или нет.

Удаление ненужных файловых ассоциаций

Wine используется как приложение по умолчанию для большого количества форматов файлов. Некоторые из них, например, vbs или , являются специфичными для Windows, и такая привязка вполне логична. С другой стороны, довольно неприятно, когда файл , , txt или открывается в запущенном в Wine браузере Internet Explorer или редакторе Notepad.

Ассоциации Wine хранятся в каталоге в виде файлов . Удалите те из них, которые не нужны, либо удалите все расширения Wine:

$ rm -f ~/.local/share/applications/wine-extension*.desktop
$ rm -f ~/.local/share/icons/hicolor/*/*/application-x-wine-extension*

После этого очистите кэш:

$ rm -f ~/.local/share/applications/mimeinfo.cache
$ rm -f ~/.local/share/mime/packages/x-wine*
$ rm -f ~/.local/share/mime/application/x-wine-extension*

И обновите его:

$ update-desktop-database ~/.local/share/applications
$ update-mime-database ~/.local/share/mime/

В качестве альтернативы можно удалить все файлы, относящиеся к Wine:

$ find ~/.local/share -name "*wine*" | xargs -I '{}' --no-run-if-empty rm -r '{}'

После этого тоже обновите кэш, как показано выше.

Имейте в виду, что Wine может создать новые ассоциации и даже пересоздать удалённые, если того потребует какое-нибудь приложение.

Запрет на создание файловых ассоциаций

Данный метод предотвращает создание файловых ассоциаций, но оставляет возможность для создания XDG-файлов .desktop (которые вы видите, например, в меню).

Если вы хотите запретить Wine создавать файловые ассоциации, запустите winecfg и уберите галочку "Manage File Associations" на вкладке Desktop Integration. Подробнее см. Wine FAQ.

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

HKEY_CURRENT_USER\Software\Wine\FileOpenAssociations

Сначала необходимо создать ключ !

Если вы хотите, чтобы эти настройки автоматически применялись к новым префиксам, отредактируйте файл /usr/share/wine/wine.inf, добавив следующую строку в раздел :

HKCU,"Software\Wine\FileOpenAssociations","Enable",2,"N"

Предотвратить перезапись изменённых файлов при обновлении пакета можно создав хук pacman, который будет вносить изменения автоматически:

/etc/pacman.d/hooks/stop-wine-associations.hook
[Trigger]
Operation = Install
Operation = Upgrade
Type = Path
Target = usr/share/wine/wine.inf

[Action]
Description = Stopping Wine from hijacking file associations...
When = PostTransaction
Exec = /bin/sh -c '/usr/bin/grep -q "HKCU,\"Software\\\Wine\\\FileOpenAssociations\",\"Enable\",2,\"N\"" /usr/share/wine/wine.inf || /usr/bin/sed -i "s/\[Services\]/\[Services\]\nHKCU,\"Software\\\Wine\\\FileOpenAssociations\",\"Enable\",2,\"N\"/g" /usr/share/wine/wine.inf'

Подробнее см. pacman#Хуки

Неявный запуск бинарников Windows

Пакет содержит файл binfmt, который позволяет запускать программы Windows напрямую. Например, команда будет запускать программу так же, как . Соответствующая системная служба запускается автоматически при старте системы. Если вы ещё не перезагружались после установки Wine, то можете вручную запустить службу , чтобы она заработала.

Два монитора с разными разрешениями

Если у вас возникли проблемы с разрешением экрана на втором мониторе, возможно, в системе отсутствует пакет .

Кроме того, установка пакета поможет решить некоторые другие проблемы работы с двумя мониторами в Wine: ненажимаемые иконки и пункты меню, плохая отрисовка интерфейса приложения, зависание курсора мыши и т.п.

Прожиг оптического носителя

Для прожига CD- и DVD-дисков необходимо загрузить модуль ядра .

Монтирование образов оптических дисков

Приложения могут проверять наличие оптического диска в дисководе. Иногда это просто проверка присутствия данных, и в этом случае будет достаточно с помощью winecfg настроить определённый путь в файловой системе выступать в качестве привода CD-ROM. Другие приложения могут проверять название носителя и/или серийный номер, и в этом случае потребуется смонтировать соответствующий образ.

Некоторые утилиты для работы с виртуальными дисками, в том числе основанные на fuse, не умеют работать с такими метаданными — например, Acetoneiso. CDEmu, наоборот, работает вполне корректно.

Показ FPS в играх

Wine отслеживает FPS графических приложений, если установлена переменная окружения WINEDEBUG=fps. Количество кадров будет выводиться в stdout. Утилита из пакета позволяет отобразить FPS в верхней части экрана поверх окна приложения. См также вспомогательный скрипт.

Отдельная учётная запись для запуска Wine

Поскольку приложения Windows имеют доступ к вашей домашней директории, имеет смысл создать отдельную учётную запись для работы только с Wine.

Первым делом создайте саму учётную запись:

# useradd -m -s /bin/bash wineuser

Затем переключитесь в другую виртуальную консоль и запустите оконный менеджер или окружение рабочего стола (или прото читайте дальше)...

Примечание: Описанный подход работает только в Xorg с доступом к root. Подробнее о запуске команды xhost от обычного пользователя см. Xorg#Использование Xorg без прав суперпользователя.

Чтобы теперь запускать Wine от новой учётной записи, необходимо добавить её в список разрешений X server:

$ xhost +SI:localuser:wineuser

Наконец, можно запускать Wine, передав ему с помощью необходимые переменные окружения:

$ sudo -u wineuser env HOME=/home/wineuser USER=wineuser USERNAME=wineuser LOGNAME=wineuser wine аргументы

Процесс запуска приложений Windows в Wine можно автоматизировать с помощью скрипта:

Теперь приложение Wine запустится следующей командой:

$ runaswine "C:\путь\к\приложению.exe"

Чтобы не вводить пароль каждый раз при запуске Wine, добавьте следующий пункт в файл : . Подробнее см. Sudo#Настройка.

Рекомендуется также запустить от пользователя Wine, и в окне настроек (раздел "Desktop Integration") убрать привязки ко всем каталогам за пределами домашнего. Так Wine будет иметь доступ только к нему и ни к чему более.

Правда, нужно иметь в виду, что при таком способе работы в приложениях, использующих PulseAudio, может перестать работать звук. В статье PulseAudio/Примеры#Одновременное использование PulseAudio несколькими пользователями описано, как дать пользователю Wine доступ к демону PulseAudio основного аккаунта.

Каталог Temp в tmpfs

По умолчанию Wine записывает временные файлы на физический носитель, но можно использовать для этого файловую систему tmpfs. Удалите текущий каталог для временных файлов и создайте символическую ссылку на новый:

$ rm -r ~/.wine/drive_c/users/$USER/Temp
$ ln -s /tmp/ ~/.wine/drive_c/users/$USER/Temp

Запрет на установку Mono/Gecko

Если Gecko и/или Mono нет ни в префиксе, ни в системе в целом, Wine будет запрашивать разрешение на скачивание их из сети. Если ни Gecko, ни Mono вам не нужны, то этот диалог можно отключить. Установите переменную окружения в значение .

Vulkan

В Wine 3.3 была добавлена поддержка Vulkan. Базовый ICD-загрузчик Vulkan в большинстве приложений работает вполне нормально, но в нём отсутствуют некоторые продвинутые возможности вроде Vulkan layers. Чтобы получить к ним доступ, установите официальный Vulkan SDK (см. шаг 2-4 на GitHub-странице автора патча).

Удаление файловых привязок

По соображениям безопасности полезно удалить предустановленные привязки Wine, чтобы приложения Windows не могли быть запущены напрямую из файлового менеджера или браузера (Firefox предлагает открыть EXE-файлы сразу в Wine!).

Чтобы это сделать, добавьте следующие строки в раздел [options] файла :

NoExtract = usr/lib/binfmt.d/wine.conf
NoExtract = usr/share/applications/wine.desktop

Решение проблем

Общие советы по решению возможных проблем можно найти на страницах Wine User's Guide и Wine FAQ (прежде всего в разделе Решение проблем).

Советы для конкретных приложений можно найти в Wine AppDB.

Проблемы с XWayland

Если вы используете Wine в XWayland, опция "Эмуляция виртуального рабочего стола" на вкладке Graphics в winecfg позволяет решить следующие проблемы:

  • мерцание;
  • неправильное положение окна;
  • неправильное положение курсора мыши и реакция на клики;
  • обнаружение клавиатуры.

Смотрите также

  • Wine Homepage
  • Wine Wiki
  • Wine Application Database (AppDB) — Информация о запуске конкретных приложений Windows (известные проблемы, рейтинги, руководства и т.п.).
  • Wine Forums — Здесь можно задавать вопросы, но только после прочтения FAQ и AppDB.
  • Gentoo:Wine
  • Darling — аналогичный проект для программ MacOS
gollark: Personally, I think traditions are bad, unless they're good.
gollark: Compromise solution: every year we elect a random penguin which owns America but is not allowed to exercise this power in any way.
gollark: The number is from Wikipedia, which says that 600000 of those are people who are already there and who are granted legal status.
gollark: Immigration to America is a million a year, which is, what, 0.3% of the population.
gollark: The debate has been framed as "keep the existing very broken system" or "have the government pay for it all".
This article is issued from Archlinux. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.