Как запустить приложение windows в wine

Привет, хабр!

Моя текущая статья будет посвящена работе с полезной утилитой в Unix-подобных ОС как Wine. 

Почему я вообще делаю ещё одну статью по работе с Wine, если их и так есть уже очень много? Если в кратце, меня очень расстраивает их качество.

У большинства материалов по Wine нет практической части, очень многое опускается. В них не рассказывается как запускать подавляющее большинство программ, в них просто показывают как запустить простенький EXE из Windows и на этом всё. 

Почему это плохо — практически все программы, которые были мною запущены на Wine, требовали ручной доработки среды, иначе не запускалось ничего. Или запускалось, но с огромными проблемами, такие как вылеты, “непрогрузы” UI/UX, лаги, баги и многое другое.

В данной статье речь пойдёт про все эти аспекты работы с программой. В основном будет затронут оригинальный, консольный Wine от WineHQ и скрипт, который позволяет скачивать зависимости — Winetricks, но я также затрону такие графические программы как: Bottle и Lutris, упомяну PortProton(portwein, Linux Gaming).

Я не вижу смысла затрагивать такие программы как PlayOnLinux или CrossOver, так как они уже, можно сказать, устарели.

Что такое Wine

Начну я своё статью с того, а что вообще такое Wine.

Wine — это OpenSource программа, которая позволяет запускать Windows Софт на Unix-подобных ОС(Linux, BSD, macOS и тд), благодаря подмене API системы на таковую из Windows.

Отсюда и следует его полное название, которое является акронимом — Wine Is Not an Emulator. 

Wine ничего не эмулирует, он транслирует код из одной среды, в другую. Это не эмуляция, как например в эмуляции консоли NES(misen) или GameCube(Dolphin Emulator). Он не воссоздаёт среду с нуля, как это делают эмуляторы, он предоставляет Windows API для программ, а сам транслирует(для картинки используется протокол от Xorg или XWayland для Wayland протокола) всё это на хост систему — Linux.

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

В нём есть CMD, реестр, файловый менеджер(х2), поддержка кастомных DLL-библиотек, IE(который на самом деле не InternetExplorer, а очень урезанный и переделанный Firefox) и многое другое. 

Установка Wine в Debian/Ubuntu

Вся статья будет проходить исключительно на debian-based системах, так как они более удобны с точки зрения нахождения всех нужных компонентов(поверьте, на арче найти всё для wine это та ещё задачка, что-то всё равно норовит отвалиться).

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

Для начала нужно обновить пакеты в системе. Введём:

sudo apt update

sudo apt upgrade -y

После того, как обновили пакеты, введём:

sudo dpkg --add-architecture i386

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

К огромному сожалению, без этого нормально настроить работу 32-битных приложений(игры в том числе) не получится. Если вы опустите этот шаг, то большинство приложений у вас работать не будут, так как они до сих пор 32-битные(огромное количество legacy-кода никто не обновляет на современные архитектуры, так как это очень трудозатратно. А ещё, некоторые 64-битные приложения требуют 32-битный библиотек, а они тоже не будут иначе работать).

В этом минус установки wine “нативно”, а не через wine-менеджеры, ибо они идут в flatpak вариантах(предпочтительная установка), которые не взаимодействуют своими пакетами с вашей системой.

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

sudo mkdir -pm755 /etc/apt/keyrings

После, загрузим ключ и положим его в нашу созданную папку:

sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key

Далее, добавим файл репозитория в папку, где apt хранит свои репозитории:

sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/jammy/winehq-jammy.sources

Обновим репозитории с помощью команды:

sudo apt update

И установим последнюю версию Wine:

sudo apt install --install-recommends winehq-stable -y

После того как её установили, напишем команду:

wine --version

На момент написания статьи(4-6.04.25) последняя актуальная версия wine это 10.0. Если у вас ниже, то значит вы скачали версию не от wineHQ.

WineHQ — это официальные сборки wine. Они наиболее стабильные и наполненные функционалом. Если у вас что-то не работает, это может быть последствием кривой сборки. Нужно это учитывать, когда вы пытаетесь получить помощь(всегда указывайте версию и поставщика wine, например — Soda 9.0 от Bottles). 

В Lutris позже мы будем использовать отличную версию от HQ, поскольку в том контексте она будет наиболее оптимальной(по моим личным наблюдениям и тестам).

Встроенные переменные, которые использует Wine для работы

Пришло время познакомиться с некоторыми базовыми понятиями, которыми оперирует wine. 

Первое из них — это префикс(prefix).

Префикс — это виртуальное окружение, которое wine использует для хранения файлов(библиотек, windows-бинарников и тд). Именно туда будут устанавливаться все наши приложения, библиотеки и тд. 

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

Почему? Всё просто. Конфликты зависимостей.

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

Например, вы установили игру из репака. Репак притянул с собой DirectX 9, DotNet Framework 6 и что-то ещё. 

Позже, вы поставили ещё одну игру, которая тоже использует DX9, но при этом он старее. Возникают конфликты, которые на Windows достаточно легко устраняются самой системой, но wine — не windows. Некоторые проблемы устранить он не в состоянии. Поэтому совет — никогда не держите все приложения в одном префиксе. Делайте хотя бы логическое разделение на программы и игры(а ещё лучше — группируйте игры между собой, для более эффективного использования дискового пространства).

Рассмотрим пример использования префиксов, чтобы не сильно усложнять себе жизнь. 

Например, вы используете графический софт, любите поиграть в старые 3D GTA и визуальные новеллы.

Сделайте 3 префикса — для софта, ГТА и новелл. Почему так? Старые ГТА будут использовать +- свои библиотеки и они не будут мешать другим приложениям существовать, графическому софту вообще DX не нужен, у него свои библиотеки, которые не затрагивают DX, но при этом могут ему помешать работать, а визуальные новеллы, практически все, работают на одном движке, поэтому мешать друг другу тоже не будут(вот тут я не эксперт, но то, во что играл я, в основном использовало один и тот же движок). 

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

Стандартный префикс, где wine хранит свои файлы, всегда находится по пути ~/.wine

В чём ещё преимущества префиксов — у них есть битность архитектуры. Вы должны использовать для 32-битных приложений 32-битный префикс, а для 64 — 64(кстати, во всей статье я так и не менял битность ни одного префикса, но это не помешало запускать x86 приложения в x86-64 префиксе). 

Да, в современных версиях wine они могут быть взаимозаменяемы(если 32 запускается в 64, но не наоборот), но я бы рисковать не стал, особенно если программа “привередлива”. Поэтому если у вас что-то не работает, то добро пожаловать создавать новый префикс конкретно под неё, с необходимой битностью, зависимостями и тд.

Как создать кастом-префикс

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

Например, я хочу сделать префикс для игр по пути /home/yan/wine/games, значит я должен сделать переменную WINEPREFIX и положить в неё этот путь(можно полностью, либо заменить часть /home/yan на ~ или $HOME, тут всё на ваше усмотрение).

export WINEPREFIX=~/wine/games

Дальше нужно запустить wine. Все переменные, которые экспортируются, автоматически подхватываются wine и указывать их не нужно(полезно в скриптах, где нельзя указывать переменные перед командой).

wine

Если вы не хотите экспортировать переменную, можно каждый раз писать полный путь перед wine

WINEPREFIX=~/wine/games wine

Я рекомендую последний вариант, ибо если вы сделали переменную, то:

  1.  Она сбросится после перезапуска системы, а если вы запускаете программы внутри префикса, то все зависимость поедут, ибо wine будет их искать в стандартном префиксе ~/.wine, где их просто нет

  2. Любой запуск wine будет происходить в этом префиксе. Поэтому если вы захотите его сменить, нужно будет сделать unset WINEPREFIX, а потом уже заново присваивать другой путь. И так делать каждый раз при его смене. Это не удобно, поэтому проще каждый раз писать полностью только для одной команды, а как закончите с настройкой приложения, чтобы оно работало, сделать скрипт для запуска(я приложу свой пример чуть позже в статье) и положить его в папку с приложением, который он запускает. Далее, вы сможете сделать .desktop значок и запускать приложение из “старта” или с рабочего стола.

Архитектура префикса

Чтобы задать архитектуру префикса, при первом запуске(инициализационный) задайте ещё одну переменную с указанием битности этого префикса

WINEARCH=win32 или WINEARCH=win64(по умолчанию в современных версиях wine) и запустите команду

WINEARCH=win32 WINEPREFIX=~/wine/games wine

Таким образом у нас создастся 32-битный префикс в папке ~/wine/games.

Дебаг(отладка) запуска приложения

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

Почему это важно — если вы пробуете запустить приложение и у вас оно просто не запускается, то часто вы не можете понять почему. Вы даже не знаете в какую сторону копать для решения проблемы. 

У меня такое было очень часто, когда запускаешь exe игры, видишь открывшийся экран, который тут же крашится без каких либо выводов. Вопрос — а почему? Да чёрт его знает. Без дебага тут делать нечего. 

Сам дебаг представляет собой тоже переменную, в которую записываются “каналы” для сбора данных о запуске приложения. Это и встроенная утилита для отслеживания порядка подгрузки DLL-библиотек(где можно понять, что приложению не хватает для работы), и полный вывод лога в консоль о том, что происходит при запуске приложения и тд. Вот самые необходимые(на мой взгляд) каналы для отладки, какие мы будет использовать в дальнейшем:

  1. WINEDEBUG=+loaddll — как понятно из названия — это дебаг для просмотра загрузки dll на всём периоде запуска приложения. Тут можно узнать, что приложение не смогло подтянуть, и что стоит доставить для возможной починки запуска приложения(если дело, конечно, в библиотеке)

  2. WINEDEBUG=+heap — что происходит в “куче” при запуске приложения. Может быть особенно полезно при запуске .NET приложения(если хотите узнать больше про “кучу”, вот ссылка(и ещё одна для конкретно .NET) на википедию)

  3. WINEDEBUG=+module — подробнее чем +loaddll, иногда может быть полезнее, чем первое

  4. WINEDEBUG=+relay/+snoop — показывает подробные вызовы “нативных” DLL(те, которые вы поставили либо ручным копированиям по путям(чуть далее) либо через winetricks). Также, может показывать их имплементацию и целые куски кода, что нарушает политику wineHQ о “Reverse Engineering”

  5. WINEDEBUG=+fps — показывает кол-во кадров в секунду в приложениях, работающих на OpenGL, Vulkan и D3D(сокращённое название от Direct3D)

  6. WINEDEBUG=+seh — показывает ошибки Windows в 16-ти ричном виде(вы их точно встречали, когда не могли запустить какую-либо игру). 

  7. WINEDEBUG=+all — показывает абсолютно всю информацию, которая практически всегда является избыточной и делает крайне трудным отладку запуска. Не рекомендую использовать.

Также, можно исключить какой-либо канал из вывода, просто написав «-» перед ним.

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

Как включить дебаг при запуске программы

Добавьте переменную перед wine. Также помните, что каналы можно комбинировать через запятые. Пример запуска с дебагом

WINEDEBUG=+loaddll,+fps WINEPREFIX=~/wine/games wine $PATH_TO_EXE

Переназначения встроенных библиотек нативными

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

Например, у вас есть игра, которая “притянула” с собой DirectX 9, или любую другую библиотеку, которая по магическому стечению обстоятельств просто не работает в wine. Что тогда делать? Если удалить dll из папки с игрой, и поставить dll в wine, то ничего работать также не будет. 

Решение тут одно — заменить используемую библиотеку на нативную, которая установлена была в wine. Сделать это очень просто. Нужно взять переменную, в которую положить следующую запись:

WINEDLLOVERRIDES=”ddraw.dll=n,b” 

где ddraw.dll соответствует заменяемой библиотеки(в данном случае DirectX 9), а n,b что стоит использовать Native, Built in(нативную, встроенную).

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

То есть, если нужно запустить приложение с дебагом, в префиксе с изменёнными библиотеками, нужно использовать следующую конструкцию:

WINEDEBUG=+loaddll,+fps WINEPREFIX=~/wine/games WINEDLLOVERRIDES=”ddraw.dll=n,b” wine $PATH_TO_EXE

Да, команда монструозная. Если все переменные сначала экспортировать:

export WINEDEBUG=+loaddll,+fps 

export WINEPREFIX=~/wine/games 

export WINEDLLOVERRIDES=”ddraw.dll=n,b”

А потом использовать, то можно существенно сократить команду до:

wine $PATH_TO_EXE

Но минусы данного подхода я уже описал выше. Я не буду использовать подобные конструкции, только если в скриптах, где я буду сначала экспортить все библиотеки, запускать приложение, а потом их убирать из переменных окружения, с помощью unset. 

Смена версии Wine

Чтобы сменить версию wine(например, у вас 2-3 установленных в системе, и вам нужно выбрать одну, которую использовать), можно воспользоваться ещё одной переменной. Как ни странно, но называется она WINE, где в присваивание вы вписываете путь до бинарника другой версии. 

Например, вы собрали wine самостоятельно, и его главный бинарь лежит по пути /opt/wine_8.4/bin/wine, то в переменную вы присваиваете вот такой путь:

WINE=/opt/wine_8.4/bin/wine

И далее вы можете просто писать wine для использования, собственно, wine:

WINE=/opt/wine_8.4/bin/wine WINEPREFIX=~/wine/games wine ….

Встроенные компоненты в wine

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

  1. winefile — проводник, похожий на таковой из windows 3.1; позволяет запускать exe изнутри. Также именно он будет возникать в “попапах”, если приложение будет предлагать сохранить файл. Важное замечание: у вас будет как минимум 2 диска — C:\, Z:\. C:\ — это ваш префикс, прям вот весь, ибо prefix по сути и есть диск C:\ вашей “виртуальной windows”(если в него зайдёте, то поймёте почему я так говорю), Z:\ — это корень диска Linux (/)

  2. winecfg — настройка конкретного prefix, настройки очень скудные. По идее, может предоставлять графический подход для замены dll(на n,b например), но у меня никогда это не работало. Также позволяет изменить эмулируемую версию Windows(рекомендую ставить windows 10, если нет потребности в более ранних), добавить диски в систему(если, например, нужен отдельный диск для /home/name, сделать виртуальный рабочий стол и задать ему конкретное разрешение. Это иногда выручает, если приложение не хочет нормально открываться напрямую, или если оно открывается с кривым разрешением. Остальные настройки бесполезны, там настраивать нечего, но иногда нужно туда заходить.

  3. explorer — проводник, чем то похожий на первый. Я чаще запускаю его, чем первый.

  4. regedit — редактор виртуального реестра(да, wine же предоставляет реестр)

  5. notepad — блокнот для редактирования файлов

  6. taskmgr — диспетчер задач

  7. cmd — консоль

  8. msiexec — установка msi файлов(да, с установкой msi пакетов тут есть некоторые “трудности”, о которых позже

  9. start — запуск bat/msi/exe файлов с контекстом(очень полезная программа, пример использования будет чуть позже)

  10. control — панель управления

  11. hh — чтение документации к программам в html файлах(очень редко нужно, если вообще когда-либо нужно)

  12. uninstaller — программа для удаления программ, установленных в данный префикс(иногда проще “грохнуть” весь префикс(опять же, один префикс — одно приложение), а не удалять приложения)

Это все встроенные компоненты, которые могут как-то пригодиться. 

Чтобы их запустить напишите 

wine <название приложения>

Например, давайте запустим winecfg в моём префиске, напишем:

WINEPREFIX=~/wine/games wine winecfg

Также, я рекомендую инициализировать ваш префикс именно такой командой. Так он точно сделает всё правильно.

Как устанавливать зависимости(DLL-библиотеки)

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

К моему огромному разочарованию, wine не предоставляет инструмента для установки библиотек не в ручном виде. Рассмотрим его и более современный способ.

Как устанавливать библиотеки вручную

Для начала нам нужно узнать, какой именно библиотеки нам не хватает. Давайте предположим, что это библиотека dxvk для трансляции вызовов DirectX 9-11 в нативные(для linux) вызовы Vulkan.

Порядок действий:

  1. Ищем нашу библиотеку в интернете или, если есть компьютер с Windows, мы можем скопировать библиотеку оттуда, но я не рекомендую этого делать, ибо могут быть конфликты.

  2. Далее, нужно определить её битность. Если это библиотека 32-битная, то мы должны её скопировать в папку C:\windows\system32, а если 64-битная, то в папку C:\windows\syswow64.

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

Что же делать, если wine не даёт встроенной утилиты для установки? Использовать сторонний скрипт — winetricks.

Установка winetricks

Для начала, обновим пакеты в пакетнике. Напишем:

sudo apt update

sudo apt upgrade -y

Далее, установим winetricks. Для этого напишем:

sudo apt install winetricks -y

Всё, winetricks установлен.

Winetricks предполагает 2 варианта использования — графический и консольный. Начнём со второго.

Установка консольным вариантом

Чтобы установить необходимые библиотеки в префикс, нужно перед командой использовать переменную WINEPREFIX и просто написать название библиотеки, которую хотите установить, например, установим 3 библиотеки:

WINEPREFIX=~/wine/games winetricks d3dx9_30 d3dx9_31 d3dx9_42

Далее, WT начнёт скачивание библиотек в префикс, который мы ему указали. Он ещё спросит о ваших намерениях, действительно ли вы хотите их установить. Процесс может занять некоторое время, ибо некоторые зеркала, откуда он берёт библиотеки, недоступны из России, и поэтому он будет перебирать все зеркала, пока не найдёт доступное. Иногда данный процесс может затянуться до минут 5-6.

Помните ещё, что данные библиотеки являются частью большой библиотеки d3dx9, которая в свою очередь является библиотекой DirectX 9, которая в качестве DLL будет называться как ddraw.dll.

Установка через графический режим

Далее, графический режим. Тут всё проще, нужно всего лишь написать префикс и WT:

WINEPREFIX=~/wine/games winetricks

У нас откроется следующее окно:

Приветственное окно Winetricks

Приветственное окно Winetricks

Тут выбираем “Select the Default wineprefix”(он откроет тот, который мы написали перед командой, это для него дефолтный. Просто winetricks тоже позволяет создавать префиксы(вообще, он может выступать как полноценная графическая надстройка над классическим wine, но сделано это несколько топорно и неудобно), и только в том случае он будет “не дефолтным”).

Далее, мы видим следующее окно:

Окон для выбора действия(что устнавливать или редактировать)

Окон для выбора действия(что устнавливать или редактировать)

Тут выбираем что хотим установить, в моём случае это DLL, поэтому это первый пункт. Жмём ок и видим следующее окно:

Окно для установки DLL-библиотек

Окно для установки DLL-библиотек

Тут просто долистываем до наших библиотек и жмём чекбоксы у них. Дальше — ок.

Ошибка, говорящая о том, что у нас 64-битный префикс

Ошибка, говорящая о том, что у нас 64-битный префикс

Это предупреждение игнорируем всегда. Оно ничего полезного не даёт и, скорее, подбешивает только.

Как будут качаться и устанавливаться библиотеки

Как будут качаться и устанавливаться библиотеки

Так выглядит установка библиотек.

После установки нас вернёт на предыдущее окно(оно никогда само не закрывается, только если вылетает. Поэтому обязательно ждите открытия WT снова. Если этого не происходит, то он вылетел и, скорее всего, установленные библиотеки стали битыми).

Установим шрифт

Установим шрифт

Давайте установим шрифт! Выбираем второй пункт и жмём ок.

Окно выбора стандартных шрифтов из windows. Часто шрифты едут именно из-за того, что не установлены те, которые были использованы при разработки продукта.

Окно выбора стандартных шрифтов из windows. Часто шрифты едут именно из-за того, что не установлены те, которые были использованы при разработки продукта.

Отмечаем чекбоками шрифты и жмём ок.
В процессе он сыпет ошибками, которые мы тоже смело игнорируем.

Данное предупреждение гласит, что будут закрыты все открытые wine-процессы во время установки

Данное предупреждение гласит, что будут закрыты все открытые wine-процессы во время установки
PPV скачивает и устанавливат шрифт

PPV скачивает и устанавливат шрифт

Вот установка шрифтов.

В процессе он снова дал ту ошибку, тоже игнорируем.

Всё, шрифты тоже установлены. Нас вернуло на тоже окно. Выходим отсюда, ибо всё что хотели, мы установили.

Мы разобрали самые основные понятия в wine, думаю пришло время переходить к практике и сделать всё поэтапно. От создания префикса, до установки приложений. 

Пошаговая настройка wine со скриншотами

Моя система:

Конфигурация моей тестовой системы, на который будет происходить все последующие запуски софта

Конфигурация моей тестовой системы, на который будет происходить все последующие запуски софта

Для начала, проверим то, что wine и winetricks установлены.

Напишем в терминал

wine --version

winetricks --version

У вас должно быть что-то типо этого в выводах. Выводы могут отличаться. 

У вас должно быть что-то типо этого в выводах. Выводы могут отличаться. 

Создадим папку для нашего префикса с названием “Apps”

Напишем в терминале

mkdir -p ~/wine/Apps

Далее, инициализируем wine в префиксе. Напишем следующую команду в терминале

WINEPREFIX=~/wine/Apps wine winecfg

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

Если хотите, можете поизучать настройки, но они ничего вам не дадут. 

Например, в этом окне вы можете сменить оформление на старое

Новая тема окон wine

Новая тема окон wine

Вот старая тема wine:

Старая тема окон wine

Старая тема окон wine

Довольно страшненькая. Я останусь на новой теме.

Да, кстати, как вы можете заметить, снизу у нас есть папки, которые прокинуты в нашу систему. Если, например, вы загрузите файл с браузера, то он окажется в Загрузках вашего пользователя Linux. И все значки на рабочий стол, которые будут делать программы при установке, окажутся на вашем рабочем столе и вы сможете их оттуда запустить. Но очень часто они ломаются, поэтому мы их использовать не будем. Также стоит помнить, что я покажу вам чуть позже скрипт, который я использую для запуска приложений в префиксах.

Всё, мы можем закрывать это окно, оно нам пока-что не нужно.

Запуск Total(Double) Commander в wine

Далее, покажу вам достаточно стандартный пример запуска приложения, которое не требует дополнительных зависимостей и должно 100% запуститься и у вас. Это мною любимый Total Commander(я буду использовать вместо него Double Commander, но сути это не меняет).

Скачиваем Double Commander с сайта.

Скачиваем 64-битную версию в exe формате(msi у меня не захотел устанавливаться, покажу чуть позже на другой программе как с ним работать).

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

WINEPREFIX=~/wine/Apps wine '/home/yan/Downloads/doublecmd-1.1.23.x86_64-win64.exe'

Установочный экран 

Тут выбираем папку, куда он будет устанавливаться. Я буду ставить в C:\Apps\DCMD, что эквивалентно пути в linux $HOME/wine/Apps/drive_c/Apps/DCMD/

«попап» при установке приложений

Кстати, данный “менеджер файлов” не умеет создавать папки, поэтому придётся создавать из нашей хост системы(можете как в windows просто написать несуществующий путь и он сам создат папки до него). 

Выбор установочного пути для приложения

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

Рабочий стол с ярлыком из wine

Рабочий стол с ярлыком из wine

Вот ярлык появился тут. Откроем его свойства.

Свойства Ярлыка и команда запуска

Свойства Ярлыка и команда запуска

Как мы можем видеть, команда запуска тут точно такая же, какую использовал и я. Далее и мы сможем делать такие же ярлыки.

Откроем приложение, только вручную из терминала. Напишем команду:

WINEPREFIX=~/wine/Apps wine start "C:\\Apps\\DCMD\\doublecmd.exe"

Сразу предрекаю вопросы, а что это за такой странный путь в кавычках. Это всё из-за того, как Linux оборачивает любые символы после \. Бэкслеш используется только для спец. знаков, таких как \n, который переведёт “каретку” на следующую строку при печати в консоли. Так как нам нужен именно бэкслеш для путей, мы его оборачиваем в него же, поэтому тут такой странный путь.

В start мы обязаны писать такие пути, или же, мы можем поступить чуть иначе. У программы start есть ключ /unix(да, у всех программ в wine ключи пишутся в стиле DOS(где используется / для ключей, а не как в linux или powershell -)), после которого мы пишем в одинарных кавычках(да, это очень важно) полный путь до нашего исполняемого файла. Пример команды запуска:

WINEPREFIX=~/wine/Apps wine start /unix '/home/yan/wine/Apps/drive_c/Apps/DCMD/doublecmd.exe'

Внимание, тут не работают ссылки для вашей домашней директории, такие как ~ или $HOME, wine будет выдавать следующую ошибку:

Запускаем приложение и видим, что оно открылось без каких-либо проблем:

А теперь я хочу пояснить, почему практически все используют для примера того, что всё работает именно Total(Double) Commander и Notepad++. Нет, не потому что они такие популярные и всем нужны,а из-за того, что они имеют встроенные зависимости, которые не отторгаются wine. 

Total(Double) Commander вообще написан на паскале в среде Borland Delphi(в случае DC это не Delphi, а Lazarus, но сути это не меняет и Double Commander обладает полной обратной совместимостью с любыми расширениями от TC), которые тянет с собой все библиотеки. 

Переходим в более сложным приложениям для запуска с “некоторыми проблемами”.

Запуск веб-приложений и этап проблем

Я имею в виду тех приложений, которые написаны на NodeJS с использованием Electron. Почему это важно?

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

Одним из ярчайших примеров является Figma. Давайте запустим её. 

Качаем приложение с официального сайта устанавливаем его в тот же префикс.

Напишем команду:

WINEPREFIX=~/wine/Apps wine '/home/yan/Downloads/FigmaSetup.exe'

Как мы видим, само приложение установилось и запустилось, но вот… а что с интерфейсом?

На этом этапе фигма просит войти в свой аккаунт, но вот беда, wine не умеет перенаправлять запросы в системный браузер. 

Хорошо, поставим браузер напрямую в wine. Чтобы это сделать, нужно скачать какой-либо браузер. Допустим, firefox. 

Качаем exe с сайта. Запускаем уже известной командой:

WINEPREFIX=~/wine/Apps wine '/home/yan/Downloads/Firefox Installer.exe'

Установка началась, перед этим попросив поставить wine gecko. 

Установка закончилось, но ничего не запустилось, а почему? А тут начинаем дебагать. 

Сначала, нужно узнать куда устанавливать FF. Устанавливается он по пути /home/yan/wine/Apps/drive_c/Program Files/Mozilla Firefox

Хорошо, пробуем запускать его через start:

WINEPREFIX=~/wine/Apps wine start /unix '/home/yan/wine/Apps/drive_c/Program Files/Mozilla Firefox/firefox.exe'

Снова мимо. Пробуем поменять путь на виндовый. 

WINEPREFIX=~/wine/Apps wine start "C:\\Program Files\\Mozilla Firefox\\firefox.exe"

Тоже мимо. Значит начинаем изучать лог, где можно заметить странное поведение dll. 

Значит, запустим с дебагом на dll.

WINEDEBUG=+loaddll WINEPREFIX=~/wine/Apps wine start "C:\\Program Files\\Mozilla Firefox\\firefox.exe"

И тут выясняется интересная проблема, когда мы начинаем смотреть в лог. Вот как выглядят успешные подключения библиотек:

А вот наша проблемная:

Заметили тут приписку “not found”? Вот это символизирует, что какая-то библиотека не смогла подключиться, ибо не смогла найтись. Но она лежит около exe в папке. Тут что-то не то. Вероятно, что не смогло подтянуться окружение. А это уже беда. Давайте я немного про это расскажу.

Если вы знакомы с JS, то вы знаете что такое “область видимости” или же “контекст”. Вот у wine тоже есть контекст. Вы не задумывались, почему я использую start а не просто wine и exe? Start позволяет подтянуть необходимый контекст, иначе приложение просто не сможет увидеть файлы, лежащие в папке. 

То есть, контекст у нас есть, он успешно подключён, но работать оно всё равно не желает.  Можем попробовать заменить библиотеку на скачанную из интернета по ссылке. 

Заменяем ей ту библиотеку в папке с FF, но всё равно ничего не запускается. 

Попробуем положить её в папку C:\windows\syswow64 и запустить. 

Всё равно мимо. 

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

WINEDEBUG=+loaddll WINEPREFIX=~/wine/Apps WINEDLLOVERRIDES="mozglue.dll=n,b" wine start "C:\\Program Files\\Mozilla Firefox\\firefox.exe"

И опять мимо

Ошибка запуска библиотеки

Ошибка запуска библиотеки

Но, я заметил ещё одну библиотеку, которая не смогла подтянуться:

Другая проблемная библиотека

Другая проблемная библиотека

Причём присмотритесь-ка к ней. Она нужна для mozglue! Следовательно, давайте попробуем её скачать и положить в папку с FF.

Причём смотрите, что говорит сайт: 

Это ведь библиотека от Microsoft! Логично, что её не будет в нашем префиксе. Качаем по ссылке и кладём в папку syswow64(дополнительно скачайте ещё и 32-битную и полжите в system32). Смотрим, что будет происходить:

Изменение ошибки

Изменение ошибки

Я вас поздравляю, ошибка изменилась. Теперь её можно прогуглить по коду.

Описание ошибки

Описание ошибки

Так, начинает что-то проясняется. Как будто, FF, который 64-битный, нуждается в библиотеке, которая 32-битная, отсюда и возникает ошибка. 

А возможно ошибка в другом, если приглядеться к ответу, тут есть ещё совет установить .net

Как можно попробовать её решить

Как можно попробовать её решить

А давайте его поставим. Но какой ставить? Давайте попробуем последний с сайта microsoft(тут я серьёзно тупанул и скачал не тот рантайм, но сути это всё равно бы не поменяло, так как не работает ничего что так, что так).

Устанавливаем вот это

Что качать на сайте

Что качать на сайте

Exe для 64-битной системы есть, запускаем для установки

Установщик .NET

Установщик .NET

Ну, оно открылось

И установилось.

Пробуем запускать снова.

Но снова мимо… В чём может быть проблема… А! Я вспомнил. Я же не ставил в этом префиксе mono. Давайте исправим ситуацию(mono может поставиться само при создании префикса, но чаще всего придётся самостоятельно качать и ставить вручную).

Качаем с этого сайта msi. Выбираем тут версию 10.0(так как у меня 10.0 вайн). 

Тут выбираем wine-mono.msi

Файлы на ФТП WineHQ для поддержки mono(.net)

Файлы на ФТП WineHQ для поддержки mono(.net)

Устанавливаем командой

WINEPREFIX=~/wine/Apps wine msiexec /i '/home/yan/Downloads/wine-mono-10.0.0-x86.msi'

Тут ключ /i отвечает именно за установку. Никаких графических окон не будет. Вот такой должен быть вывод в терминал:

Вывод при установки mono из msi пакета

Вывод при установки mono из msi пакета

Откроем wine uninstaller чтобы убедится, что mono установлен командой:

WINEPREFIX=~/wine/Apps wine uninstaller

Де-установщик пакетов

Де-установщик пакетов

Да, он тут есть. Это хорошо. Пробуем снова запускать FF.

Да чтоб тебя. Ладно, есть идея его просто переустановить, может быть поможет. 

Удаляем его из прошлой программы и устанавливаем заново. 

Установка идёт, надеемся, что всё запустится.

Но снова мимо… Пробовать дальше исправлять проблему уже бессмысленно, так как поломано что-то внутри. Я не знаю точно в чём проблема, поэтому исправить её и не могу. Предлагаю попробовать установить Chrome.

Качаем, ставим.

Проблема вся в том, что если заходить на сайт как я, с linux системы, то возможность скачки с него windows версии просто не будет. Поэтому я скачаю с другого сайта, чисто exe.

Но тут возникло 2 проблемы. 

  1. Установщик итальянский

  2. Ошибка даже не дающая его поставить

Ошибка установки Chrome

Ошибка установки Chrome

Ладно, качаем другой браузер — ungoogled chromium и, О ЧУДО, оно соизволило установиться и даже запуститься.

ungoogled chromium

ungoogled chromium

(правда криво, но это мелочи. Мы ведь не планируем его прям использовать, оно нужно лишь для редиректа запросов от Figma в браузер)

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

Но я решил поставить pixso, которое, о чудо, работает!

Рабочий Пиксо

Рабочий Пиксо

Правда дальше логинки я не уйду, ибо аккаунт у меня привязан к google, а входить он в него категорически не хочет. Ладно, создам на почте и попробую снова.

Главный экран Пиксо

Главный экран Пиксо

УРА! С почты оно вполне зашло.

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

Пробуем что-нибудь нарисовать.

Производим базовые операции в программе для демонстрации её работоспособности

Производим базовые операции в программе для демонстрации её работоспособности

Ну, оно работает и очень даже шустро. 

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

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

Запуск Fallout 1/2 с модами под wine

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

Давайте я опишу саму проблему, почему не получается завести, казалось бы старую игрушку на wine. 

Любые моды требуют модлоадера. В случае F1/2 это sfall, который требует наличия DirectX 9, чего в оригинальном F1/2 не требовалось.

Плюс, тут нужно понимать как устроены модификации под F1/2. Вся графика(скорее все текстуры) для него зашита в exe файл(в этом можно удостоверится, просто заменив exe от мода оригинальным, игра потеряет любые текстуры из модов. 

Например, в моде Fallout 0.5 пропадает текстура(и предмет), который является основным для его прохождение и вы получаете софтлок. Я это понял ещё тогда, когда играл в моды на телефоне с использованием приложения ExaGear и заменил exe от мода, на оригинальный. Игра запустилась, локации работают, но вот предмет — пропал. И я получил софтлок. Плюс невозможно начать новую игру, ибо игра просто вылетает.

Ошибка, при запуске модов на оригинальном wine без библиотек следующая — Error loading cities

(картинка не моя, чуть позже будет моя)

Игра без DX9 просто не может прогрузить локации. 

У меня даже есть собственное видео на YouTube(кому интересно, я оставлю ссылку на него, можете посмотреть), потому что я понял, что кроме меня это никто больше не сделает.

Для решения данной проблемы, нужно установить 3 библиотеки и заменить ими встроенные в игру. Как раз те, которые я разбирал в примере для замены библиотек — d3dx9_30,31,42. Также, в процессе возникли ещё проблемы — например, отваливающиеся скрипты и шрифты. Это тоже нужно будет поправить вручную, отредактировав пару файлов игры. 

Само описание решения проблемы я нашел на этом сайте.

Только дойти до этого объяснения было очень трудозатратно, пришлось перелопатить целый форум, где только в одном сообщении была ссылка на эту страницу, а иначе это даже не гуглится(если ошибка появляется исключительно в wine, но при этом она не возникает почти никогда в windows, то будьте уверены — решения скорее всего нет и вам придётся думать самостоятельно). 

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

Давайте приступать к практике. Для запуска нам нужно:

  1. Сама игра(настоятельно рекомендую GOG релиз)

  2. Мод Restoration Project

  3. Wine + Winetricks

  4. Полчаса свободного времени на решение всех проблем

Для начала, создадим новый префикс, ибо старый уже “грязный”.

WINEPREFIX=~/wine/Fallout wine winecfg

Далее, устанавливаем оригинальный Fallout 2 из GOG релиза.

Ещё со времён создания видео, у меня есть архив для полной установки, воспользуюсь им.

Установка F2

Устанавливаю F2.

WINEPREFIX=~/wine/Fallout wine '/home/yan/Downloads/fallout_02/setup_fallout2_2.0.0.12.exe'

Путь я меняю от изначального, чтобы было удобнее до него дойти.

Решение проблемы со шрифтами

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

Нас встречает вот такая ошибка — продолбанные шрифты. Нужно исправлять. Это возникает, если F2 не может понять какие файлы ему нужно грузить. Под windows он как-то их находит, а вот в wine уже не может.

Идём в папку, куда установлен Fallout

И открываем файл fallout2.cfg в любом текстовом редакторе. 

Сейчас он выглядит вот так:

Сюда нужно дописать 5 строчек, чтобы он выглядел вот так:

Разбираем, что дописали.

Critter_dat и master_dat — данные для игры откуда грузить ресурсы(в тч. шрифты)

Critter_patches и master_patches — откуда брать патчи.

Language=english — обязательно для русской и английской версии, иначе кодировка игры слетит. Да, можно поменять язык wine и тогда кодировка будет нормальной, но поскольку я всегда пользуюсь только английскими версиями ОС и программ, для меня это необходимость.

Пути должны быть в стиле windows. В абсолютных linux путях это будет примерно следующем:

/home/yan/wine/Fallout/drive_c/GOG/Fallout2/critter.dat

/home/yan/wine/Fallout/drive_c/GOG/Fallout2/master.dat

Запускаем F2 с помощью команды, которая прикрепит контекст к запуску:

WINEPREFIX=~/wine/Fallout wine start "C:\\GOG\\Fallout2\\fallout2.exe"

PS: в процессе запуска обнаружилось, что моя система не имеет некоторых библиотек, из-за которых у меня F2 не смог загрузить разрешение. Нужно доставить libvulkan.so.1 и libGL.so.1.

Лог при запуске, что отсутствует поддержка OpenGL, что свидетельствует, что не установлены драйвера на видеосистему

Лог при запуске, что отсутствует поддержка OpenGL, что свидетельствует, что не установлены драйвера на видеосистему
Сама ошибка от игры

Решение проблемы подсказал мне deepseek. Вот необходимые команды, если вы вдруг столкнулись с той же проблемой:

sudo apt install libvulkan1:i386  mesa-vulkan-drivers:i386

sudo apt install libvulkan1 libgl1-mesa-dri mesa-vulkan-drivers vulkan-tools

Всё, F2 запущен, проблем больше нет, дальше идти в саму игру нам не нужно.

Установка мода Restoration Project

Запускаем установщик

WINEPREFIX=~/wine/Fallout wine '/home/yan/Downloads/fallout_02/F2_Restoration_Project_2.3.3.exe'

Установщик мода

Установщик мода

Устанавливаем мод, оставляем всё как есть(язык в игре не меняем)

Выбор компонентов мода

Выбор компонентов мода
Завершение установки мода

Завершение установки мода

Мод установлен, время идти дальше.

Решение ошибки из-за библиотек — error loading cities

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

PS. Это немного не то, на что я рассчитывал, но допустим.

Каким боком это снова вылезло? Ну, лог в помощь…

Эээм… У меня нет слов… Я же исправил эту ошибку ещё при запуске без мода… Что не так…

Снова мне помог Deepseek. Нужно было установить dxvk

WINEPREFIX=~/wine/Fallout winetricks dxvk

Ошибка загрузки контекста и как её можно временно решить

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

Пишем:

WINEPREFIX=~/wine/Fallout wine explorer

Открывается вот это:

Стартовый экран в файловом менеджере

Стартовый экран в файловом менеджере

Ручками доходим до папки с F2.

Папка с установленным F2

Папка с установленным F2

И запускаем Fallout2.exe

И вот моя родимая ошибка

Ошибка запуска DirectX 9

Чтобы её поправить, нужно поставить несколько библиотек. 

Пишем:

WINEPREFIX=~/wine/Fallout winetricks d3dx9_30 d3dx9_31 d3dx9_41

Лог установки библиотек

Лог установки библиотек

И у нас всё установилось.

Дальше, загружаем explorer с заменой библиотек следующей командой

WINEPREFIX=~/wine/Fallout WINEDLLOVERRIDES="ddraw.dll=n,b" wine explorer

Запускаем F2 и бинго!

Всё запустилось. Давайте создадим персонажа и посмотрим работает ли всё в самой игре. 

И… да. Всё работает.

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

Но что если мы хотим запустить игру не загружая при этом отдельно файловый менеджер, используя терминал и всё остальное? 

Нам нужен обычный скрипт запуска приложения на bash, который всё будет делать за нас. Нам нужно будет лишь запустить его и он сам всё запустит. Вот вам пример моего скрипта. Может быть он не очень хороший с точки зрения кодинга, но свою задачу он выполняет на все 100%. Он запускает игру всегда и без каких-либо проблем.

Написание скрипта

Мой собственный скрипт запуска приложений

Мой собственный скрипт запуска приложений

Сам скрипт. Что он делает:

  1. Мы переходим прямо в папку, где располагается игра. Это важно.

  2. Мы создаём переменные, которые будут автоматически подтягиваться wine(ибо если переменная задана, он будет использовать её для запуска. То есть тут он всегда будет запускаться в необходимом нам префиксе с необходимыми заменами библиотек)

  3. Запускаем саму игру

  4. А потом отменяем наши переменные, которые создали, чтобы они не влияли на наши другие запуски wine

Всё просто и довольно прямолинейно, но оно работает и это главное. Теперь, сделаем данный файл исполняемым командой:

chmod +x ./start.sh

И запустим его

./start.sh

Всё запустилось и работает.

Создание симлинки скрипта

Если хотите этот скрипт запускать из другого места(рабочий стол, например), то сделайте симлинку на рабочий стол.

ln -s ~/wine/Fallout/drive_c/GOG/Fallout2/start.sh ~/Desktop/Fallout_Start

Рабочий стол с симлинкой скрипта

Рабочий стол с симлинкой скрипта

Вот симлинка на рабочем столе. 

Запустим её.

Тут жмём Run.

Тут жмём Run.

И у нас всё запустилось.

Если хотите, можете поменять иконку и название.

Если хотите, можете поменять иконку и название.

Всё, со скриптом и классическим wine мы закончили. По сути, мы разобрали всё, что нужно для работы — как скачивать/устанавливать приложения/библиотеки, как отлаживать приложения и решать проблемы. Теперь время переходить к более “человечным” графическим решениям.

Wine-loaders или графические приложения по запуску и настройки wine

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

Из графических оболочек я могу выделить как минимум 4, но рассмотрим мы далеко не все. 

Из именно wine-based — Bottles, Lutris и Heroic Games Launcher.

Из proton(steam-wine) based — PortProton(или же Gaming On Linux).

Расскажу я про 2 оболочки — Bottles и Lutris. Про HGL я смысла рассказывать не вижу, так как он очень похож на Лутрис, а в случае с PortProton у меня с ним “натянутые” отношения, так как работать часто он отказывается у меня. И интерфейс у него, мягко скажем, не интуитивный, как у того же Lutris.

Bottles

Bottles — это достаточно современная оболочка по запуску wine приложений, сделана в стилистике последних Gnome DE, по настройкам очень скудная, по функционалу бедная. Советую использовать только для запуска приложений, а не игр.

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

Установка Flatpak на Ubuntu 24.04 

Введём в терминал следующие команды

sudo apt update 

sudo apt install flatpak -y

После того, как установлен Flatpak, у вас может быть уже добавлен репозиторий Flathub, а может нет. Лучше его добавить руками, чтобы точно избежать проблем. 

Для того чтобы это сделать введите следующую команду:

flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo

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

flatpak remotes

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

Репозитории в флатфаке

Далее, введите:

flatpak update

И после синхронизации введите:

flatpak install com.usebottles.bottles

Но тут есть некоторая проблема. Если вы только что поставили flatpak, то у вас в “старте” не появится иконка установленных приложений. Для того, чтобы всё починилось — перезагрузите систему. 

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

flatpak run com.usebottles.bottles

Также, я советую поставить приложение Flatseal, чтобы можно было управлять папками, которые доступны приложениям в Flatpak, иначе они не буду видеть вашу домашнюю папку или другие диски в системе. 

Установим Flatseal с помощью команды:

flatpak install com.github.tchx84.Flatseal

Настройка Flatseal

После, запустим Flatseal. Вас встретит следующее окно:

Открытое приложение в Flatsea

Открытое приложение в Flatsea

Поскольку это тестовая машина и я не обеспокоен безопасностью системы, я добавлю сразу всем приложениям(и текущем установленным и будущим) доступ к системному руту и домашней папке. Вам я так делать не рекомендую.

Переходим на 1 вкладку(синяя иконка) и крутим до этой секции:

Секция найстройки видимости дирректирой в хост-системе для Flatpak приложений

Секция найстройки видимости дирректирой в хост-системе для Flatpak приложений

Тут нажимаем на иконку “новой папки” на Other Files.

Тут откроется вот такая строчка, куда вводим интересующие нас пути, для доступа приложениям. 

Например, как это выглядит у меня:

Мой вариант доступа к папкам для прилоежний

Мой вариант доступа к папкам для прилоежний

На этом можно закрывать Flatseal, так как данное изменение применилось ко всем приложениям в системе, установленные из Flatpak.

Пример как это выглядит у Bottles:

Тоже самое скопировалось и в Bottles

Тоже самое скопировалось и в Bottles

Пути Flatpak приложений

Важно помнить, куда Flatpak устанавливает приложения, и где они хранят данные. Стандартный путь установки приложений:

/var/lib/flatpak/app

Как это выглядит в файловом менеджере

Как это выглядит в файловом менеджере

У меня 3 приложения — 3 папки.

А данные они хранят по пути:

/home/yan/.var/app

Поскольку я ещё не запускал Bottles, тут нет папки для него

Поскольку я ещё не запускал Bottles, тут нет папки для него

Запуск Bottles

Ну, запускаем Bottles. 

Нас встречает следующее окно.

Подготовка к запуску

Подготовка к запуску

Тут он скачивает необходимые версии wine для работы и некоторые библиотеки.

Стандартный интерфейс бутылок.

Создание префикса в бутылках

Предлагаю создать новый префикс для приложений(или как тут они их называют — бутылки)

Нажмём на + в левом верхнем угле.

Создание "бутылки" в Бутылках

Создание «бутылки» в Бутылках

Тут мы можем выбрать категорию(она нужна для того, чтобы бутылки понимали, какие библиотеки им нужно скачивать изначально, чтобы работало большинство приложений. Например — для приложений гораздо нужнее .NET, чем DirectX 9-11 и наоборот) или сделать кастомную, но я не любитель тут делать кастомные префиксы, с ними будет больше гемора. Оставляем выбор на приложениях, так как мы будем тут сначала запускать именно их.

В качестве загрузчика выбираем соду(это форк wine).

Bottle Directory не трогаем(это, кстати, новая фича. Раньше нельзя было настраивать путь префикса не в кастомном. Это удобно).

Называем просто — Apps и нажимаем Create.

Лог при создании

Лог при создании

Пошло создание префикса, скачка библиотек и настройка конфигураций. 

Лог при создании

Лог при создании

По логу можно видеть что бутылки ставят в префикс. Шрифты, поддержку .NET и DirectX Vulkan для 3д.

Настройка префикса 

Все "бутылки"/префиксы

Все «бутылки»/префиксы

Бутылка появилась и давайте её откроем. 

Главный экран префикса с приложениями и настройками

Главный экран префикса с приложениями и настройками

Вот интерфейс префикса. Тут мы можем сразу открыть exe по синей кнопке или настроить префикс. Сначала пройдёмся по настройкам.

Настройка префикса

Настройка префикса
Настройка префикса

Настройка префикса

По сути, тут настраивается всё, что мы настраивали через переменные в консольном wine. Кстати, настрое за полгода прибавилось, раньше их было в разы меньше. 

Несомненный плюс бутылок в том, что они предлагают “перенос” снапшотов, чтобы их можно было распаковать в автоматическом режиме на любом пк, где есть бутылки. Они сами поставят все библиотеки, все настройки сразу применятся и будет работать также, как и на хост машине, откуда был сделан снапшот. 

Установка приложений 

Я предлагаю установить какое-нибудь приложение. Например, AIMP. Он также как и Total commander не требует дополнительных библиотек, и должен сразу установиться без проблем. 

Скачиваем exe по ссылке.

Открываем exe по синей кнопке в главном меню префикса.

Установщик загрузился. Прокликиваем и устанавливаем. 

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

/home/yan/.var/app/com.usebottles.bottles/data/bottles/bottles/Apps/drive_c

Как вы видете, путь очень длинный и дойти до него самостоятельно достаточно проблематично. При желании, можно сделать симлинку на папку в домашнюю папку, чтобы быстрее сюда попадать при надобности, но я этого делать не буду. 

Запускаем AIMP. 

Он работает без каких либо проблем. 

А давайте попробуем тут установить Firefox, как помните на стоковом wine у меня были с ним проблемы. Возможно тут ситуация изменится. 

Установка пошла.

Тут запуск тоже появился. 

Пробуем открывать.

И также мимо. Давайте попробуем отладить FF тут. Чтобы это сделать нужно открыть 3 точки около запуска приложения и нажать на иконку терминала сверху.

(прошу прощения за фотку, просто скриншот не хочет работать на диалоговых окнах)

(прошу прощения за фотку, просто скриншот не хочет работать на диалоговых окнах)

В этом случае откроется .

терминал с кратким выводом лога

терминал с кратким выводом лога

И да, проблема таже, что и у обычного wine. Можно скипать, её я не решу. 

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

Попробую запустить приложение, которое мне было нужно для университета и которое не запускалось у меня. Logic Circuit. Скачать его можно здесь.

Кстати, MSI установщик запустился сразу, никаких специфических действий не требуется. 

Установщик Logic Circuit

Установщик Logic Circuit

Прокликиваем до установки.

Не запускается. Открываем терминал и начинаем смотреть где он крашится. 

Лог запуска

Лог запуска

Ага. Что-то связанное с .NET и библиотека. Пробуем найти библиотеку и что это вообще такое. 

Быстрый гугл дал мне информацию, что ему не хватает .NET Runtime. Но какой версии? Давайте попробуем поставить последнюю. Снова качаем с того сайта, который я давал ранее. 

Ставим и смотрим поможет ли. 

Повторный лог

Повторный лог

Не похоже что это помогло. 

Последнее изменение .NET было до версии 8. Пробуем поставить его вкладки Dependencies в настройках префикса. 

Как в бутылках можно устанавливать зависимости. Также есть "устаревший"(как тут назвали) WT

Как в бутылках можно устанавливать зависимости. Также есть «устаревший»(как тут назвали) WT

Вот он. Жмём на иконку дискетки для установки. 

Установленная зависимость

Установленная зависимость

Установился. Пробуем снова запускать. 

Ещё раз лог

Ещё раз лог

Снова мимо. Ошибки даже не поменялись. 

Попробую сунуть данный вывод в Deepseek. 

Мой запрос:

Запросы к дипсику

Запросы к дипсику

Ну его ответ мне мало помог…

Ответ дипсика(он меня вообще убил, перед этим он мне советовал запустить через Lutris xD. Даже он понимает что бутылки это изврат)

Ответ дипсика(он меня вообще убил, перед этим он мне советовал запустить через Lutris xD. Даже он понимает что бутылки это изврат)

Можно попробовать. 

Ставим 6 дотнет и 4.8, и 4.8.1.

Пробуем запускать снова. 

Ещё раз лог

Ещё раз лог

Нет, ошибки не изменились. Либо это проблема в Bottles либо в установщике зависимостей. Ради интереса можно запустить в стандартном wine.

Запуск в стандартном wine

Опа. А у меня открылось начальное окно и тут же закрылось. Значит дело всё таки в Bottles. 

Что интересно, установка .NET в winetricks немного другая, с графикой.

Установщик .NET 4

Установщик .NET 4

Тут есть надежда на запуск. Но в winetricks нет .NET8. Либо его нет в “графике”, либо вообще. Нужно попробовать через терминал.

И более новые версии .NET устанавливаются через графику…. Кажется что-то в Bottles поломано, либо они устанавливают зависимости иначе. 

Установщик .NET 4.8

Установщик .NET 4.8
Установщик .NET 6

Установщик .NET 6

И бинго! Через обычный wine у меня всё открылось сразу после установки .NET.

Запущеная программа

Запущеная программа

Дело было в Bottles. Именно поэтому я него, скажем так, недолюбливаю. У меня в нём нормально не работало буквально ничего. Я настоятельно рекомендую его избегать, лучше поставить всё самому, либо через Lutris. 

Установка и запуск Lutris

Для установки Lutris введите в терминал:

flatpak install net.lutris.Lutris

В случае с Lutris я хочу остановиться особенно подробно, поскольку на моей практике он запускал 90% всего, что я ему давал(не без проблем с установкой зависимостей,но всё же), тогда как тот же Bottles меньше 10%. 

Важно чтобы Lutris был установлен именно из Flatpak, так как из пакетника у меня он хотел запускать и половины того, что я ему давал. Я не знаю с чем это связано, возможно нативно не все библиотеки устанавливаются, или что-то ещё, но мои наблюдения были именно такие. 

Открываем Lutris и смотрим что к чему в нём. 

Главный экран

Главный экран

Интерфейс тут сложнее чем в бутылках, но он и мощнее его раз в 10. В первый запуск(слева) он загружает библиотеки для работы. Пока можно загрузить wine. Делается это во вкладке слева с названием Runners>wine

Главный экран

Главный экран

Наводимся на киоск и нажимаем. 

Список версий wine для установки

Список версий wine для установки

Попадаем в такое меню. Почему-то у меня щас тут очень мало версий wine(обычно их в десятки раз больше, ~30-40 версий. Не знаю с чем связано, возможно они почистили их), но нам нужен как раз WineGE, поэтому ничего страшного.

Устанавливаем её.

Список версий wine для установки

Список версий wine для установки

Как установится, можно закрывать данное окно.

Я немного отойду от темы и расскажу про то, что такое Lutris в целом. Лутрис это огромный “комбайн” для игр. В его составе вы можете устанавливать десятки эмуляторов, лаунчеров игр(например — EGS или GOG Galaxy), он умеет в себе хранить все ваши игры с линукс(нативные из стима), или устанавливать напрямую в wine(например поставить Steam напряму в wine для большей совместимости).

Тут также как и в стиме есть счётчик времени игры. У лутриса есть свой аккаунт, который может синхронизировать ваши данные. 

Он также позволяет делать импорт/экспорт префиксов и многое другое. 

Список эмуляторов консолен

Список эмуляторов консолен

Список эмуляторов, которые он может установить автоматически. Всего их 55(как видно вверху). От эмуляторов NES до Swtich и PS3.

Настройки папок для Lutris

Настройки папок для Lutris
Глобальные настройки для всех раннеров

Глобальные настройки для всех раннеров

Но я отвлёкся. Вайн. 

Как добавить префикс

На главном экране нажмите + в левом углу и выберете тут Install Local Game.

Тут идёт вся настройка префикса. Назовём его и выберем раннер.

Тут в первой строчке нужно указывать путь до exe, который надо запустить. Пока пропустим. Аргументы тоже. 

В Working Directory нужно указать рабочую папку игры, но у нас пока её нет, поэтому тоже опустим. Она по факту и не нужна никогда.

В префикс вписываем путь до папки для префикса(логично, да?).

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

Тут идёт настройка конкретно раннера. У меня всё так как надо, ничего не трогаем. 

В последний раздел тоже не лезем. 

И вот у нас создалась “карточка игры”. Если её назвать по другому, то подгрузится картинка игры(как в карточках в стиме).

Полка с "притянутыми" обложками игр

Полка с «притянутыми» обложками игр

Пример “полки” с играми.

Удаление карточек

Удаление карточек

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

Чтобы установить(запустить) EXE/MSI файл, нажмите на карточку с игрой и нажмите на “галку” снизу.

Контекстное быстрое меню wine

Контекстное быстрое меню wine

Тут выберете Run EXE(запускает в тч. и msi). Эта галка нам будет ещё много где нужна.

Сразу скажу, что все префиксы от Lutris я кладу в ~/Lutris/НазваниеПрефикса

Неудачная попытка запуска Logic Circuit

Установим тот же Logic Circuit и проверим его поведение под лутрис.

Выбор exe

Выбор exe

Тут выбираем exe.

Установщик

Установщик

Установщик запустился и установил программу. 

Далее, допустим, мы хотим привязать его исполняемый файл к нашей карточке. Нажимаем по нашей карточке ПКМ > Configure

(Прошу прощения за фото, просто Linux не умеет снимать модальные окна по ПКМ, он просто скриншот не запускает)

(Прошу прощения за фото, просто Linux не умеет снимать модальные окна по ПКМ, он просто скриншот не запускает)

Далее идём в Game Options и там указываем путь как на фото.

Как указывать путь до запускаемого бинарника

Как указывать путь до запускаемого бинарника

Далее сохраняем и теперь по 2му клику по карточке у нас запуститься выбранный exe.

Запуск неудачный. Давайте установим зависимости. Нажимаем снова на галку снизу и там выбираем winetricks.

WT немнгого в другой теме, ибо это Flatpak и он не умеет нормально синхронизироваться с системными темами(поэтому и лутрис у меня в светлой теме, кстати(плюс он не на ГТК, а на QT написан. С кде работать будет лучше))

WT немнгого в другой теме, ибо это Flatpak и он не умеет нормально синхронизироваться с системными темами(поэтому и лутрис у меня в светлой теме, кстати(плюс он не на ГТК, а на QT написан. С кде работать будет лучше))

Когда он открылся, ставим необходимые библиотеки(как это делать я рассказывал в части про классический wine).

Я устанавливаю следующие библиотеки.

Также игнорируем это сообщение.

Всё поставилось и можно открывать приложение.

Возникла проблема, данные библиотеки не установились. У меня завис winetricks и всё. Я пересоздам весь префикс.

Никогда не допускайте той ошибки, которую я сейчас сделал. Все установки winetricks через лутрис делает в тихом режиме, и если вам кажется, что он вылетел, то это ещё не значит что он действительно вылетел. Откройте htop и посмотрите что происходит на самом деле. В тот раз, я запустил ещё раз WT и переустановил библиотеки в момент, когда предыдущая инстанция не завершила свою работу, поэтому библиотеки получились битые. 

Так, оно всё равно не хочет запускаться. Ну значит время дебага. Тут с этим всё проще, чем в бутылках. Нужно открыть птичку у Play и там выбрать show logs.

Открывается терминал с логом:

Лог от Lutris гозадо более информативнее и настраеваемый чем у бутылок

Лог от Lutris гозадо более информативнее и настраеваемый чем у бутылок

Ему снова не хватает .NET, значит я что-то забыл поставить, что ставил когда запускал на чистом wine. 

В общем… Не помогло. Я даже попробовал запустить с системного wine, но тоже мимо. В общем, как мы видим, где-то стоковый wine показывается себя в разы лучше, чем его более “дружелюбные” аналоги.

Запуск Игр

Запуск Blade Runner GOG

Первой из всех будет ремастер Blade Runner. Это старый Point ‘n’ Click Quest, основанный на киберпанк-фильме Blade Runner. 

Под каждую игру я буду делать отдельный свой префикс, чтобы библиотеки не накладывались на друг друга(ну и соответственно симулировать как бы вы ставили это на чистый префикс).

Некоторые игры я буду ставить из GOG, а некоторые из репаков. Эту, в частности, из GOG.

Установщик Blade Runner из GOG

Установщик Blade Runner из GOG

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

Игры из GOG я рекомендую запускать по INK файлам(да, лутрис их понимает хорошо, насчёт стокового вайна не уверен, не проверял).

Да, можно запускать INK файлы в Lutris

Да, можно запускать INK файлы в Lutris

Ну, запускаем. 

Всё прекрасно запустилось и работает.

Запуск Katana Zero GOG

Дальше будет Katana Zero, тоже GOG релиз, тоже отдельный префикс.

Кстати, хочу показать вам интересный способ установки GOG игр.

При создании нового префикса, тут есть вот такая иконка

Вариант "онлайн" установщиков

Вариант «онлайн» установщиков

Нажимаем на неё и вводим название игры.

Видим нашу игру и платформы, на которых лутрис её может запустить. Нажимаем на неё. 

И видим вот такой список всего, что она готова поставить. Выбираем GOG.

Путь для префикса

Путь для префикса

Указываем путь установки.

Тут нужен оффлайн установщик

Тут нужен оффлайн установщик

И выбираем GOG установщик.

Лутрис сам качает необходимые для запуска зависимости.

Lutrris качает зависимости самостоятельно по тому установщику, который нашёл в сети

Lutrris качает зависимости самостоятельно по тому установщику, который нашёл в сети
Пример окон при установке из Lutris

Пример окон при установке из Lutris

Всё также запустилось и работает. 

Установка репаков и новые проблемы

Теперь время запускать репаки. С ними всё сложно. 

Репаки от хатаба не установят ничего. Установщик в репаке нормально не понимается лутрисом/вайном. Репаки от механиков тоже мимо. Некоторые старые или кастомные установщики тоже будут чудить(проверено на собственном многочисленном опыте поиске нормального репака). Также, если у вас есть старый диск с игрой, то очень большая вероятность, что она тоже не установится. 

А если игра требует диск для запуска, то это только искать DVD-rip бинарник, благо щас такие есть под многие старые игры. Установить можно либо просто примонтировав iso/bin образ в самом Linux командой mount, либо открыв как zip и скопировав все файлы в папку, откуда уже и производить установку. 

Установка репака Готики 2

Я буду ставить репак 2й готики(да, классика как она есть).

Уехавшая кодировка

Уехавшая кодировка

И такое вы будете видеть очень часто. Скорее всего, тут кодировка DOS-1211 или Koi-8, которые не поддерживаются wine. У этого есть решение. 

Где менять локаль

Где менять локаль

Если вот тут поставить русский.

Нормальная локаль меняет и кодировку

Нормальная локаль меняет и кодировку

Вуаля, всё починилось.

То, что установщик корректно завершился уже некая победа(учитывая что я писал выше).

Пробуем запускать.

Вот тут вопрос какой exe брать для запуска. Пробуем просто Gothic2.exe

И обламались мы с запуском. Ради интереса попробую другой exe перед тем как дебажить.

Идентично посыл на 3 буквы. 

Лог при запуске

Лог при запуске

Однако минималистично. Ну и что тут не так? Там вон ошибка с локалью связана. Пробуем вернуть английскую.

Вернул английскую локаль, но ничего не поменялось

Вернул английскую локаль, но ничего не поменялось

Ошибка то ушла, а вот всё равно не запускается. Что делать? Лог не блещет подробностями… Для таких случаев есть расширенный лог. Его надо включить самостоятельно в настройках.

Где менять дебаг режим

Где менять дебаг режим

Делается это вот тут внизу в Output debugging info. 

Ставим Enabled(я не могу заскринить диалоговое окно, но там 4 пункта).

Более информативный лог

Более информативный лог

Информации стало в разы больше. Ищем за что можно зацепиться. 

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

Если вы откроете “птичку” на нижней панели у play, то там есть такая кнопка, как “Open Bash Terminal”. Нажимаем и попадаем в терминал. 

Там нужно дойти до папки с игрой и сделать то, что я делал на большей части статьи — открыть с дебагом. Только уже со своим. 

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

Это оригинальная игра без модов. Значит как сам факт проблем в запуске нет. Пробую другой бинарник и…

Вот тут уже возникают проблемы. И мы видим что не подгружается. Winevulkan.dll Нужно доставить и всё будет работать.

Вообще, я почти убеждён что это проблема в неустановленном DirectX 9. Давайте отключим DXVK в настройках. Это делается вот тут:

Где настраивать запуск с DXVK/VKD3D

Где настраивать запуск с DXVK/VKD3D
Лог после отключения

Лог после отключения

Лог просто кардинально преобразился. Теперь понятно чего именно тут не хватает! А именно: d3d9.dll и vdfs32g.dll. 

К слову, оказывается я всё это время запускал не тот exe…

PS. На этом моменте я вернул dxvk и больше его не отключал, мешал не он, а кривая игра(подробности ниже)

Там есть такой файл как GothicStarter.exe. Вот нужен именно он.

Локаль то я сменил, вот и кодировка уехала снова

Локаль то я сменил, вот и кодировка уехала снова

Но игра всё равно запускается некорректно. Продемонстрировать я это не могу, так как скринить нечего. Она постоянно переоткрывает окно, закрывает и так по кругу. 

Причём так она не страдает фигнёй. Что тут конкретно не работает сказать трудно.

Каким то магическим образом у меня получилось включить катсцену и она перестала переоткрываться. Проблема в том, что она не пропускается вообще. 

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

Меняем настройки запуска готики

Меняем настройки запуска готики

Поменял вот тут на 1(zStartupWindowed). Попробую запустить и посмотреть что получится.

Она стала работать просто безупречно… Значит она пыталась открыть полноэкранный режим, почему то безуспешно, и сразу же закрывала и делала это циклично. Отчасти проблема решена. Игра работает. 

Геймплейно тоже всё хорошо. Но придётся играть в окне. Я уверен, что в сети есть нормальные гайды по установке, но так как я тут рассказываю именно свой опыт решения проблем, тут оно будет именно в таком виде. Хоть криво-косо, но это то, до чего дошёл я не искав полноценных советов.

Переходим к самому сладкому — Биошок. Причём с ремастером. Это тоже репак, поэтому могут быть проблемы с установкой(собственно что и получилось… накаркал). 

Кодировка… Не буду менять, прокликать установщик можно и так(ладно, пришлось. Установщик матюкнулся, а на что так не поймёшь).

Сегодня, кажется, без биошока. Данный установщик прекрасно работает под windows, но совершенно не хочет под wine. Ещё один в копилку нерабочих…

Я могу скачать другой установщик.. Даже GOG релиз, но смысла в этом будет не очень много. ГОГ заработает точно, я проверял. Это ГОГ, он работает всегда. А может и не всегда.

Запуск Stalker Зов Припяти GOG

Никто не хочет поиграть в сталкер? А вот я что-то захотел. 

Сталкер это одна из тех игр, которую на wine запустить проблемнее всего. Особенно небо и зов. Если кто играл в те времена, когда он только только выходил помнят “зелёного жучка”. Вот тут это перманентное состояние, без фиксов. Ну как, они то есть, но работают раз через раз.

 Я буду ставить как раз зов припяти с GOG установщика, ибо даже он тут иногда бессилен(у меня уже были попытки запуска раньше, которые меня посылали в пешее эротическое сразу после установки).

Поставится то оно поставилось, а вот запустится ли это большой вопрос.

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

Ладно, это победа. Окончательно. Оно работает. Не вылетает. Стабильно. Я считаю, на такой приятной ноте можно и закончить. 

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

Заключение 

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

От себя добавлю пару строк. 

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

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

У меня крайне скудный набор исконно windows приложений, которые мне надо прям запустить на Linux. Отчасти, это наверно весь софт Adobe и на этом всё. Но у Адоб есть огромная проблема. Они являются не запускаемыми ни в каком случае под wine.

Вернее как, запустить то их можно, но вот назвать это состояние “работоспособным” у меня язык не повернётся. Всё лагает, багает, вылетает и работает очень нестабильно. Да и я смысла в этом не вижу. 

Примерно также ведёт себя софт от Affinity. Его запустить у меня вообще не удавалось, если я запускал Photoshop CS6, CC 2017,19,21 и Illustrator CS6, CC21(правда вот с ним у меня и были наибольшие лаги), то вот продукты Affinity не поддаются. Они все используют очень специфический набор библиотек и редактируют реестр так, что wine это просто не переваривает и его клинит.

Также не думайте, что wine это “манна небесная”, которая запустит всё как древний артефакт. Ничего подобного. Wine в состоянии запустить от силы 40% софта, и 80% игр(игр больше, так как его основное направление это они, как минимум из-за Valve, которые в них вложили очень много денег и сами активно его развивают, но как Proton для Steam и Steam Deck).

Если вам срочно нужен какой-либо софт — используйте виртуалку. Ваши нервы скажут вам огромное спасибо после этого.

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

Не пробуйте запускать на wine проф. софт. Это касается Adobe, Affinity и Autodesk. С последним я лично намучался с неделю без результатов. В чём конкретная проблема “отторжения” я сказать не могу, скорее всего, как я писал выше, реестр. 

Я желаю всем удачи по запуску именно ваших приложений под этой адской программой, терпения и успехов. 

Если остались какие-либо вопросы — комментарии и лс всегда открыты, буду рад помочь.

Примечание: На момент 2023 года статья значительно устарела, актуализированную версию можно найти здесь: https://noostyche.ru/blog/2023/05/19/aktualizirovannye-osnovy-po-ispolzovaniyu-wine-na-2023-god/

Примечание: Статья предназначена для новичков, но, как минимум, потребуются базовые знания о Linux (структура файловой системы, права пользователей, навыки работы с терминалом).

Содержание.

  1. О Wine.
  2. Установка Wine в дистрибутивы на базе Ubuntu, включая Linux Mint 19.
  3. Удаление Wine.
  4. Использование Wine. Немного теории о префиксах (prefix).
  5. Использование Wine. Создание префиксов (prefix).
  6. Общая информация и ограничения префиксов.
  7. Конфигурирование Wine через GUI.
  8. winefile. Файловый менеджер Wine.
  9. Wine. Установка и запуск программ.
  10. Wine. Удаление установленной Windows-программы.
  11. Winetricks. Основы.
  12. Winetricks. Настройка префикса.
  13. Углубление в функционал Wine.
  14. Отладка.
  15. Практика.
  16. Чуть-чуть хитростей.

Почта для предложений и замечаний: feedback@noostyche.ru

О Wine.

https://ru.wikipedia.org/wiki/Wine

Много интересного по использованию Wine можно посмотреть так:

man wine

Руководство пользователя:

https://wiki.winehq.org/Wine_User’s_Guide

В основном устаревший перевод руководства, но некоторые вещи всё ещё актуальны:

https://www.opennet.ru/docs/RUS/wine_guide/index.html

Arch wiki (часть вещей устарела):

https://wiki.archlinux.org/index.php/Wine_(%D0%A0%D1%83%D1%81%D1%81%D0%BA%D0%B8%D0%B9)

Рецепты запуска конкретных программ и помощь от сообщества стоит искать здесь:

https://appdb.winehq.org

https://www.protondb.com

https://vk.com/native_wine

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

Установка в дистрибутивы на базе Ubuntu, включая Linux Mint 19.

https://wiki.winehq.org/Ubuntu

Для wine-staging, начиная с версии 4.5, требуется пакет libfaudio0. Для Ubuntu 19.10 и более новых выпусков этот пакет был добавлен в Universe-ветку репозитория, то есть в ветку с пакетами, поддерживаемыми сообществом.

Ещё libfaudio0 можно взять из этого репозитория:

https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04/amd64/

https://download.opensuse.org/repositories/Emulators:/Wine:/Debian/xUbuntu_18.04/i386/

Для работоспособности Wine:i386 и Wine:amd64 потребуются пакеты соответствующей архитектуры.

Пример установки из репозитория:

sudo apt install --install-recommends libfaudio0

Пример установки скачанного пакета:

sudo apt install --install-recommends ~/Downloads/libfaudio0_19.07-0~bionic_i386.deb

Пример установки wine-staging в Linux Mint 19.

Рекомендую использовать именно wine-staging в виду того, что эта версия содержит множество дополнительных патчей, которые в значительной степени повышают шансы на успешный запуск той или иной программы. Недостатком этой версии является то, что она несколько менее стабильна, чем wine-stable, но в основном это не критично.

Первым шагом будет скачивание и добавление ключа:
wget -nc https://dl.winehq.org/wine-builds/winehq.key
sudo apt-key add winehq.key

Linux Mint 19 использует репозиторий Ubuntu bionic. Подключить соответствующую ветку репозитория Wine:
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'

Обновить список пакетов:
sudo apt update

Установить wine-staging:
sudo apt install --install-recommends winehq-staging:amd64

Должны установиться winehq-staging:i386 и winehq-staging:amd64.

Основные компоненты wine-staging будут расположены в /opt/wine-staging/

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

dpkg -L wine-staging

Удаление Wine.

Примечание: Отключить репозиторий и удалить его ключ можно через программу с графическим интерфейсом , но в данном примере будет рассмотрен вариант через терминал.

Сначала отключить репозиторий Wine:
sudo add-apt-repository -r https://dl.winehq.org/wine-builds/ubuntu/

Вывести список всех ключей используемых репозиториев:
apt-key list

Найти ключ репозитория Wine и по последним четырём символам удалить его. Пример:
sudo apt-key del F987672F

Удалить непосредственно Wine:
sudo apt remove --auto-remove winehq-staging

При этом будет удалён стандартный префикс ~/.wine. Поэтому, если он будет нужен в дальнейшем, стоит его заархивировать или переименовать.

Прочие префиксы нужно удалять вручную.

Обновить список репозиториев:
sudo apt update

После удаления Wine останутся иконки и некоторые пакеты. Их можно удалить вручную.

Место хранения ярлыков программ, установленных в Wine:
~/.local/share/applications/wine/

Место хранения иконок, включая тех программ, что установлены в Wine:

~/.local/share/icons/hicolor/

Кэш для установки таких пакетов, как wine-mono и wine-gecko:
~/.cache/wine/

Архив пакетов, которые устанавливались посредством winetricks в тот или иной префикс:
~/.cache/winetricks/

Использование Wine. Немного теории о префиксах (prefix).

Грубо говоря, префикс это отдельный экземпляр ОС Windows. Содержит в себе базовую структуру каталогов ОС Windows, набор библиотек и программ. В народе префикс называют «бутылкой» (bottle). Экземпляры компонентов для префикса хранятся в подкаталогах /opt/wine-staging/, откуда они копируются в создаваемый префикс.

В дистрибутивах Linux стандартный префикс располагается здесь:

~/.wine/

По умолчанию он 32-разрядной архитектуры.

Можно создавать префиксы в любых желаемых каталогах, принадлежащих пользователю. Описание процесса создания располагается далее по статье.

Примечание: Категорически недопустимо создание префиксов с правами суперпользователя. Это крайне небезопасно и пользователь не будет иметь прав с ним работать.

Стандартное содержимое префикса:

Описание иллюстрации:

  • В каталоге dosdevices перечислены виртуальные «диски». В Windows разделы блочных устройств представлены в виде абстрактных «дисков» (томов), каждый из которых обозначается буквой.  К примеру, системный «диск» по умолчанию называется «C:».
  • drive_c — виртуальный диск C:, на котором располагаются компоненты Windows.
  • .update-timestamp — метка времени.
  • system.reg, user.reg и userdef.reg являются файлами реестра Windows. Если кратко, то это централизованное древовидное хранилище настроек Windows-программ.

В каталоге drive_c (диск C:) содержится классическая структура каталогов Windows.

Использование Wine. Создание префиксов (prefix).

Пример создания и конфигурирования 64-х разрядного префикса с именем .wine_new в домашнем каталоге (home) активного пользователя:
WINEARCH=win64 WINEPREFIX="/home/$USER/.wine_new" winecfg

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

Разбор команды:

WINEARCH=win64 — через переменную среды (environment variable) WINEARCH указываем, что префикс должен быть создан под архитектуру amd64. Это позволит запускать в нём 64-разрядные программы, а так же 32-разрядные. Для лучшего понимания стоит ознакомиться с Multiarch. Стоит отметить, что нельзя изменить архитектуру у созданного префикса.

WINEPREFIX=»/home/$USER/.wine_new» — через переменную среды WINEPREFIX указываем, по какому пути должен будет располагаться новый префикс. В данном примере это «/home/$USER/.wine_new». Wine требует указания абсолютного пути. Путь в виде «~/.wine_new» не подойдёт, и будет выведена ошибка: wine: invalid directory ~/.wine_new in WINEPREFIX: not an absolute path.

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

winecfg — программа для конфигурирования префикса. После её запуска произойдёт процесс непосредственного создания префикса по указанному пути.

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

При первом создании префикса может быть предложено скачать пакеты Mono и Geko, но, начиная с Wine 5.0, они должны скачиваться вместе с установкой Wine без дополнительных запросов. В этом случае будет предложено просто установить их в префикс.

  • Библиотеки Mono нужны для корректной работы программ, которым необходим Microsoft .NET Framework.
  • Библиотеки Geko необходимы для корректной работы свободной реализации Internet Explorer (до Windows 10 стандартный интернет браузер в ОС Windows).

Пакеты будут размещены здесь:

~/.cache/wine/

После завершение создания префикса появится окно графического интерфейса (GUI) конфигуратора префикса (winecfg):

О настройках конфигуратора несколько далее по статье. На этом этапе его окно можно закрыть.

Объём свежесозданного префикса составит около 1,3 Гб.

По аналогии можно создать 32-разрядный префикс:
WINEARCH=win32 WINEPREFIX="/home/$USER/.wine_new32" winecfg

Общая информация и ограничения префиксов.

  • Зачем вообще создавать префиксы? Почему бы не ставить программы куда-попало в пространство Linux-пользователя и запускать их из любого удобного места? | Если установить программу вне префикса, то она может оказаться неработоспособной в виду различия иерархии путей в Linux и Windows. В остальном, на деле программа будет как бы установлена в стандартный префикс /home/$USER/.wine. Именно оттуда она будет взаимодействовать с системными компонентами Windows, включая реестр. Туда же она будет сохранять свои рабочие файлы (конфиги, логи и подобное). Поэтому во избежание ошибок, несовместимости и замусоривания оптимальнее осознанно использовать префиксы.
  • Можно создавать неограниченное количество префиксов.
  • Нежелательно устанавливать все программы в один префикс, лучше создавать новый под каждую программу. Это в значительной степени упростит отладку и поможет избежать конфликтов.
  • Можно настроить один префикс, копировать его и использовать копии в качестве отдельных префиксов. При этом можно свободно менять их имена.
  • После создания префикса, для запуска программ из него, не нужно каждый раз указывать его архитектуру. Пример запуска программы control.exe: WINEPREFIX="/home/$USER/.wine_new32" wine "/home/$USER/.wine_new32/drive_c/windows/system32/control.exe"
  • Да, для того, чтобы запустить программу из того или иного префикса, необходимо каждый раз передавать переменной окружения WINEPREFIX значение пути до желаемого префикса. Варианты упрощения этого описаны в конце статьи.
  • Не рекомендуется размещать префикс на разделе с файловой системой NTFS (основная файловая система OC Windows), так как могут быть проблемы с правами на запуск программ в префиксе и в целом это менее безопасно.
  • НЕЛЬЗЯ устанавливать в префикс Windows-драйвера для оборудования (видеокарт, звуковых карт и подобного). Потенциально это может привести к сбою устройства.
  • Можно одновременно запускать программы из разных префиксов. Это возможно благодаря отдельным процессам wineserver, о котором рассказывается во второй половине статьи.
  • В виду неполной изоляции префиксов, не стоит пытаться запускать вредоносные программы для Windows, так как потенциально они способны нанести вред Linux-системе. К примеру, запущенный в префиксе вирус-шифровальщик может зашифровать не только префикс, но и выйти за его пределы, зашифровав все каталоги и файлы, принадлежащие Linux-пользователю.
  • На момент 2020 года значительная часть античитов (BattlEye, Easy Anti-Cheat и прочие) отказывается работать в префиксе Wine. Из-за этого будет недоступен мультиплеер или игра может вовсе не запуститься. К примеру, серия игр Arma. Игры запускаются, но в сетевой игре доступны сервера только без защиты BattlEye.
  • Программы в префиксе запускаются с правами пользователя, который их запустил. То есть префикс не предоставляет изоляции от основной системы, поэтому безопасность (доверенность) запускаемых программ крайне важна. Очень желательно ограничить права доступа к префиксам. Рекомендую следующий уровень прав: для владельца разрешение на чтение, запись и выполнение; для его группы запрет всего; всем остальным запрет всего.

Пример применения прав к префиксу:

sudo chmod 700 -R ~/.wine/

-R — применить права рекурсивно для всех каталогов и файлов, включая вложенные.

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

Конфигурирование Wine через GUI.

Основная масса полезной информации по winecfg описана здесь: https://wiki.winehq.org/Winecfg

Поэтому ниже рассмотрены только некоторые вещи.

Основная масса полезной информации по winecfg описана здесь: https://wiki.winehq.org/Winecfg

Поэтому ниже рассмотрены только некоторые вещи.

Конфигурирование осуществляется для каждого префикса в отдельности. Пример:

WINEPREFIX="/home/$USER/.wine" winecfg

Язык интерфейса конфигуратора можно изменить следующей командой:

WINEPREFIX="/home/$USER/.wine" LANG="en_US.utf8" winecfg

В данном случае русский сменится на английский.

Так же это позволяет cоздать англофицированный префикс, если при создании передать значение en_US.utf8 переменной среды LANG:
WINEARCH=win64 LANG="en_US.utf8" WINEPREFIX="/home/$USER/.wine_new_prefix" winecfg

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

Вкладка «Приложения».

Одним из наиболее часто конфигурируемым параметром является выбор того, под какую версию Windows будет мимикрировать префикс. На момент 2020 года по умолчанию выбрана Windows 7. Полный список:

Эта опция особенно полезна для старых программ, которые требуют Windows XP.

Вкладка «Диски».

Здесь можно подключать виртуальные и физические разделы, виртуальные и физические DVD-приводы, сетевые диски и даже дисководы.

В данном случае подключено два виртуальных диска — C: и Z:. Диск C: является системным каталогом префикса, а диск Z: ведёт в корень файловой системы Linux. Второе в основном нежелательно, поэтому рекомендуется удалить этот виртуальный диск, тем самым изолировав префикс от основной системы. «Любопытным» программам будет сложнее выбраться за пределы префикса, что очень хорошо. При этом останется возможность указывать программам пути вне префикса вручную, то есть полная изоляция отсутствует.

Примечание: В виду неполной изоляции префиксов, вредоносные программы для Windows потенциально способны нанести вред Linux-системе.

Добавить виртуальный DVD-привод можно так:

То есть нажать кнопку «Добавить…», выбрать букву тома (в данном примере D:) и подтвердить. Далее в строке «Тип» выбрать CD-ROM. Останется указать путь до желаемого для монтирования образа DVD.

По аналогии можно добавить физический DVD-привод, выбрав его в строке «Устройство».

Вкладка «Вид и интеграция».

В этой вкладке основным является возможность выбора ассоциации стандартных каталогов Windows-пользователя, с домашними каталогами Linux-пользователя. Эта возможность располагается в блоке «Папки», он находится в нижней половине окна. Там показано то, какие каталоги Linux-пользователя соотносятся с каталогами Windows-пользователя в префиксе.

Стандартные каталоги Windows-пользователя располагаются в префиксе по следующему пути:

/home/$USER/.wine/drive_c/users/$USER/

Выглядит это так:

На снимке видно, что часть каталогов представлены символическими ссылками. Они указывают на домашние каталоги Linux-пользователя, который создал префикс. Это означает, что Windows-программы, запущенные в префиксе, будут использовать каталоги Linux-пользователя. К примеру, запущенная Windows-игра создаст каталог с сохранениями в ~/Documents. На мой взгляд, такое поведение нежелательно.

Можно легко изменить это ассоциирование, указав другие каталоги или вовсе убрав все ассоциации, что изолирует префикс от домашних каталогов пользователя (но не даёт полной изоляции). Для этого необходимо снять галку в блоке «Типы MIME» у пункта «Управлять ассоциациями файлов». Далее в блоке «Папки» появится возможность выбирать пункты и указывать им желаемые пути.

Если убрать галку у пункта «Привязать к», то связь удалится и будет использоваться соответствующий каталог внутри префикса, то есть стандартный каталог Windows-пользователя: «./drive_c/users/$USER/Мои документы«, «./drive_c/users/$USER/Мои рисунки» и так далее. На иллюстрации ниже хорошо видно, что теперь для Windows-пользователя используются обычные каталоги, а не символические ссылки на каталоги Linux-пользователя.

Примечание: При удалении файлов из префикса они помещаются в «Корзину» Linux-пользователя.

winefile. Файловый менеджер Wine.

В некоторой степени является аналогом проводника Windows (explorer). Команда запуска:

WINEPREFIX="/home/$USER/.wine_new" wine winefile

Функционал схож с файловыми менеджерами в дистрибутивах Linux: Dolphin, Thunar и прочих. Можно создавать каталоги, запускать исполняемые файлы, подключать сетевые диски и так далее. На иллюстрации изображён случай без «изоляции» префикса, поэтому виден корневой каталог Linux (диск Z:). «Корзина» для префикса является «Корзиной» Linux-пользователя.

Далее по статье рассматривается установка программ из установочных Windows-файлов (exe, msi). Установку из этих файлов можно осуществить через файловый менеджер Wine, но в данном случае будет рассмотрен только вариант установки с использованием терминала.

Wine. Установка и запуск программ.

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

  1. Ищем запись о желаемой программе в базе Wine AppDB: https://appdb.winehq.org/
  2. Изучаем истории успешного запуска (или их отсутствие).
  3. Подготавливаем префикс по описанию. В зависимости от капризности программы, может потребоваться изменить версию Windows и установить те или иные пакеты расширений (С++ redistributable, .NET Framework, DirectX, Microsoft Media Foundation и прочие).
  4. Устанавливаем программу.

Примечание: Не рекомендуется запускать программы из разделов с файловой системой NTFS, так как могут быть проблемы с правами на запуск и в целом это менее безопасно.

Пример установки клиента Steam.

Находим информацию о нём в базе Wine AppDB: https://appdb.winehq.org/objectManager.php?sClass=version&iId=19444

Разворачиваем свиток «Test Results». В верхней половине будет отображён крайний отчёт пользователя, в котором он описывает свою историю запуска программы. Блок в нижней половине содержит в себе ссылки на отчёты других людей. Красной рамкой отмечена колонка, где можно переключать их.

Скачиваем клиент SteamSetup.exe.

Производим установку в конкретный ранее созданный префикс:
WINEPREFIX="/home/$USER/.wine" wine "/home/$USER/Downloads/SteamSetup.exe"

Разбор команды:

wine «/home/$USER/Downloads/SteamSetup.exe« — запускаем посредством /opt/wine-staging/bin/wine исполняемый файл SteamSetup.exe, который расположен в пользовательском каталоге Downloads. Запускать исполняемые файлы можно из любого каталога Linux-пользователя, но потребуется указывать абсолютный путь.

После запуска SteamSetup.exe появится окно типичного мастера установки Windows:

В правой части иллюстрации видно, что программа устанавливается в указанный префикс, считая его ОС Windows.

Wine умеет преобразовывать создание ярлыков рабочего стола для Windows в ярлыки для рабочего стола и меню Linux. Тем самым можно будет запускать с ярлыка установленную в префикс Windows-программу. Файл ярлыка будет храниться здесь:

~/.local/share/applications/wine/

Набор иконок здесь:

~/.local/share/icons/hicolor/

Пример запуска программы напрямую из конкретного префикса:

WINEPREFIX="/home/$USER/.wine" wine "/home/$USER/.wine/drive_c/Program Files (x86)/Steam/Steam.exe"

Примечание: Для той части пути, которая внути префикса, регистр не имеет значения.

Альтернативный вариант запуска:
WINEPREFIX="/home/$USER/.wine" wine "C:/Program Files (x86)/Steam/Steam.exe"

Wine позволяет сократить путь до относительно префикса, имитируя путь в ОС Windows. Причём, как видно в примере, Wine поддерживает косую черту «/», не смотря на то, что в путях в Windows допустима только обратная косая черта «\».

Wine. Установка программы из .msi установочника.

О пакетах msi можно почитать здесь: https://ru.wikipedia.org/wiki/%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D1%89%D0%B8%D0%BA_Windows

Установка msi-пакетов в префикс несколько отличается от установочника в виде .exe. Пример установки EpicInstaller-10.15.2-unrealtournament.msi:

WINEPREFIX="/home/$USER/.wine" wine msiexec /i "/home/$USER/.wine/drive_c/EpicInstaller-10.15.2-unrealtournament.msi"

Альтернативный вариант:

WINEPREFIX="/home/$USER/.wine" wine start /unix "/home/$USER/.wine/drive_c/EpicInstaller-10.15.2-unrealtournament.msi"

Wine. Запуск bat-файлов («батников»).

Их запуск отличается от запуска exe-файлов. Пример запуска script.bat:
WINEPREFIX="/home/$USER/.wine" wine start /unix "/home/$USER/.wine/drive_c/script.bat"

Wine. Удаление установленной Windows-программы.

Это можно сделать несколькими способами.

Удаление через Wine-программу uninstaller («Установка/удаление программ»):

WINEPREFIX="/home/$USER/.wine" wine uninstaller

В списке выбрать программу, которую нужно удалить, и нажать кнопку «Изменить/Удалить». Запустится мастер установки-удаления программы.

Удаление конкретной программы без использования GUI:
WINEPREFIX="/home/$USER/.wine" wine uninstaller --remove название_программы

Пример удаления программы Steam:

WINEPREFIX="/home/$USER/.wine" wine uninstaller --remove steam

Регистр имени программы не имеет значения.

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

WINEPREFIX="/home/$USER/.wine" wine "/home/$USER/.wine/drive_c/Program Files (x86)/Steam/uninstall.exe"

Альтернативный вариант через GUI. Метод тот же: удаление через программу «Установка/удаление программ», но через запуск из «Панели управления Wine». Для начала потребуется запустить «Панель управления Wine»:

WINEPREFIX="/home/$USER/.wine" wine control

Альтернативный способ запуска напрямую:

WINEPREFIX="/home/$USER/.wine" wine "/home/$USER/.wine/drive_c/windows/system32/control.exe"

В появившемся окне через ярлык запустить программу «Установка/удаление программ»:

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

~/.local/share/applications/wine/

~/.local/share/icons/hicolor/

Winetricks. Основы.

Руководство по использованию: https://wiki.winehq.org/Winetricks

winetricks — конфигурационный shell-скрипт, позволяющий быстро и просто настроить различные параметры Wine через терминал и установить Windows-библиотеки и компоненты, указав соответствующие имена пакетов. Тем самым winetricks в основном дублирует функционал winecfg, но имеет дополнительные полезные возможности.

Официальный репозиторий: https://github.com/Winetricks/winetricks

Тело скрипта (крайняя версия): https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks

Скачивание из официального репозитория в ~/.local/bin/:
wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks -P ~/.local/bin/

Почему именно в ~/.local/bin/? Это каталог для скриптов и исполняемых файлов пользователя. Размещение скрипта в этом каталоге позволит запускать winetricks через терминал для любого префикса без указания абсолютного пути до winetricks.

Если до этого в каталоге не было никаких исполняемых файлов, то потребуется перезапустить сеанс или скрипт профиля пользователя:

source ~/.profile

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

Рекомендую назначить такой уровень прав:
sudo chmod 700 ~/.local/bin/winetricks

Активный пользователь получит право на чтение, запись и запуск, его группа — всё запрещено, остальным — всё запрещено.

Вывести номер версии winetricks:
winetricks --version

Справка о winetricks:
winetricks --help

winetricks может самообновляться по команде:
winetricks --self-update

При этом будет сохранена резервная копия предыдущей версии.

Откатиться на предыдущую версию:

winetricks --update-rollback

Многие манипуляция с winetricks можно произвести в графическом режиме. Запуск winetricks в графическом режиме для конкретного префикса:
WINEPREFIX="/home/$USER/.wine" winetricks

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

В этом меню ключевыми являются две опции: «Установить библиотеку DLL или компонент Windows» и «Установить шрифт».

Опция «Установить библиотеку DLL или компонент Windows».

Здесь перечислены все библиотеки и компоненты, которые winetricks может скачать и инициализировать установку. Например, можно установить в префикс DirectX или отдельные его библиотеки. Не всё из представленного актуально и работоспособно, поэтому нужно действовать внимательно. Стоит отметить, что в рекомендациях на https://appdb.winehq.org/ попадаются советы с перечислением целой вереницы пакетов к установке, тут нужно учитывать, что люди нередко предлагают устанавливать всякую всячину для «подстаховки», поэтому так лучше не делать и постараться установить только действительно необходимые пакеты.

Скачивание производится с сайтов поставщиков (преимущественно Microsoft), так как лицензия многих библиотек и компонентов для ОС Windows не позволяет помещать их в общественные репозитории. Без winetricks пришлось бы самостоятельно перейти на сайт поставщика, найти в его дебрях нужный пакет, найти кнопку скачать (нередко, эта задача то ещё приключение) и наконец заполучить заветный установщик. Таковы реалии Windows на момент 2020 года.

Так же winetircks предоставляет возможность установить библиотеки или компонент напрямую через терминал:

WINEPREFIX="/home/$USER/.wine" winetricks "название_пакета"

Пример установки Microsoft Media Foundation, который часто необходим для работоспособности видеороликов в играх на Unreal Engine 4:

WINEPREFIX="/home/$USER/.wine" winetricks mf

В этой простой операции есть нюанс. Для установки ряда пакетов потребуется распаковщик cab-архивов, которые довольно широко применяются в Windows:
sudo apt install cabextract

После этого установка Microsoft Media Foundation пройдёт успешно:

Можно установить несколько пакетов в одну команду:
WINEPREFIX="/home/$USER/.wine" winetricks d3dx9 vcrun2008 vcrun2010 vcrun2012 vcrun2013 vcrun2015

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

winetricks dlls list

На иллюстрации видно, что в выводе присутствует описание пакетов. Это позволяет воспользоваться grep, чтобы показать только искомое, если известна часть его описания:

winetricks dlls list | grep -i "c++"

Опция «Установить шрифт».

Эта возможность требуется довольно часто. В префиксе не может быть шрифтов, которые защищены лицензией, но немало программ, которые требуют такие шрифты. К примеру, Arial и Times New Roman. Когда программа не находит в префиксе нужный шрифт и при этом не умеет использовать имеющиеся, то в ней попросту не будет отображаться текст. К примеру, это актуально для Epic Games Launcher.

Чаще всего требуется пакет шрифтов corefonts, в том числе для упомянутого Epic Games Launcher. В этот пакет как раз входят шрифты Arial, Courier и Times. Через терминал установка выглядит так:

WINEPREFIX="/home/$USER/.wine/" winetricks corefonts

В префиксе шрифты хранятся по следующему пути:

/home/$USER/.wine/drive_c/windows/Fonts/

В этот каталог можно вручную помещать шрифты в формате .ttf.

Куда winetricks скачивает пакеты перед их установкой?

Все скачанные с помощью winetricks пакеты складируются здесь:

~/.cache/winetricks/

Можно вывести весь список пакетов, которые находятся в кэше:

winetricks list-cached

Winetricks. Настройка префикса.

Вывести список настроек префикса:
winetricks settings list

Тоже самое в графическом режиме:

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

Так как с графическим режимом всё понятно, далее речь пойдёт о настройке опций через терминал.

Переключить версию Windows:
WINEPREFIX="/home/$USER/.wine" winetricks win7
По аналогии: winxp, win8, win10

Через winetricks намного удобнее и проще осуществить «изоляцию» префикса, которая рассмотрена в первой половине статьи. Основной её целью является убрать прямой доступ из префикса к домашнему каталогу Linux-пользователя и к корню системы (диск Z:). Это осуществляется следующей командой:
WINEPREFIX="/home/$USER/.wine" winetricks sandbox

Это уберёт ассоциацию каталогов Windows-пользователя с домашними каталогами Linux-пользователя, а также удалит диск Z: (путь до корня Linux из префикса). Тем самым использование программ из такого «изолированного» префикса будет несколько более безопасным. При этом рабочие файлы Windows-программ будут сохраняться внутри префикса в соответствующих каталогах Windows-пользователя.

Углубление в функционал Wine.

wineserver.

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

Справка:

man wineserver

Порой программа может зависнуть намертво, здесь поможет жёсткий перезапуск wineserver. Эффект схож с нажатием кнопки Reset. В этом случае произойдёт жёсткая перезагрузка префикса (Windows), но не основной системы (Linux). Команда выглядит так:

WINEPREFIX="/home/$USER/.wine" wineserver -k

wineboot.

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

Справка:

man wineboot

Мягкая перезагрузка префикса. Это полезно для программ, которые требуют перезагрузки ОС Windows после своей установки:
WINEPREFIX="/home/$USER/.wine" wineboot -r

Создание префикса через wineboot:

WINEPREFIX="/home/$USER/.wine-new-prefix" wineboot -i

-i — инициализировать префикс.

Альтернативный вариант:

WINEPREFIX="/home/$USER/.wine-new-prefix" wineboot -u

-u — обновить конфигурацию префикс.

taskmgr — «Диспетчер задач».

Программа «Диспетчер задач» является аналогом системного монитора (gnome system monitor и подобных):
WINEPREFIX="/home/$USER/.wine" wine taskmgr

Реестр Windows и его редактирование в Wine.

Файлы реестра system.reg, user.reg и userdef.reg создаются после конфигурирования префикса. Пример пути расположения:

/home/$USER/.wine/

Их можно редактировать любым текстовым редактором.

  • system.reg содержит ветвь HKEY_LOCAL_MACHINE.
  • user.reg — HKEY_CURRENT_USER.
  • userdef.reg — HKEY_HKEY_USERS\.Default (содержит настройки Windows-пользователя по умолчанию).

Для более удобной работы с реестром в Wine реализован аналог редактора реестра Windows — regedit. Для его запуска нужно выполнить:
WINEPREFIX="/home/$USER/.wine" regedit
Альтернативный вариант:
WINEPREFIX="/home/$USER/.wine" wine /home/$USER/.wine/drive_c/windows/regedit.exe

Примечание: Импорт рееста (куста) непосредственно из ОС Windows сломает префикс Wine.

Настройки, которыми можно управлять через winecfg и winetricks, сохраняются в реестр, а именно в HKEY_CURRENT_USER\Software\Wine:

Подробно об этом рассказывается здесь: https://wiki.winehq.org/Useful_Registry_Keys

Виртуальный рабочий стол в Wine.

Имитирует рабочий стол Windows. Обычно используется для программ, которые плохо сворачиваются (Alt + Tab) или сбивают разрешение экрана для Linux. Причём сбивают так, что приходится выполнять команду xrandr -s 0 для восстановления исходного разрешения экрана. При использовании виртуального рабочего стола Wine после завершения программы разрешение экрана восстанавливается автоматически.

Рабочий стол можно включить через winecfg:

На иллюстрации выше в отмеченном поле можно настроить разрешение вирутального рабочего стола. Можно установить такое же разрешение, как в Linux или такое, какое максимально поддерживает запускаемая программа. К примеру, игра Diablo 2 поддерживает разрешение максимум 800×600, поэтому для виртуального рабочего стола такое разрешение будет оптимальным.

Виртуальный рабочий стол запустится после повторного запуска winecfg или любой другой программы в префиксе. При этом запущенная программа будет размещена в рамках виртуального рабочего стола:

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

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

WINEPREFIX="/home/$USER/.wine" explorer /desktop="name_desktop",1920x1080 regedit

Разбор команды:

explorer — Wine-реализация проводника (файлового менеджера) Windows.

/desktop=»name_desktop»,1920×1080 regedit — создать рабочий стол с именем name_desktop и разрешением 1920×1080; запустить программу regedit — Wine-реализация программы редактирования реестра Windows.

Примечание: Можно запускать несколько виртуальных рабочих столов одновременно, но нужно дать им разные имена.

Так же вирутальным рабочим столом можно управлять через winetricks без использования winecfg.

Включение использования виртуального рабочего стола:
winetricks vd=1920x1080
Отключение:
winetricks vd=off

Если разрешение экрана всё-таки не восстановилось после завершения работы Windows-программы, то это исправит следующая команда:
xrandr -s 0

wineconsole.

Программа для работы с командной строкой в рамках префикса. Полезна для запуска программ и bat-скриптов так, как это было бы через интерпретатор командной строки Windows (cmd.exe), а так же для отладки.

Справка:

man wineconsole

Запуск командной строки Windows (cmd.exe) через wineconsole:

WINEPREFIX="/home/$USER/.wine" wineconsole cmd

Отладка.

Официальная документация:

https://wiki.winehq.org/Wine-Staging_Debug

https://wiki.winehq.org/Debug_Channels

Отключить показ диалога падения программы в Wine:
WINEPREFIX="/home/$USER/.wine" winetricks nocrashdialog

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

Вывести ход выполнения программы game.exe в файл wine-log.txt, который будет сохранён в ~/:
WINEPREFIX="/home/$USER/.wine" wine "C:/games/my_game/game.exe" &> wine-log.txt

Вывести в файл wine-log.txt только ошибки и предупреждения в ходе выполнения программы:

WINEDEBUG=-all,+err,+warn WINEPREFIX="/home/$USER/.wine" wine "C:/games/my_game/game.exe" &> wine-log.txt

Вывести в файл wine-setup-log.txt ход установки программы из установочного файла setup.exe:
WINEDEBUG=+text,+file,+reg,+relay WINEPREFIX="/home/$USER/.wine" wine "C:/setup.exe" &> wine-setup-log.txt

Вывести в файл wine-dll-log.txt список Windows-библиотек (dll), используемых в процессе запуска программы:

WINEDEBUG=+loaddll WINEPREFIX="/home/$USER/.wine" wine notepad &> wine-dll-log.txt

builtin — встроенная библиотека Wine, то есть созданная разработчиками Wine.

native — «родная» библиотека Windows.

Практика.

Нюансы запуска S.T.A.L.K.E.R. на Linux — пример варианта указания рабочего каталога вручную.

Запуск CRYENGINE 5 на Linux.

Решение проблемы «Bad serial given in setup» в Arma через редактирование реестра в префиксе.

Монтирование виртуального CD-ROM для Wine.

Использование Wine и Proton для запуска игры и сервера Conan Exiles.

Запуск Epic Games Launcher посредством Wine.

Установка русификатора для игры из Steam.

В виду того, что Proton (Steam Play) представляет собой модифицированный Wine, они хорошо совместимы между собой. Поэтому для Proton-префикса можно использовать стандартные инструменты Wine. В примере будет рассмотрена установка русификатора для Borderlands GOTY Enhanced. С нюансами подготовки игры к запуску можно ознакомиться здесь: https://www.protondb.com/app/729040

Игра по умолчанию будет установлена сюда:

/home/$USER/.local/share/Steam/steamapps/common/BorderlandsGOTYEnhanced/

Чтобы префикс игры создался, её необходимо запустить и выключить. По умолчанию префикс будет располагаться здесь:

/home/$USER/.local/share/Steam/steamapps/compatdata/729040/pfx/

То есть игра находится вне префикса. В этом особенность Proton.

Для начала установки, необходимо запустить установочный файл русификатора — Borderlands_TTL.exe.

WINEPREFIX="/home/$USER/.local/share/Steam/steamapps/compatdata/729040/pfx" wine "/home/$USER/Downloads/Borderlands_TTL.exe"

Wine может предложить установить Mono и Gecko — отказываемся, для префикса игры это ни к чему.

Должно появиться окно мастера установки:

Мастер сообщит, что не может найти игру:

Это не удивительно, так как игра находится вне префикса. Здесь есть два варианта решения:

  1. Создать в префиксе символическую ссылку на каталог игры, тогда мастер сможет обнаружить игру и продожить установку. То есть создать символическую ссылку с именем BorderlandsGOTYEnhanced по пути /home/$USER/.local/share/Steam/steamapps/compatdata/729040/pfx/drive_c/Program Files/, которая будет ссылаться на каталог с установленной игрой /home/$USER/.local/share/Steam/steamapps/common/BorderlandsGOTYEnhanced/.
  2. Указать русификатору абсолютный путь до каталога игры. На иллюстрации виден тот самый «диск Z:», который является символической ссылкой на корневой каталог Linux. Через него можно указать желаемый катлог Linux-пользователя.

После завершения установки игра будет русифицирована.

Чуть-чуть хитростей.

Каждый раз прописывать путь до префикса и программы может быть довольно утомительно. Есть несколько способов это упростить.

  • Для упрощения запуска программы из префикса рекомендую использовать shell-скрипт (sh) с командой на запуск. Cкрипт оптимально разместить в ~/.local/bin/, что позволит осуществлять запуск через терминал по имени скрипта без указания абсолютного пути до него.
    • На скрипт можно создать кнопку для меню запуска и разместить её на рабочей панели.
  • Ещё одним вариантом является использование символических ссылок. Если префикс находится на другом разделе, то для него можно создать символическую ссылку и разместить её в домашнем каталоге пользователя, что позволит сократить путь в команде. К примеру, префикс находится в /mnt/my_second_hdd/games/wine-prefix, можно создать символическую ссылку и разместить её в /home/$USER/. Пример команды работы с префиксом через символическую ссылку: WINEPREFIX="/home/$USER/wine-prefix" winecfg

Почта для предложений и замечаний: feedback@noostyche.ru

Для операционных систем на базе Linux написано огромное количество программ. Несмотря на это, иногда возникает необходимость производить запуск Windows программ под Linux. В основном, это касается игр и некоторых специализированных программ, аналоги которых в Linux отсутствуют. Кроме того, некоторые пользователи, переходя с Windows на Linux, уже привыкли к определенному набору программного обеспечения и желают его использовать в дальнейшем. В этом случае предпочтительнее все же найти аналогичные программы для Linux и освоить их, поскольку в родной операционной системе программы работают обычно лучше и стабильнее. Поэтому рекомендуем запускать Windows программы под Linux только после того, как вы убедитесь, что аналогов нужных программ под Linux нет, или они вам не подходят.

Запустить программу, написанную для Windows в Linux, можно несколькими способами: с использованием Wine и продуктов на его основе, с помощью виртуальных машин и эмуляторов: VirtualBox, VMware, Parallels Workstation, QEMU. Теоретически еще есть возможность портирования программ с Windows на Linux при наличии исходного кода и навыков программирования, но этот вариант мы здесь рассматривать не будем.

Программы под Wine обычно работают быстрее, чем в виртуальных машинах. Это особенно актуально для современных 3D игр. Wine не требует установки операционной системы и позволяет быстро менять версию системы, библиотек и другие параметры. Запускать программы можно непосредственно в среде Linux. С другой стороны, для настройки Wine все равно придется потратить некоторое время и возможно неоднократно при запуске отдельных программ и игр. В виртуальных машинах запускаются оригинальные версии Windows и прочие операционные системы, которые нужно предварительно установить и настроить. Системе выделяются определенные ресурсы компьютера, эмулируется стандартное оборудование. Перед выполнением программы нужно предварительно запустить эмулятор и загрузить операционную систему, на что требуется дополнительное время. Следует отметить, что некоторые программы имеют защиту от запуска под виртуальными машинами.

Установка Wine

Мы рассмотрим установку Wine на Ubuntu и систем на ее базе (Linux Mint, Kubuntu и т.п.).Пользователи других операционных систем могут скачать Wine и прочитать инструкции по установке здесь: http://www.winehq.org/download/

Открываем терминал комбинацией клавиш Ctrl+Alt+T. Добавляем репозиторий с Wine командой:

sudo add-apt-repository ppa:ubuntu-wine/ppa

Вводим пароль администратора. В процессе установки нужно будет нажать клавишу «Enter».

Если вы будете производить апгрейд системы, например, обновлять Ubuntu 13.10 до Ubuntu 14.04, то придется повторить вышеуказанную операцию после апгрейда, поскольку в процессе обновления нестандартные репозитории удаляются.

После добавления репозитория обновляем информацию о пакетах:

sudo apt-get update

Теперь можно установить Wine командой:

sudo apt-get install wine1.7

Установится последняя, на момент написания статьи, тестовая версия программы. Для установки старой, но более стабильной версии нужно выполнить команду:

sudo apt-get install wine1.6

Возможно, когда вы будете читать эту статью, уже появятся более новые версии, тогда вместо wine1.6 или wine1.7, надо будет устанавливать wine1.8 или wine1.9. Номер текущей версии указан на официальном сайте Wine: http://www.winehq.org

Хотя можно и не указывать версию при установке, версия Wine в этом случае будет зависеть от версии операционной системы:

sudo apt-get install wine

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

wine —version

Настройка Wine

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

winecfg

Рис. 1. Окно настроек winecfg

Это команда создаст в домашней директории пользователя каталог .wine, где будут находиться системные файлы с настройками — аналог реестра Windows и drive_c — каталог для приложений Windows. С помощью winecfg можно выбрать версии Windows по умолчанию и для отдельных приложений, версии библиотек, настроить графику и звук, интеграцию с рабочим столом, выбрать диски, с которых разрешен запуск Windows-программ.

А редактировать реестр можно с помощью привычной команды:

regedit

Рис. 2. Окно regedit под Wine

После такой первоначальной настройки, уже можно будет устанавливать и запускать программы с помощью Wine. Но многие программы работать не смогут, поскольку требуют определенных библиотек, шрифтов и т.д., которые придется установить отдельно. Для этого воспользуемся программой winetricks, которая входит в стандартный пакет программ Wine. Winetricks кроме шрифтов и библиотек позволяет также устанавливать популярные программы и игры и производить настройки Wine.

Попробуем установить Internet Explorer 7 с помощью winetricks, для этого наберем в терминале:

winetricks ie7

Подождем некоторое время, пока скачаются необходимые файлы и запустится программа-установщик, нажмем кнопку «Next» и подождем окончания установки. Для последующего запуска Internet Explorer нужно будет выполнить команду:

wine ‘C:\Program Files\Internet Explorer\iexplore’

Но лучше запускать программы из родного каталога. Переходим в каталог (если в имени файла есть пробел, то перед ним нужно ставить обратный слеш «\»):

cd ~/.wine/drive_c/Program\ Files/Internet\ Explorer/

И запускаем программу:

wine iexplore.exe

Чтобы не набирать эти команды каждый раз, можно создать простейший скрипт. Переходим в домашний каталог:

cd

Создаем файл ie.sh с помощью редактора nano:

nano ie.sh

Вставляем в файл строчки:

cd ~/.wine/drive_c/Program\ Files/Internet\ Explorer/ wine iexplore.exe

Сохраняем файл — Ctrl+O и выходим из редактора — Ctrl+X. Делаем файл исполняемым:

chmod +x ie.sh

Теперь для запуска ie достаточно набрать:

~/ie.sh

А можно скопировать файл на рабочий стол и запускать его с помощью мышки:

cp ie.sh ~/Desktop/

Установка программы с CD или DVD может быть выполнена с помощью такой команды:

wine start ‘D:\setup.exe’

Аналогичным образом можно установить другие программы и библиотеки. Также можно воспользоваться графическим интерфейсом программы, набрав winetricks без параметров. Потом выбрать «Select the default wineprefix».

Рис. 3. Основное окно winetricks

Далее выбираем действие, которое будем производить, например, установку библиотеки (Install a Windows DLL or component):

Рис. 4. Выбор действия winetricks

И отмечаем галочками библиотеки, которые необходимо установить. Можно сделать то же самое и посредством командой строки, например:

winetricks d3dx9 dotnet20

Таким образом, мы установим сразу два компонента: d3dx9 и dotnet20. Чтобы в программах корректно отображались популярные шрифты, установим их:

winetricks allfonts

С библиотеками немного сложнее. Разные программы могут потребовать отдельных настроек, определенных версий Windows и библиотек. Для этого можно создать несколько конфигураций Wine, указывая каталог с настройками с помощью переменной окружения WINEPREFIX. По умолчанию WINEPREFIX=~/.wine Для создания новых настроек в каталоге ~/.wine2 наберем:

WINEPREFIX=~/.wine2 winecfg

Таким образом, можно создать любое количество конфигураций. Для настройки и установки шрифтов и библиотек наберем:

WINEPREFIX=~/.wine2 winetricks

Для запуска установленной программы:

WINEPREFIX=~/.wine2 ‘C:/путь/к/программе/программа.exe’

Завершить выполнение программы можно с помощью команды:

killall -9 программа.exe

А чтобы завершить работу всех программ, запущенных под Wine, нужно набрать:

wineserver -k

Для удаления настроек и всех программ в префиксе ~/.wine2 нужно просто удалить каталог:

rm -r ~/.wine2

Точно также можно удалить и основной каталог Wine:

rm -r ~/.wine

Будьте внимательны, при этом удалятся также все приложения Windows, которые установлены в этот каталог!

winefile — запуск файлового менеджера, с помощью которого можно запускать Windows-приложения, копировать и удалять файлы и т.д. Узнать, какие приложения и игры запускаются под Wine и как производить настройки под конкретные приложения можно на сайте: http://appdb.winehq.org/ Сайт англоязычный. Для поиска приложений нужно выбрать в меню «Browse Apps» и ввести в поле «Name» название программы. Версии программ, которые запускаются и работают без ошибок или с несущественными проблемами, имеют рейтинг «Platinum» или «Gold». Если программа вообще не работает, то ей присваивается рейтинг «Garbage».

PlayOnLinux

PlayOnLinux — это программа, которая значительно упрощает установку и настройку Windows-приложений для запуска под Wine. Она автоматически скачивает из интернета и устанавливает все необходимые компоненты для запуска конкретных программ, а также и сами программы, если они распространяются бесплатно через интернет. В противном случае, понадобится установочный диск с программой. Устанавливаем программу любым способом, например в Ubuntu командой:

sudo apt-get install playonlinux

и запускаем ее:

playonlinux

Пользоваться программой предельно просто. Нажимаем кнопку «Установка».

Рис. 5. Основное окно PlayOnLinux

Выбираем программу, которую необходимо установить. Если не нашли нужную программу в окне выбора, можно попробовать нажать «Установить программу, отсутствующий в списке» внизу окна.

Рис. 6. Окно выбора программы PlayOnLinux

Останется несколько раз нажать кнопку «Далее», а в некоторых случаях выбрать конфигурацию программы. После установки ярлыки программ появятся в основном окне PlayOnLinux, откуда их можно будет запустить двойным кликом, либо нажатием на кнопку «Запуск». Также можно будет создать ярлыки программ Windows на рабочем столе с помощью кнопки «Ярлык».

Рис. 7. Основное окно PlayOnLinux с установленной Windows-программой FireFox

Прочие программы на базе Wine

Существуют также платные программные продукты на базе Wine. CrossOver позволяет запускать под Linux различные версии Microsoft Office, Adobe Photoshop и множество других программ и игр. WINE@Etersoft нацелен в основном на поддержку популярных программ для бизнеса: 1С:Предприятие, КонсультантПлюс, ГАРАНТ и прочих. Ознакомиться с этими программами можно на официальных сайтах: http://www.codeweavers.com/products/ http://etersoft.ru/products/wine

VirtualBox

VirtualBox — одна из самых популярных программ для виртуализации, которая позволяет запускать различные операционные системы одновременно на одном компьютере. Установку VirtualBox в Ubuntu можно выполнить стандартным способом, набрав в терминале:

sudo apt-get update

sudo apt-get install dkms

sudo apt-get install virtualbox

dkms осуществляет поддержку динамических модулей ядра (vboxdrv, vboxnetflt, vboxnetadp), которые необходимы для работы VirtualBox. В других версиях Linux для установки используются соответствующие команды (yum, urpmi и т. д.), также можно использовать установочный файл или собрать программу из исходного кода. Подробнее смотрите в статье «Как устанавливать программы в Linux». 

Скачать VirtualBox для различных операционных систем можно здесь: https://www.virtualbox.org/wiki/Downloads. После окончания установки добавим пользователя в группу vboxusers, вместо username необходимо указать корректное имя пользователя, под которым будет работать VirtualBox:

sudo usermod -a -G vboxusers username

Теперь можно запустить программу через меню, либо набрав в терминале:

virtualbox

Рис. 8. Менеджер VirtualBox с уже установленными операционными системами

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

Рис. 9. Мастер создания новой виртуальной машины

Нажмем кнопку «Вперед», введем имя виртуальной машины, например «Windows XP», а ниже выберем соответствующие тип и версию операционной системы:

Рис. 10. Выбор версии операционной системы

Мы выбрали Windows XP, поскольку она менее требовательна к ресурсам компьютера, занимает меньше места, быстрее загружается. Но поддержка этой системы уже официально прекращена. Естественно, можно установить и другие версии Windows, которые поддерживает VirtualBox: Windows Server 2003, Windows Vista, Windows Server 2008, Windows 7, Windows 8, Windows Server 2012. Далее выбираем объем ОЗУ, которое будет выделено виртуальной машине:

Рис. 11. Выбор объема памяти

Выбор зависит от версии ОС, объема физической памяти, планируемых задач, количества запускаемых одновременно гостевых систем. В зависимости от версии операционной системы, VirtualBox будет предлагать различные параметры по умолчанию, но они, как правило, минимальные, желательно их увеличить. В любом случае, для нормальной работы современных операционных систем необходимо не менее 1-2 Гигабайт ОЗУ (для Windows XP достаточно 512 Мбайт) и еще необходимо оставить память основной хост-системе. Далее создаем новый виртуальный жесткий диск или выбираем уже созданные ранее.

Рис. 12. Виртуальный жесткий диск

На следующем экране выбираем тип диска, по умолчанию стандартный VDI.

Рис. 13. Выбор типа диска

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

Рис. 14. Выбор атрибутов виртуального диска

Указываем размер диска, расположение оставляем по умолчанию (диск будет располагаться в папке ~/VirtualBox VMs/Имя системы.

Рис. 15. Выбор расположения и размера виртуального диска

Осталось нажать кнопку «Создать».

Рис. 16. Последний этап создания новой виртуальной машины

Виртуальная машины создана. Выбираем ее в менеджере VirtualBox и нажимаем кнопку «Свойства».

Рис. 17. Выбор системы

Тут можно подробно настроить созданную виртуальною машину. В первую очередь, необходимо указать диск, с которого будем ставить систему. Для этого нажимаем слева «Носители», выбираем пустой диск, справа кликаем на иконку диска и указываем образ дистрибутива, либо ставим галочку «Живой CD/DVD» и вставляем физический диск.

Рис. 18. Выбор установочного диска

Далее переходим на вкладку «Система → Материнская плата», проверяем порядок загрузки, CD/DVD-ROM должен быть выше жесткого диска. Если это не так, изменяем порядок загрузки стрелками.

Рис. 19. Настройки системы

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

Рис. 20. Настройка параметров дисплея

Переходим обратно в VirtualBox Менеджер и нажимаем кнопку «Старт». Далее производим установку системы, как обычно. После установки гостевой системы, загружаем ее и в меню «Устройства» выбираем «Установить дополнения гостевой ОС». Вместо этого можно нажать комбинацию клавиш правый Ctrl+D. После установки дополнений система будет готова к работе.

Рис. 21. Установленная и готовая к работе система Windows XP в VirtualBox

Загрузка гостевой операционной системы после запуска VirtualBox осуществляется кнопкой «Старт». Переключение указателя мышки между основной и гостевой системой осуществляется автоматически, но можно переключить принудительно с помощью кнопки правый Ctrl (Host key — можно изменить в настройках) и правый Ctrl+I. Эта же кнопка в сочетании с различными клавишами служит для выполнения ряда функций:

Host key+F — переключение в полноэкранный режим и обратно.

Host key+Del — заменяет комбинацию Ctrl+Alt+Del.

Host key+I — отключить интеграцию мышки.

Host key+С — переключение в режим масштабирования, в котором можно задать произвольный размер окна, возврат в стандартный режим происходит с помощью той же комбинации клавиш.

Host key+D — установка дополнений гостевой операционной системы.

Host key+T — сделать снимок, сохранить состояние ОС. Восстановить систему из сохраненного состояния можно будет в основном окне менеджера VirtualBox, нажав на кнопку «Снимки». Очень удобная функция для борьбы с вирусами, тестирования и отладки программ, которые могут повредить систему. Всегда можно сделать откат системы в стабильное состояние.

Host key+S — открыть окно настроек.

Host key+R — перезагрузить систему.

Host key+Q — закрыть виртуальную машину (выйти из системы).

Wine — это свободное программное обеспечение, позволяющее пользователям UNIX-подобных систем архитектуры x86 (и других архитектур, при наличии совместимости, например, AMD64) исполнять 16 и 32-битные приложения Microsoft Windows (64-битные приложения находятся в стадии ранней реализации).

  1. Установка Wine
  2. Установка DirectX с помощью Winetricks
  3. Установка необходимых библиотек
  4. Установка шрифтов
  5. Установка и удаление приложений
  1. Запуск приложений
  2. Общие настройки
  3. Неполадки
  4. Памятка
  5. Ссылки

Установка Wine

Для установки (и только для установки) воспользуйтесь терминалом суперпользователя:

sudo -s

Добавьте список репозиториев, ключ и установите Wine:

RELEASE=`lsb_release -cs`
elif [[ $RELEASE = "karmic" || $RELEASE = "jaunty" || $RELEASE = "intrepid" || $RELEASE = "hardy" ]]; then
wget -q http://wine.budgetdedicated.com/apt/sources.list.d/$RELEASE.list -O /etc/apt/sources.list.d/winehq.list
wget -q http://wine.budgetdedicated.com/apt/387EE263.gpg -O- | apt-key add -
apt-get update && apt-get install -y wine cabextract

Запустите конфигуратор wine, в домашней директории создастся папка ~/.wine/

winecfg

Пока что ничего там не стоит трогать, закройте.

Установка DirectX с помощью Winetricks

DirectX — это набор API функций, разработанных для решения задач, связанных с игровым и видеопрограммированием под Microsoft Windows, разумеется его нужно установить.

Вы можете скачать, распаковать и установить DirectX вручную.

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

  • WineSX — GUI для Ubuntu.
  • Q4Wine — GUI для Kubuntu.

Но сообщество Wine, предлагает вам более изящный вариант установки с помощью скрипта winetricks. Который помимо DirectX может ставить ряд других программ, например: .NET, Mono и даже Firefox3, и MS Windows Media Player и др. Шрифты.

Скачайте скрипт командой в терминале:

wget http://www.kegel.com/wine/winetricks

Дайте права на запуск:

chmod a+rwx winetricks

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

Для открытия графического меню, два раза кликните по скрипту и выберите: «Запустить»

Поставьте галочку против directx9 и нажмите «OK»

А так же, вы можете установить пакет из терминала:

./winetricks directx9

Для запуска скрипта winetricks по alt+F2, его следует переместить в /usr/bin

sudo mv winetricks /usr/local/bin

В терминале можно указывать сразу несколько пакетов, разделяя названия пробелом. В графическом интерфейсе программы, тоже можно выбирать несколько пакетов (используя для этого клавиши shift или ctrl).

Установка необходимых библиотек

Скачайте в домашнюю директорию несколько необходимых библиотек Windows:

  • mscoree.dll
  • streamci.dll
  • mfc42.dll

Скопируйте их в ~/.wine/drive_c/windows/system32/, перейдите в эту папку и удалите ненужные библиотеки:

cp mscoree.dll streamci.dll mfc42.dll ~/.wine/drive_c/windows/system32/ && cd ~/.wine/drive_c/windows/system32/ && rm d3d8.dll d3d9.dll ddraw.dll dsound.dll dsound.vxd quartz.dll dxdiagn.dll

При необходимости отредактируйте файл ~/.wine/user.reg

gedit ~/.wine/user.reg

В конец файла вставьте:

[Software\\Wine\\DllOverrides] 1196330736
"d3d8"="native"
"d3d9"="native"
"d3dim"="native"
"d3dx8"="native"
"d3dxof"="native"
"dciman32"="native"
"ddrawex"="native"
"devenum"="native"
"dinput"="native"
"dinput8"="native"
"dmband"="native"
"dmcompos"="native"
"dmime"="native"
"dmloader"="native"
"dmscript"="native"
"dmstyle"="native"
"dmsynth"="native"
"dmusic"="native"
"dplay"="native"
"dplayx"="native"
"dpnaddr"="native"
"dpnet"="native"
"dpnhpast"="native"
"dswave"="native"
"dxdiagn"="native"
"mscoree"="native"
"quartz"="native"
"streamci"="native"

Снова запустите конфигуратор wine:

winecfg

Перейдите на вкладку «Библиотеки», где каждый указанный из ниже приведенного списка файл отредактируйте, указывая что библиотека «Встроенная (Wine)»: d3d8, d3d9, ddrawex, dinput, dinput8.

Установка шрифтов

Для того, чтобы шрифты отображались нормально, их надо установить. Дело в том, что по умолчанию папка ~/.wine/drive_c/windows/fonts почти пустая.

Установите системные шрифты Windows:

winetricks corefonts

Вы можете дополнить коллекцию шрифтов скачав архив, распаковав и скопировав файлы *.ttf в ~/.wine/drive_c/windows/fonts

wget https://www.kobzarev.com/wp-content/uploads/wine/notes_69.tar.gz && tar xvfz notes_69.tar.gz && cp ~/fonts-cyr-win311/*TTF ~/.wine/drive_c/windows/Fonts

Удалите весь мусор из домашней директории:

rm -f mscoree.dll streamci.dll mfc42.dll notes_69.tar.gz && rm -rf fonts-cyr-win311

Если необходимо использование ttf-шрифтов всеми пользователями системы, тогда скопируйте их в папку /usr/share/wine/fonts (Ubuntu) и измените атрибуты файлов на 644:

sudo chmod 644 /usr/share/wine/fonts/*.TTF

Установка и удаление приложений

Для установки win-приложения проще всего воспользоваться файловым браузером winefile:

winefile

Достаточно перейти в необходимый каталог и запустить программу двойным щелчком мыши.

Многие win-приложения запрашивают перезагрузку для завершения установки. Разумеется, перезагружать host-систему при этом не следует.

Процедуре перезагрузки Windows, соответствует команда:

wineboot

Если в этот момент в Wine выполняются другие приложения, то рекомендуется их завершить до перезагрузки.

Для установки *.msi, воспользуйтесь командой:

msiexec /i example.msi

Для удаления win-приложения перейдите в «Приложения» — «Wine» — «Программы» — «Папка с программой» — «Uninstall»

Или воспользуйтесь утилитой uninstaller. Эта утилита выводит список установленных приложений. Чтобы удалить приложение, выберите его из списка и нажмите кнопку «Uninstall». Если приложения, которое вы хотите удалить, нет в списке, то будет достаточно просто удалить каталог с приложением (можно воспользоваться для этого программой winefile, а можно вручную, перейдя в каталог ~/.wine/drive_c/Program Files).

Запуск приложений

Если установка приложения прошла правильно, в «Приложения» — «Wine» — «Программы» появится соответствующее меню. Если по каким-то причинам этого не произошло, пробуйте запустить установленную программу через терминал.

К примеру, я запускаю из терминала установленный калькулятор:

cd "~/.wine/drive_c/Program Files/Calc"
calc.exe

Не пытайтесь запустить приложения Windows щелчком в Nautilus. Иногда этот фокус проходит, но может привести к ошибкам.

Общие настройки

Приложения:

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

Библиотеки:

По умолчанию все библиотеки в Wine используются свои. Но при установке DirectX, вы внесли там необходимые изменения.

Графика:

Для некоторых приложений может потребоваться включить или выключить вершинные и пиксельные шейдеры, может потребоваться эмуляция виртуального рабочего стола. Экспериментируйте.

Вид и интеграция:

Во вкладке «Графика», по умолчанию стоят галочки «разрешить менджеру окон управлять окнами Wine” и «разрешить менджеру окон декорировать окна», оформление win-окон будет таким же, как и у любых других приложений. При желании вы можете управлять размерами системных шрифтов и цветом десктопа.

Диски:

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

Аудио:

На ваше усмотрение. Если звук работает, то трогать там ничего не рекомендуется.

Неполадки

Если что-то прошло некорректно, рекомендуется переустановить Wine и все программы.

Для этого следует удалить директорию ~/.wine, выполнить команду winecfg и снова установить программы.

Удалять пакеты wine и wine-gecko в Synaptic не нужно.

Если у вас установлен gxNeur, следует добавить Wine в список исключений. Иначе в программах, запущенных под Wine не будет работать клавиатура.

Если вы не используете SCIM — рекомендую удалить:

sudo apt-get remove scim

Бывает что после удаления программ установленных под Wine, остаются ярлыки в меню.

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

Посмотрите и удалите тут: ~/.local/share/applications/wine/Программы

Для удаления ВСЕХ ярлычков:

sudo rm -r ~/.local/share/applications/wine/Программы

Памятка

При запуске Wine — закрывайте все работающие приложения и отключайте Compiz!

Возможно вам потребуются распаковщики *.rar, *.zip и пр.

sudo apt-get install unace rar unrar zip unzip p7zip-full p7zip-rar sharutils aish uudeview mpack lha arj cabextract file-roller

Ссылки

  • Wine — запуск Windows программ
  • Как установить русские ttf-шрифты в Wine (Ubuntu)

Wine — набор библиотек и утилит для запуска Windows программ и игр внутри Linux.

История Wine

Первая версия Wine появилась в 1993 году и изначально была разработана для запуска 16-битных приложений Windows 3.1 внутри Linux.

Основателем проекта является Боб Амштадт (Bob Amstadt). С 1994 г проект перешел под управление программиста Александра Джуллиарда (Alexandre Julliard).

Название

Название Wine (W.I.N.E) является рекурсивным акронимом фразы «Wine Is Not an Emulator» — «Вайн это не эмулятор.»

Слово wine в переводе с английского означает вино. По этой причине в терминологии программы используется понятие бутылок (см. ниже). Бутылка (или префикс) — это директория (среда) внутри которой выполняется Windows программа.

Wine это не эмулятор

Wine работает не как эмулятор и не как виртуальная машина, он не эмулирует систему Windows, не создает имитацию Windows и не пытается реализовать ее логику. Вместо этого он на лету выполняет преобразование API-вызовов Windows в POSIX-совместимые вызовы.

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

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

Wine работает не только под Linux, но и под другие POSIX-совместимые операционные системы — macOS и *BSD.

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

Среда Wine

Для текущего пользователя Wine создает в его домашней директории каталог .wine, в котором создается структура директорий аналогичная Windows.

Внутри каталога drive_c содержатся директории Program Files, ProgramData, windows, users. Там же хранится реестр.

Внутри директории windows размещаются DLL файлы (библиотеки). Это не библиотеки из Windows. Они были написаны с нуля на основе документации к Windows API и фактически реализуют функции оригинальных библиотек, но для Linux.

При работе Windows приложениям могут потребоваться дополнительные DLL библиотеки, которые не предоставлены Wine. В таком случае могут использоваться оригинальные Windows-версии таких библиотек.

Директория .wine называется «префиксом» или «бутылкой». Для некоторых программ может потребоваться создание отдельного префикса, то есть для ее работы нужны будут какие-то специфические настройки и она будет работать в среде другой директории отличной от ~/.wine. Можно создавать сколько угодно префиксов (бутылок).

Как запускать программы Windows через Wine

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

wine program.exe

Через Wine также можно запускать установщики Windows приложений и устанавливать их прямо в Linux.

wine setup.exe

Список программ и игр, работающих через Wine

На официальном сайте Wine ведется база данных программ и игр, которые можно запустить через Wine: Wine Application Database (AppDB) — https://appdb.winehq.org.

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

База данных постоянно пополняется. В ней насчитывается более 26000 приложений. Введутся списки самых популярных приложений, они делятся на Платиновые, Золотые и Серебряные. Вот некоторые из самых популярных программ и игр, работающих через Wine (конкретную версию уточняйте в базе данных AppDB):

  • Adobe Animate
  • Adobe Photoshop
  • Microsoft Office
  • Total Commander
  • Lingvo
  • 1C:Предприятие
  • Гарант
  • КонсультантПлюс
  • Final Fantasy XI Online
  • StarCraft
  • Warcraft III
  • World of Warcraft
  • Counter-Strike: Source
  • EVE Online
  • Half-Life 2
  • Magic: The Gathering Online
  • The Sims 3
  • И многие многие другие…

Использование отдельных префиксов (бутылок)

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

Префикс задается переменной WINEPREFIX.

Сначала создадим новый префикс. Выполняем команду:

WINEPREFIX="/home/pingvinus/.wine2/" winecfg

Теперь выполняем саму программу и указываем для нее новый префикс:

WINEPREFIX="/home/pingvinus/.wine2/" wine /путь/до/файла/setup.exe

Установка недостающих библиотек (утилита Winetricks)

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

Для автоматического поиска и установки библиотек была создана специальная вспомогательная утилита Winetricks.

Утилита Winetricks

Winetricks — это графическая утилита, которая умеет автоматически скачивать и устанавливать необходимые компоненты. Также, Winetricks поддерживает автоматическую загрузку и установку некоторых игр и программ (для некоторых требуется наличие оригинального диска).

Winetricks поддерживает установку более сотни различных компонентов. Среди них — .Net Framework, Mono, DirectX, DivX и XviD кодеки, шрифты Windows и многие другие.

Winetricks список библиотек для Wine

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

При первом запуске Winetricks предложит установить некоторые из часто используемых компонентов.

Заключение

На нашем сайте вы также можете ознакомиться со следующими материалами:

  • Аналоги программ Windows в Linux
  • Игровые клиенты и сервисы (эмуляторы) для Linux
  • Виртуальные машины и эмуляторы для Linux

Установка

Установка Wine в Ubuntu Linux и Linux Mint через PPA репозиторий

Wine есть в штатных репозиториях Ubuntu, но там может содержаться не самая свежая версия, поэтому рекомендуется устанавливать программу из PPA-репозитория, предлагаемого разработчиками.

Во время установки Wine дополнительно устанавливается довольно много других зависимостей (это может быть более 100 дополнительных компонентов).

Установка Wine из штатных репозиториев Ubuntu (не самая свежая версия)

Для установки Wine из штатных репозиториев Ubuntu, выполните команду:

sudo apt install wine-stable

Для установки Winetricks выполните команду:

sudo apt install winetricks

Установка Wine из PPA репозитория (рекомендуется)

Процесс установки Wine в Ubuntu Linux описан в официальном руководстве. Рассмотрим, как установить Wine в Ubuntu Linux, используя PPA репозиторий.

Если у вас 64-х битная версия системы, то нужно разрешить использование 32-х битной архитектуры. Выполняем команду:

sudo dpkg --add-architecture i386

Устанавливаем ключ для репозитория — выполняем команды:

wget -nc https://dl.winehq.org/wine-builds/winehq.key
sudo apt-key add winehq.key

Добавляем сам репозиторий. Выберите команду для вашего дистрибутива:

# Ubuntu 21.04
sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ hirsute main'

# Ubuntu 20.10
sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ groovy main'

# Ubuntu 20.04 Linux Mint 20.x
sudo add-apt-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ focal main'

# Ubuntu 18.10:
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ cosmic main'

# Ubuntu 18.04 и Linux Mint 19.x:
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ bionic main'

Далее обновляем информацию о пакетах:

sudo apt update

Устанавливаем Wine. Для установки стабильной версии выполняем команду:

sudo apt install --install-recommends winehq-stable

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

sudo apt install --install-recommends winehq-devel

Также можно установить Winetricks:

sudo apt install winetricks

Установка в Ubuntu (LinuxMint)

sudo apt install wine-stable

Установка в ArchLinux (Manjaro)

sudo pacman -S wine

Установка в Fedora

sudo dnf install wine

Установка в openSuse

sudo zypper install wine

Установка в Gentoo

sudo emerge -a virtual/wine

Разработка

Исходный код:
  • Open Source (открыт)

Языки программирования:
  • C

Программа кроссплатформенная
Работает в:

  • BSD
  • Linux
  • MacOS
  • Windows

Понравилась статья? Поделить с друзьями:
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
  • Пропал значок блютуз на компьютере windows 10
  • Поставить windows 7 sp1
  • Как перенести лицензию windows 10 на другой компьютер через учетную запись microsoft
  • Резервная копия windows 10 для чего
  • Как изменить язык по умолчанию экрана приветствия windows