Crossroads » WINE » Linux. Основы Wine

Linux. Основы Wine

  • Dislike
  • +1
  • Like
Linux. Основы WineWine — свободная реализация Win32 API, позволяющая пользователям UNIX-подобных операционных систем, например, Linux, macOS и других UNIX-подобных с поддержкой архитектур x86, AMD64 запускать 16-, 32- и 64- битные приложения, написанные исключительно под Windows. Так же существует реализация Wine под Windows, позволяющая запускать приложения, написанные для устаревших OS Windows (Windows 95 и т. п.) на современных версиях Windows.

Нередко разработчики используют библиотеки Wine при портировании приложений из Windows в UNIX-подобные операционные системы. Так большинство игр для Linux и MacOS, пришедшие в эти операционные системы из Windows, хотя и выглядят нативными для обычного пользователя, но работают, по большому счёту, под Wine.

В большинстве дистрибутивов Linux Wine либо уже установлен «из коробки», либо есть в официальных репозиториях. Но это не значит, что любое Windows приложение может быть запущено в Linux простым кликом по .exe файлу. Некоторые приложения, из-за особенности кода, сложных зависимостей и каких-либо сугубо юридических соображений просто не могут работать под Wine на текущий момент. Те, которые в принципе могут работать под Wine, нуждаются в дополнительной конфигурации Wine и установке зависимостей, таких как DirectX, Visual C++ и так далее.

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

Существует ряд решений, позволяющих пользователю устанавливать приложения Windows в Linux, не вникая в особенности Wine. Самые заметные из них это коммерческий CrossOver и бесплатный PlayOnLinux. Обе разработки так же есть и в MacOS, где последняя называется PlayOnMac. И то и другое решение от «стандартного» Wine отличается тем, что имеет базу совместимых с Wine приложений и позволяет установить их в несколько кликов со всеми зависимостями и индивидуальной конфигурацией. CrossOver использует при этом единственную модифицированную версию Wine, которая включает в себя патчи для лучшей совместимости того, или иного приложения. PlayOnLinux скачивает и распаковывает ту версию Wine, которая согласно их базе лучше подходит для определённого приложения, и устанавливает зависимости для этого приложения. Если приложение работает лучше с более старой версией Wine, то именно эта версия и будет использоваться для этого, отдельно взятого приложения. По большому счёту PlayOnLinux, в отличии от CrossOver с его патченной версией Wine, просто автоматизирует то, что можно сделать вручную.

И не всегда использование CrossOver или PlayOnLinux — лучший вариант. Бывают случаи, когда приложение не запускается на коммерческом CrossOver, но работает с последней версией «чистого» Wine. PlayOnLinux может запутаться в зависимостях и установить приложение не правильно. Или использовать при установке лучшую, на его взгляд версию Wine для отдельно взятого приложения. При этом в некоторых случаях лучшей является та, на которой это приложение ещё не тестировалось, а по сему в базе PlayOnLinux она не упоминается в связи с этим приложением.

Так или иначе, но использование того, или иного решения — вопрос предпочтений и конкретной задачи, стоящей пред пользователем. Если не учитывать тот факт, что годовая подписка на CrossOver обойдётся пользователю в 60 долларов, а пожизненная в 500. «Разовая» покупка в 40; при этом такой вариант не включает в себя поддержку и последующие обновления версии CrossOver. Если это — не проблема, то можно комбинировать решения, устанавливая что-то через «дефолтный» Wine, а что-то через CrossOver. Но стоит учесть тот факт, что в большинстве случаев можно обойтись без CrossOver и всегда можно обойтись без PlayOnLinux, так как всё, что они делают — это автоматизируют процесс, за исключением того, что CrossOver использует патченную версию Wine, которая доступна только в нём.

Рассмотрим тот вариант, который не требует финансовых затрат. Неопытному пользователю всё это может показаться очень сложным, но на самом деле всё очень просто и слово «вручную» в данном случае не подразумевает полного отсутствия автоматизации.

Так как в большинстве случаев Wine используется именно для запуска игр, то мы будем использовать не «голый» Wine, а Wine-Staging — патченную версию Wine, включающую в себя ряд патчей, не вошедших пока в основную ветку Wine, например поддержка Direct3D 10/11. Но если вы не планируете запускать игры и боитесь словосочетаний типа «экспериментальная версия» и «тестирование компонентов», то можете установить стандартную версию Wine. Убедиться в том, что приложение способно работать под Wine можно на официальном сайте Wine, в соответствующем разделе. Просто введите в поиск название программы, которую хотите запустить. Рейтинг «Gold» означает, что приложение может быть запущено без видимых багов и потери производительности. Там же будет указана версия Wine, на которой тестировалось приложение и версия самого приложения.

Найдите в репозитории своего дистрибутива wine-staging (или wine) и установите этот пакет. Так же нам потребуются 32-х битные версии установленных в систему библиотек для запуска 32-х битных приложений. В Arch / Manjaro pacman выдаст список после установки wine. В Debian / Ubuntu (особенно в Ubuntu) они скорее всего будут установлены в виде зависимостей. Если в Ubuntu вы хотите более свежую версию Wine, то адреса репозиториев можно найти на официальном сайте проекта. В других популярных дистрибутивах тоже проблем с установкой возникнуть не должно.

Также ищем и устанавливаем пакет «winetricks», который в дальнейшем поможет нам автоматизировать установку компонентов типа DirectX, путём ввода простой команды, не скачивая и устанавливая их вручную.

После того, как Wine установлен, нам нужно сконфигурировать «префикс». Префикс — это то место, где Wine хранит свои настройки и куда обращается при запуске Windows-приложений и их зависимостей. Там же будет храниться папка «drive_c», которая является корнем для Windows-приложений (диск C). Настройки Wine, а так же Windows-библиотеки для каждого префикса могут (и должны) быть индивидуальными.

При установке Wine скорее всего уже был создан префикс «по умолчанию» по адресу ~/.wine с архитектурой вашей ОС. В подавляющем большинстве случаев это x64. Но использовать один префикс для всех приложений не рекомендуется, так как для большинства из них настроек «по умолчанию» не достаточно. Создаём новый префикс:

WINEPREFIX=/path_to_my_prefix/name_of_may_prefix WINEARCH="win32" winecfg

Где «/path_to_my_prefix/name_of_may_prefix» - путь к вашему префиксу (Например ~/WindowsApp), "win32" — архитектура префикса (если у вас 32-х битная ОС, то параметр «WINEARCH=» можно не указывать. Если современная ОС и нужен 64-х битный префикс, то данный параметр тоже не нужен, так как по умолчанию будет создан 64-х битный префикс), «winecfg» - команда, которая откроет окно с конфигурацией Wine, где вы можете изменить настройки Wine. Вы можете закрыть его, оставив всё в состоянии «по умолчанию» и в любой момент вернуться к этим настройкам, набрав в терминале команду «winecfg» (без кавычек, с нужным префиксомю Например: WINEPREFIX=~/WindowsApp winecfg). Префикс не должен содержать пробелов и не латинских символов.

Пример команды, которая создаст 32-х битный префикс «WindowsApp» в 64-х битрой ОС:
WINEPREFIX=~/WindowsApp WINEARCH="win32"


В вашей корневой директории (/home/user) будет создана папка «WindowsApp», которая и будет префиксом Wine, включающим в себя настройки Wine для этого конкретного префикса и всё, что там должно находиться.

Если для работы приложения (или приложений) в этом префиксе требуется установка дополнительных Windows-зависимостей, то используем winetricks. Пример:
winetricks prefix=~/WindowsApp vcrun2008


Данная команда скачает и установит в префикс «WindowsApp» Microsoft Visual C++ 2008. То есть winetricks поможет автоматизировать установку Windows-зависимостей. Но их всегда можно установить «по-старинке», скачав с сайта Microsoft и установив в префикс тем же способом, что и обычные приложения. Нередко сам установщик приложения уже содержит и предлагает установить все необходимые компоненты.

Если используется локальная (не системная) версия Wine, то при использовании Winetricks необходим параметр «WINE=» указывающий на путь к бинарникам Wine, тогда как при запуске программ с использованием локальной версии Wine этот параметр не нужен. Это важно, так как часто вызывает путаницу у тех, кто мало знаком с Wine. Пример:
WINEPREFIX=~/WindowsApp WINE=/home/user/.PlayOnLinux/wine/linux-amd64/3.2-staging/bin/wine winetricks d3dx9


Для установки приложения в наш префикс нужно выполнить следующее:
WINEPREFIX=~/WindowsApp wine ~/Downloads/setup.exe


Где «WINEPREFIX=~/WindowsApp» - указание на наш префикс, «wine» - команда, которая говорит системе, что файл должен быть запущен через Wine и «~/Downloads/setup.exe», путь к файлу «setup.exe», который только что был скачен и лежит в папке «Downloads».

Предположим, мы установили некое приложение, которое называется «App #1» и запускается через загрузчик, который называется «run.exe». Установлено оно «по умолчанию» в «Program Files». Для запуска этого приложения в нашем префиксе нужно выполнить следующую команду:
WINEPREFIX=~/WindowsApp wine "/home/user/WindowsApp/drive_c/Program Files/App #1/run.exe"


Используются кавычки, так как в пути есть пробелы. Они всегда будут, если устанавливать программы в каталоги «по умолчанию». «user» - имя вашего пользователя а Linux.

Для того, чтобы не вводить команду в терминале при каждом запуске приложения, можно написать маленький bash-скрипт и запускать через него, либо с ярлыка на рабочем столе для этого скрипта. Например: Создайте файл «MyApp.sh» в любом удобном месте со следующим содержанием:
#! /bin/bash
WINEPREFIX=~/WindowsApp wine "/home/user/WindowsApp/drive_c/Program Files/App #1/run.exe"


И сделайте его исполняемым.

Таким образом можно использовать системный Wine с произвольными префиксами.

В Linux нельзя поставить одновременно несколько версий Wine, так как «системной» может быть только одна версия. Но никто не запрещает на ряду с системной версией иметь несколько «локальных». Процедура сборки Wine из исходников описана на официальном сайте проекта. Но в целях облегчения жизни можно воспользоваться готовыми бинарниками, скачав их через PlayOnLinux или Lutris.

Установите PlayOnLinux из репозитория вашего дистрибутива и во вкладке «Tools» перейдите в «управление версиями Wine» (Manage Wine versions). Через это меню можно скачать бинарники любой доступной версии Wine. По умолчанию они будут расположены в директории ~/.PlayOnLinux/wine, готовые к использованию. Просто вместо команды «wine» при запуске программ и при использовании «winetricks» используйте полный путь до бинарника нужной версии Wine. Например:
WINEPREFIX=~/WindowsApp  "/home/user/WindowsApp/drive_c/Program Files/App #1/run.exe"


В этом случае App #1 запущена не через системный Wine, а через 64х-битную 3.2 staging версию Wine, скаченную через PlayOnLinux. Соответственно и само приложение нужно было устанавливать с учётом архитектуры и версии Wine.

То же самое и в случае с Lutris. Lutris сам по себе достаточно интересен и заслуживает отдельного обзора, но поскольку сейчас речь идёт о "ручном" использовании Wine, мы ограничимся лишь сборками Wine от Lutris. Их множество и некоторые из них пропатчены для большей совместимости с отдельно взятой игрой. Lutris закачивает свои сборки Wine в ~/.local/share/lutris/runners/wine.

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

Для повышения производительности некоторых приложений в Wine можно запускать их с дополнительными параметрами, не представленными на текущий момент в UI, вызываемым командой winecfg. Например, в ряде игр есть поддержка OpenGL и в Linux они будут работать лучше и быстрее с OpenGL, нежели с DirectX. Для принудительного включения OpenGL добавьте в команду запуска приложения параметр -opengl. Будет выглядеть примерно так:
WINEPREFIX=~/WindowsApp wine "/home/user/WindowsApp/drive_c/Program Files/App #1/run.exe" -opengl


DXVK позволяет запускать приложения с поддержкой DirectX 10/11 через Vulkan, что так же увеличивает производительность. Ищите информацию о наличии этого пакета в репозиториях вашего дистрибутива. Для Arc / Manjaro пакет "dxvk-bin" есть в AUR. Для включения поддержки DXVK нужно выполнить следующее:
WINEPREFIX=~/WindowsApp setup_dxvk64


Эта команда включит поддержку DXVK для нашего префикса. Используйте "setup_dxvk32" для 32-х битных префиксов. Для отключения DXVK нужно воспользоваться командой "winecfg" и в UI, во вкладке "Libraries" (библиотеки) сбросить перезапись соответствующих DirectX библиотек. Вернуть их в состояние "builtin". Однако стоит учесть, что так как DXVK переписывает библиотеки (.dll) DirectX, в некоторых онлайн играх это может быть расценено как читерство, что чревато баном аккаунта. Перед включением данного параметра стоит поискать информацию на этот счёт, касательно игры, которую вы хотите запустить. Используйте этот параметр на свой страх и риск.

Таким образом можно установить любое Windows-приложение, которое в принципе может быть запущено в Wine. Без финансовых затрат и с большей степенью контроля.
Like Dislike

___
Tatyana K.



Tags: Linux, Wine


 
  • Creative Commons Licence
  • Norton Safeweb
  • Website Uptime Monitoring By ServiceUptime.com