Профессиональный софт для Windows неплохо живёт на Linux и без виртуальных машин, и без громоздких оболочек с многоступенчатыми меню. Достаточно трёх вещей: самого транслятора Wine, отдельного префикса под каждое приложение и утилиты Winetricks, которая докладывает недостающие библиотеки и шрифты. Ниже разобрана вся цепочка: от установки свежей версии транслятора до запуска специализированной инженерной программы. Способ универсален, ничего устанавливать поверх Wine не придётся, а все команды работают в терминале и легко переносятся в скрипты.
Транслятор системных вызовов вместо эмуляции целой операционной системы
Название Wine расшифровывается как Wine Is Not an Emulator, и это не шутка ради шутки. Транслятор не рисует внутри Linux вторую Windows и не прогоняет инструкции через программный процессор. Он перехватывает запросы Windows-программы к её библиотекам и на лету превращает их в вызовы Linux. Приложение уверено, что работает в родной системе, процессор тем временем исполняет его код напрямую, поэтому потеря скорости обычно укладывается в единицы процентов. Виртуальная машина в схожей ситуации тратит гигабайты памяти на целую гостевую систему и делит процессорные ядра между ней и хостом.
Технически схема устроена так. Программа при старте просит у системы функции из библиотек kernel32, user32 и gdi32, и Wine подставляет собственные реализации: сотни тысяч строк кода, которые ведут себя как оригинал, но внутри обращаются уже к подсистемам Linux. Проект стартовал в 1993 году, с 1994-го им руководит Alexandre Julliard, и за три десятилетия реализация добралась до зрелого состояния. Стабильные ветки выходят каждую январскую серию: Wine 8.0 в 2023 году, Wine 9.0 в 2024-м, Wine 10.0 в 2025-м. В январе 2026 года разработчики выпустили Wine 11.0, куда вошло около 6300 изменений и больше 600 исправлений ошибок.
Главные новости версии 11.0 касаются производительности и совместимости. Механизм NTSYNC научил Wine синхронизировать потоки напрямую средствами ядра Linux, и многопоточные приложения ощутимо прибавили в скорости. Завершился переход на новую архитектуру WoW64: теперь 32-битные программы работают даже там, где 32-битные системные библиотеки Linux не установлены. За работу всех процессов отвечает фоновая служба wineserver, она управляет окнами, потоками и разделяемыми ресурсами. Параллельно существуют две линии сборок: стабильная для рабочих машин и разработческая, которая к концу октября 2026 года добралась до версии 11.21. Для профессионального софта разумнее держаться стабильной ветки, там реже встречаются сюрпризы.
Установка свежей версии Wine и библиотек для 32-битных программ
Пакеты из стандартных репозиториев дистрибутивов нередко отстают на год и больше, а старые ветки заметно хуже тянут современный софт. Разработчики Wine поддерживают собственный репозиторий с актуальными сборками. На Ubuntu 24.04 и родственных системах установка выглядит так.
sudo dpkg --add-architecture i386
sudo mkdir -pm755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key
sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/noble/winehq-noble.sources
sudo apt update
sudo apt install --install-recommends winehq-stable
Первая строка подключает 32-битную архитектуру: классическая схема выполнения старых программ и часть вспомогательных утилит опираются на 32-битные библиотеки, новая архитектура WoW64 умеет обходиться и без них, но запасная палка не мешает. В строке с адресом слово noble задаёт кодовое имя выпуска, для другого релиза его меняют на своё, например jammy. Вместо пакета winehq-stable можно поставить winehq-devel, если требуется проверить исправление из свежей разработки, однако для рабочих инструментов такая смелость обычно не оправдана.
Проверка версии занимает секунду.
wine --version
Команда должна ответить строкой вида wine-11.0. Пользователям Fedora и Arch повезло больше: там свежие сборки доезжают быстрее.
# Fedora
sudo dnf install wine winetricks cabextract unzip
# Arch
sudo pacman -S wine winetricks cabextract unzip
Пользователям Ubuntu пакеты cabextract и unzip тоже пригодятся: без них Winetricks не сумеет распаковать скачанные компоненты. Дополнительно стоит поставить winbind, он нужен программам, которые проверяют сетевые учётные записи Windows.
Отдельный префикс как изолированная директория для каждого приложения
Всё, что Wine создаёт и изменяет, живёт внутри префикса, он же изолированная директория с собственным диском C, реестром и настройками. По умолчанию используется каталог ~/.wine, и именно там новички неосмотрительно смешивают десяток программ, после чего одна кривая установка ломает остальные. Правильная привычка звучит проще: одна программа или один проект, один префикс. Испорченное окружение в таком случае удаляется целиком, не задевая соседей.
Каталог задаётся переменной WINEPREFIX, и её удобно прописывать прямо в команде.
export WINEPREFIX="$HOME/prefixes/cad"
wineboot -u
Утилита wineboot разворачивает внутри каталога диск C с папками Windows и Program Files, создаёт реестр и ссылки на системные шрифты. Внутри легко убедиться, что префикс действительно автономен: там лежит подкаталог drive_c с диском C, каталог dosdevices с буквами дисков и файлы system.reg с user.reg, в которых хранится реестр. Буква Z автоматически указывает на корень Linux, поэтому файлы из домашнего каталога программа видит по пути вида Z:\home\user\docs, и это удобно для обмена данными без копирования. Переменную WINEPREFIX имеет смысл прописать в ~/.bashrc, тогда каждую команду можно будет писать короче.
Отдельная история со старыми 32-битными программами. Чистые 32-битные префиксы, которые раньше создавались через WINEARCH=win32, начиная с Wine 11.0 считаются устаревшими: разработчики готовят их к постепенному удалению. Классическим вариантом остаётся обычный 64-битный префикс, а переменная WINEARCH со значением wow64 заставляет Wine работать в новом режиме даже там, где по умолчанию включён старый.
WINEARCH=wow64 WINEPREFIX="$HOME/prefixes/old-app" wine winecfg
Такой префикс принимает старые 32-битные инсталляторы и при этом остаётся на поддержке новых версий транслятора.
Базовая настройка winecfg перед установкой программ
Панель управления открывается той же командой, что и любая программа.
WINEPREFIX="$HOME/prefixes/cad" wine winecfg
Самое важное находится на вкладке Приложения. Там задаётся версия Windows для всего префикса и для конкретных исполняемых файлов: нажать кнопку Добавить приложения, выделить нужный файл в списке и выбрать, скажем, Windows 10, если разработчик заявлял поддержку только новых систем. Программы внутри одного префикса могут работать под разными версиями, и они друг другу не мешают. Вкладка Библиотеки управляет тем, какую реализацию динамической библиотеки Wine подставит: встроенную или родную, скопированную из Windows. Приём выручает, когда программа требует настоящую библиотеку, а транслятор упрямо подставляет свою заглушку.
На вкладке Графика включается оконный режим и виртуальный рабочий стол: Wine рисует программу внутри отдельного окна фиксированного размера, и та перестаёт растягивать панели на весь экран или уводить элементы за края монитора. Тот же эффект из терминала даёт команда.
wine explorer /desktop=shell,1600x900 "C:\Program Files\App\app.exe"
Ещё одна типовая операция выполняется без панели: если Wine при первом запуске настойчиво предлагает установить Gecko или Mono, а программе они не нужны, запрос отключают переменной окружения.
WINEDLLOVERRIDES="mscoree,mshtml=" wine app.exe
Это безопасно: переменная лишь запрещает подставлять встроенные заглушки mscoree и mshtml, которые и провоцируют назойливое окно. Вкладка Диски показывает соответствие букв и каталогов Linux, там же добавляются сетевые пути, а вкладка Звук позволяет сменить звуковую подсистему, если программа жалуется на отсутствие аудио.
Winetricks добавляет шрифты, библиотеки и компоненты, которых не хватает
Wine реализует тысячи функций Windows API, но не все, и часть библиотек разработчики сознательно не встраивают из-за лицензий. Пробелы закрывает Winetricks, скрипт-помощник, который скачивает нужные компоненты и тихо устанавливает их в выбранный префикс. В графическом меню он тоже умеет, однако в терминале работает быстрее и предсказуемее.
Базовая схема выглядит так.
sudo apt install winetricks cabextract unzip
WINEPREFIX="$HOME/prefixes/cad" winetricks corefonts vcrun2019 gdiplus
Компоненты перечисляются через пробел, устанавливаются по очереди, каждый со своим диалогом лицензии. Список уже поставленного показывает команда winetricks list-installed, выполненная с той же переменной WINEPREFIX. Пакет Winetricks из репозиториев Ubuntu обычно отстаёт от актуального, поэтому при странностях скрипт обновляют вручную: свежий файл скачивается с репозитория проекта, после чего sudo make install кладёт его в систему.
Для профессиональных программ чаще всего требуются такие компоненты:
- corefonts ставит базовые шрифты Microsoft, без которых интерфейс старых программ и диалоговые окна показывают квадраты вместо букв;
- vcrun2019 добавляет библиотеки Visual C++ 2015-2019, на которых собрана половина современных инсталляторов и программных комплексов;
- dotnet48 поднимает среду .NET Framework 4.8, она нужна бухгалтерским и инженерным программам с тяжёлыми формами и отчётами;
- d3dcompiler_47 обновляет компилятор шейдеров, его просят трёхмерные пакеты и программы визуализации;
- gdiplus подключает графическую подсистему GDI+, без неё криво рисуются диаграммы, схемы и предпросмотр документов.
Тяжёлые пакеты ставятся по одному и занимают несколько минут.
WINEPREFIX="$HOME/prefixes/office" winetricks dotnet48
Запуск профессионального софта и диагностика типичных проблем
Дальше всё похоже на обычную установку в Windows. Инсталлятор запускается командой.
WINEPREFIX="$HOME/prefixes/cad" wine "$HOME/Загрузки/designer-setup.exe"
Мастер установки ведёт себя как в родной системе: пользователь соглашается с лицензией и выбирает каталог, а по окончании Wine создаёт ярлык на рабочем столе Linux. Запуск установленной программы выполняется через путь внутри диска C.
WINEPREFIX="$HOME/prefixes/cad" wine "C:\Program Files\Designer\bin\designer.exe"
Кавычки обязательны, если в пути встречаются пробелы, а им там хватает места, ведь Windows-программы любят раскладываться по длинным папкам вроде Program Files. Удаляют софт не руками, а встроенным деинсталлятором.
wine uninstaller
Откроется окно со списком установленных программ, знакомое по Windows. Реестр правится через wine regedit, если программа хранит лицензионные данные или адрес сервера в своих ветках.
Если программа капризничает, терминал становится главным инструментом диагностики. Wine сыплет туда сообщения двух видов. Строки fixme перечисляют функции, которые работают частично или ещё не дописаны, и обычно их можно игнорировать. Строки err указывают на реальные проблемы: отсутствующую библиотеку, отказ в доступе, нехватку шрифтов. Имя сбойной библиотеки из сообщения err подставляется на вкладку Библиотеки в winecfg или в переменную WINEDLLOVERRIDES, и довольно часто программа оживает после одного такого перекрытия.
Перед экспериментами префикс полезно упаковать в архив, это занимает минуты.
tar -czf cad-prefix-backup.tar.gz -C "$HOME/prefixes" cad
Когда что-то пошло наперекосяк, фоновая служба останавливается командой wineserver -w, которая ждёт завершения всех процессов, либо wineserver -k, которая останавливает их сразу. В крайнем случае префикс просто удаляют и создают заново, потеряв пару минут, и именно в этом смысл изолированной директории: испорченное окружение не тянет за собой ни систему, ни соседние программы. Отчёты о совместимости конкретных приложений собраны в базе AppDB, там же лежат готовые рецепты перекрытий библиотек от тех, кто уже проделал этот путь.
Практика показывает: после пары настроенных префиксов потребность в графических оболочках отпадает сама. Терминальная команда с WINEPREFIX короче любого меню, повторяема, переносится в скрипт развёртывания рабочего места и не прячет от пользователя ни одного шага. Именно за такое прямое управление Wine и ценят те, кто каждый рабочий день гоняет на Linux специализированный профессиональный софт.