Перейти к содержимому

Как запустить exe через wine

  • автор:

Как запустить exe на Linux

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

Программ, для решения узкоспециализированных задач, например, в той же сфере СЕО для Linux попросту нет, а игры начали появляться только последние несколько лет. Были и раньше простенькие игры с открытым исходным кодом, но популярные игры, класса ААА начали появляться только тогда, когда этой платформой заинтересовалась Valve. Но до сих пор ситуация с играми обстоит не так, как хотелось бы. Поэтому и возникает необходимость установки Windows программ в Linux.

Table of Contents

  • Немного теории
  • Основы использования Wine
  • Запуск exe программ в Linux с помощью wine
  • Упрощённая установка exe в Linux
  • Запуск Windows программ в виртуальной машине
  • Выводы

Немного теории

Windows программы не могут запускаться просто двойным щелчком по исполняемому файлу. Формат исполняемых файлов Linux очень сильно отличается от Windows. Поэтому для их запуска необходимо использовать специальное программное обеспечение — wine. Название Wine образовано с помощью, почему-то популярного в мире свободного программного обеспечения способа — рекурсивный акроним, и расшифровывается как Wine is not emultor. И это правда, wine не является эмулятором.

Это программная оболочка, которая преобразует системные вызовы Windows программ в вызовы функций операционной системы Linux. Таким образом, wine представляет из себя прослойку между Windows программой и операционной системой Linux вместе с ее ядром и библиотеками.

Чтобы понять как работает Wine, нужно сначала сказать несколько слов о ядре Windows. У Windows, так же как и у Linux есть ядро. Как вы знаете ядро Linux состоит из одного файла и находится в папке boot. Ядро Windows совсем другое, по сути это набор dll библиотек, которые расположены в папке C:\windows\system32. Поэтому нам, чтобы заставить Windows программы работать в Linux достаточно реализовать dll библиотеки, которые нужны программе, так чтобы они вызывали необходимые нам функции из системы linux, что собственно и делает Wine. Но проект развивается очень медленно и разработчики не успевают реализовать все функции из системных библиотек Windows, поэтому работают далеко не все программы, особенно новые.

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

Основы использования Wine

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

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

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

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

Чтобы задать архитектуру используйте переменную WINEARCH. Например, для х86:

Также не создавайте папку для нового префикса с помощью mkdir или файлового менеджера, пусть программа сама создаст эту папку при своем первом запуске.

Прослойка совместимости Wine поддерживает далеко не все программы, чтобы проверить поддерживается ли программа Wine вы можете воспользоваться сайтом appdb.winehq.org здесь есть поиск и перечислены все поддерживаемые и не очень программы для Linux.

Запуск exe программ в Linux с помощью wine

Первым делом, надо посмотреть страницу программы на сайте appdb.winehq.com. Здесь есть поиск, поэтому вы можете попытаться искать нужную программу. Например, я хочу установить довольно популярную программу Notepad++. Cначала надо посмотреть поддерживается ли она Wine. Для этого на сайте есть поиск:

На странице программы есть версия Wine, с которой она была протестирована, версия тестируемой программы, а также оценка. Оценка может быть Platinum, Gold, Silver или ниже, она зависит от того насколько хорошо программа работает:

Как видите, программа тестировалась с версией wine 5.0 и работала довольно неплохо. К тому же на странице есть ссылка на загрузку программы, так как она бесплатна. Если при запуске программы возникают сложности, то на странице winehq обычно сообщается что надо сделать чтобы программу всё-таки запустить.

Если вам нужно запустить программу, полностью поддерживаемую Wine, например, проводник или notepad, достаточно выполнить:

$ wine /адрес/файла/программы.exe

Например, для программы Notepad++ надо выполнить:

Здесь я использую portable версию, её надо перед этим скачать и распаковать. Как видите, программа полностью работает:

Но как я уже говорил, нам придется запускать мало таких программ, большинство из них будут требовать функциональности, которая ещё не реализован в wine. Тогда нам придется заменить библиотеки Wine, на оригинальные библиотеки Windows.

Конечно, есть оболочки для Wine, которые автоматизируют этот процесс, например, Crossover, PlayOnLinux, Lutris и другие. Но мы рассмотрим ручной вариант.

Для установки компонентов Windows в wine существует специальный инструмент — winetricks. Устанавливать его лучше из сайта программы, так версия будет новее:

wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
chmod +x winetricks

Чтобы установить нужный компонент достаточно передать имя этого компонента:

$ winetricks имя_компонента

С установкой компонентов более-менее понятно, но как узнать какие компоненты нужны? Скорее всего, вашу программу уже пытались устанавливать и другие пользователи нашли решение проблемы. Поэтому воспользуйтесь поиском Google для того, чтобы найти способы установки программы. Также очень полезным будет сайт appdb.winehq.org.

Давайте рассмотрим пример. Наберите в поиске по appdb.winehq.com программу Internet Explorer 8, это последняя версия программы, которую можно установить в Linux. Как видите, здесь бронза, значит программа поддерживается:

На её странице сообщается, что программа работает, но для её работы надо установить компонент msxml и urlmon:

winetricks msxml6 urlmon

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

После установки вы можете её запустить:

Выглядит всё не очень, но зато работает. Инструкции не обязательно искать только на winehq, это могут быть различные форумы, блоги и так далее.

Остается вопрос, что же делать, если инструкций нет, информации минимум, а нужно чтобы программа работала. Мы можем анализировать вывод Wine при запуске программы. Причем нас будут интересовать не все сообщения из лога программы, а только последние, именно то что вызвало ошибку. Например если программа вывела:

fixme:richedit:ITextRange_fnEndOf (0xa04410)->(6 0 (nil)): stub
fixme:richedit:ITextRange_fnEndOf (0xa04410)->(6 0 (nil)): stub
fixme:richedit:ITextRange_fnEndOf (0xa04410)->(6 0 (nil)): stub

Осталось понять, что такое richedit, и Microsoft TechNet нам любезно сообщает что это их API и состоит оно из Riched32.dll, это последняя версия, но раньше это была riched20.dll, уже понимаете какие библиотеки нужны?

Их можно установить с помощью winetricks, но это делать необязательно, можно и вручную. Скачайте библиотеки, найти их не составит труда с помощью Google. Только ищите версию для Windows XP.

Копируем библиотеку в наш префикс, в папку system32:

cp ~/Загрузки/riched32.dll ~/program/drive_c/windows/system32/

cp ~/Загрузки/riched20.dll ~/program/drive_c/windows/system32/

Для 64 битных библиотек используется папка syswow64, а поскольку мы указали архитектуру 32 бит нужно и библиотеки использовать соответствующие. Затем запустите winecfg и на вкладке библиотеки, в поле новое замещение для библиотеки наберите *riched32, затем добавить и *riched20 и опять добавить:

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

Таким образом, вы можете заменить много библиотек Wine. Можно запустить практически любую программу, написанную несколько лет назад и не требующую сверх новых технологий. Достаточно только заменить нужные библиотеки. Вы можете не только использовать winetricks или копировать библиотеки из интернета, но и брать их прямо из Windows. Точно не стоит заменять gdi32.dll, kernel32.dll, и user32.dll — эти библиотеки реализуют функции ядра Windows на самом низком уровне, и если их заменить, это только нарушит работу Wine. Наверное, есть и другие библиотеки, которые нельзя заменять, но это вычисляется только путем экспериментов.

Упрощённая установка exe в Linux

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

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

Запуск Windows программ в виртуальной машине

Если ни один из перечисленных выше способов вам не помог, осталось только последнее решение. Оно поможет, при условии, что у вас мощный компьютер. Вы можете установить виртуальную машину VirtualBox, затем установить туда Windows и уже там запускать вашу программу. Можно пойти ещё дальше и сделать из старого компьютера сервер, на котором будет запущена Windows, к которой вы сможете подключаться по VNC или RDP и делать там всё, что угодно. Это не совсем способы запуска exe в Linux, однако это решение будет работать почти всегда, где не будет работать wine.

Выводы

Теперь вы знаете как запустить exe на Linux. Не пренебрегайте инструментами упрощения установки вроде PlayOnLinux. Они очень сильно экономят ваше время, так как имеют уже готовые профили для многих программ. Экспериментируйте и пусть ваши программы работают без ошибок!

Как запустить exe на Linux — описание всех возможных способов

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

Как запустить exe на Linux и возможно ли это сделать

Сразу же стоит сказать, что установочные файлы из операционной системы Линукс не поддерживаются на Виндовс и наоборот, а значит, запустить их не получится ни на Ubuntu, ни на Kali, ни на Mint, нигде. Каждая из этих систем является непосредственным потомком Линукс, а она создана на основе Unix, которая априори не может работать с файлами COM и EXE, которые запускаются на Виндовс любой версии.

Окно свойств приложения

Стандартными средствами выполнить запуск этих инсталляционных пакетов и документов не получится, а вот если попробовать установить программу эмулятор Виндовс для Линукс, есть определенный шанс на успех. Таких решений есть несколько, но наиболее распространенным, стабильным и удобным является Wine. Оно работает в качестве простого слоя совместимости с API от Windows.

Важно! Wine позволяет запустить не все программы Windows на Linux, так как он все еще активно развивается и дополняется новыми функциями. Несмотря на это, базовые программы с Винды на нем идут без каких-либо нареканий. Установить Вайн можно через классический репозиторий ПО.

Установка программного обеспечения через командную строку из стандартного репозитория

Что такое Wine для Линукс

Wine представляет собой специализированное программное обеспечение, которое позволяет выполнять запуск классический приложений для Виндовс (с расширением *.exe) в среде любого дистрибутива Линукс. Об этом приложении слышали многие пользователи Unix-подобных систем и в некоторой степени оно помогло сэкономить их кучу времени.

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

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

Первый запуск и настройка программы Wine

Немаловажный вопрос заключается в том, где и как взять новую версию программного продукта. Если говорить проще, то существует три версии Wine: Stable – стабильная версия без вылетов и багов, которая устанавливается в большинстве случаев, Beta – бета-релиз, являющийся тестовым, и Development Release – особая версия для разработчиков программного обеспечения. Сравнительно недавно была произведена оптимизация всех модулей программы, поэтому можно смело устанавливать любую версию, начиная с 1.6.2.

Использование эмулятора Виндовс для Линукс

Необходимо разобрать вопрос о том, как установить EXE на Linux и пользоваться их без каких-либо ограничений. Для этого будет использована программа Wine, которая есть в некоторых дистрибутивах по умолчанию. Далее будет рассказано, как происходит установка, запуск и настройка Wine (Linux эмулятора Windows).

Установка Wine

Наиболее популярный способ установки Wine основан неиспользовании менеджера приложений. Он имеется на некоторых дистрибутивах, основанных на Debian или RedHat. Для этого необходимо:

  1. Перейти в главное меню операционной системы, нажав по соответствующей клавише.
  2. Запустить оттуда программу под названием «Менеджер приложений».
  3. В поисковой строке написать «Wine» и нажать на клавишу ввода.
  4. Просмотреть результаты внизу, найти нужный и нажать на кнопку «Установить», находящуюся около программы.
  5. Произвести проверку подлинности учетной записи и ввести ее пароль.
  6. Дождаться окончания установки, которая может длиться пару минут.

Запуск Windows приложений в Linux

Запуск и настройка Wine

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

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

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

Запуск приложений Windows на Linux через Wine

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

На данный момент Wine поддерживает огромное количество различных приложений с Виндовс, но лучше все же пользоваться списками. Там можно точно узнать, работает ли ПО под Вайн, как оно работает и не нужны ли «танцы с бубном» для запуска. Иногда встречается такое ПО, которое работает не совсем гладко или для его настройки приходится попотеть. Некоторые программы не работают вовсе.

Что касается игр, то тут ситуация складывается аналогичным образом. Часть проектов может работать без проблем, для некоторых нужны дополнительные настройки, а часть не будет работать ни под каким предлогом. Также в играх обязательна поддержка ДиректХ. Вначале Вайн поддерживал только девятую версию, но потом начался ввод DirectX 10 и 11. В 2015 году под ними не работало ничего, но ближе к 2019 году поддержку получили многие проекты.

Важно! Еще одной проблемой запуска является производительность в играх и 3D-приложениях. Если с программами, работающими с OpenGL все более-менее нормально, то ДиректХ явно теряет производительность, но это обещают исправить.

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

  1. Скачивают или переносят на флешке необходимый файл с расширением EXE.
  2. Нажимают по нему правой клавишей мыши и выбирают пункт контекстного меню под названием «Открыть файл в другом приложении».
  3. В новом диалоговом окне выбирают строку «Wine – загрузчик Виндовс программ».
  4. Дожидаются открытия нового окна, в котором можно полноценно управлять программой, если она поддерживается Wine.

Если ПО портативное, то с ним работают сразу же, иначе – производят установку.

Выбор файла для загрузки в режиме «Emulator Windows»

Таким образом, было рассмотрено, как в Линуксе запустить файл с расширением EXE. На самом деле это очень просто сделать не только на Убунту, но и на Кали или Минте. Сам по себе Wine представляет оболочку Windows, которая взаимодействует с ней через тоннель API-функций. После установки ПО будет работать в фоновом режиме, и ожидать запуска EXE программ и установщиков.

Как запустить exe через wine

Не можете найти адекватную замену определенного приложения для Windows в Linux? Лучшим решением данной проблемы является организация двойной загрузки в процессе установки Linux. В этом случае вы всегда сможете загрузить Windows для работы с необходимым приложением. Также вы можете воспользоваться менеджером виртуальных машин VirtualBox для установки Windows в рамках виртуальной машины, работающей в Linux.

Но существует и третье решение, которое не может быть рекомендовано начинающим пользователям: вы можете установить эмулятор Windows в Linux Mint, Ubuntu и Fedora. Wine является сложным приложением, позволяющим запускать многие (но не все) приложения для Windows в Linux. По своей сути, это небольшое технологическое чудо.

Однако, данное технологическое чудо имеет один серьезный недостаток: благодаря Wine в Linux могут запускаться не только полезные приложения для Windows, но и некоторые вредоносные программы, разработанные специально для Windows.

1. Проблемы с безопасностью системы

Несмотря на то, что все вредоносное программное обеспечение для Windows не сможет получить доступ к файлам вашей системы (Wine работает с правами обычного пользователя, а не пользователя root), ему доступны все файлы из вашей домашней директории. А в этой директории обычно хранятся документы, музыка, фотографии и так далее. Разумеется, это серьезная проблема безопасности.

По этой причине я не рекомендую Wine начинающим пользователям. Я считаю, что лучше не увлекаться установкой эмуляторов, если вас беспокоит безопасность вашей системы, и сам не устанавливаю их при отсутствии веских оснований. Для тестирования сборок своих программ для Windows я использую Windows 7 в виртуальной машине VirtualBox (об этом будет сказано позднее).

2. Дополнительно защитить Wine практически невозможно

Несмотря ни на что желаете использовать Wine? В этом случае следует помнить о том, что файлы в вашей домашней директории будут подвержены теоретической опасности, которую невозможно свести к нулю. Даже при изменении стандартной директории Wine и ограничении количества доступных «дисков» файлы из вашей домашней директории не будут полностью защищены.

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

3. Что еще можно сделать в том случае, если нужно использовать приложения для Windows?

Вам нужно использовать некоторые приложения для Windows и вы не желаете использовать Wine? В этом случае вы можете либо организовать двойную загрузку на своем компьютере для загрузки Windows при необходимости, либо установить бесплатную лицензионную версию Windows 7 в виртуальной машине VirtualBox в Linux.

4. Установка Wine с графической оболочкой PlayOnLinux

Если вы все же решились установить эмулятор Wine, вы можете установить вместе с ним простую графическую оболочку PlayOnLinux. Для этого следует открыть окно терминала и ввести в него следующую команду:

Linux Mint/Ubuntu:

sudo apt-get install playonlinux

Fedora:

sudo dnf install playonlinux

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

5. PlayOnLinux: установка поддерживаемого приложения

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

B. Теперь вы можете выбрать приложение для установки. Для этого следует нажать на кнопку «Установка» на панели инструментов основного окна приложения. В результате откроется окно с разделенным на категории списком поддерживаемых приложений, с помощью которого вы сможете выбрать интересующее вас приложение.

Pol1

C. Для установки поддерживаемого приложения достаточно выбрать его, нажать на кнопку «Установить» и ответить на вопросы мастера установки. PlayOnLinux самостоятельно загрузит подходящую для его запуска приложения версию Wine и подготовит рабочее окружение. Процесс установки может занять некоторое время.

Pol2

D. После успешного окончания установки приложения следует выбрать приложение из списка в главном окне PlayOnLinux и нажать на кнопку «Запуск» на панели инструментов.

Pol3

E. В результате приложение должно запуститься и корректно функционировать.

Pol4

6. PlayOnLinux: установка неподдерживаемого приложения

A. В том случае, если после запуска PlayOnLinux вы не можете найти необходимое вам приложение в списке поддерживаемых приложений, вы можете установить это приложение вручную, перейдя по ссылке «Установить программу, отсутствующую в списке» в нижней части окна со списком приложений. В результате будет запущен мастер ручной установки.

B. Давайте попробуем установить игру NOLF 2. На вопрос «Что бы вы хотели сделать?» следует ответить «Установить программу на новый виртуальный диск».

Pol5

Далее следует указать название приложения без пробелов.

Pol6

C. В случае NOLF 2 потребуется определенная версия Wine и дополнительные библиотеки.

Pol7

Для начала вы можете выбрать системную версию Wine и одну из библиотек времени исполнения (выпущенную во время выпуска приложения), а после окончания процесса установки игры доустановить нужную версию Wine («1.5.22-vertex-blending-1.5.21 (x86)» для NOLF2), а также нужные библиотеки («vcrun6» и «vcrun2005» для NOLF2). Информацию о совместимой версии Wine, а также о необходимых для запуска приложения библиотеках можно получить в базе данных приложений проекта Wine.

Pol8

D. Далее нужно просто выбрать файл установщика и приступить к установке.

Pol9

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

Pol10

F. Осталось настроить окружение исполнения игры и проверить его работоспособность. Если вы ошиблись с выбором версии Wine или библиотек, вы всегда можете исправить ситуацию, нажав на кнопку «Настроить» на панели инструментов в главном окне PlayOnLinux. С помощью вкладки «Wine» вы можете установить нужную версию Wine (не забудьте также изменить версию на вкладке «Основные»).

Pol11

C помощью вкладки «Установка компонентов» несложно установить все необходимые библиотеки.

Pol12

G. Если для игры были выпущены какие-либо патчи, следует перейти на вкладку «Разное», нажать на кнопку «Выполнить файл .exe на этом виртуальном диске», выбрать файл патча и следовать инструкциям мастера установки. Для модификации файлов в ручном режиме предназначена кнопка «Открыть каталог программы» на этой же вкладке.

Pol13

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

Pol14

Pol15

7. PlayOnLinux: удаление приложения

Если вам более не требуется какое-либо из установленных приложений, вы можете выбрать его из списка приложений в главном окне PlayOnLinux, нажать на кнопку «Удалить» на панели инструментов и ответить на простые вопросы мастера удаления виртуального диска.

8. Хотите ознакомиться с дополнительными советами?

Хотите узнать о других настройках и приемах работы с Linux-системами? На данном веб-сайте размещено большое количество подобных материалов.

Как запустить exe через wine

Рано или поздно может понадобиться запустить exe файл на Linux. В этой статье расскажем, как это сделать.

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

Программ, для решения узкоспециализированных задач, например, в той же сфере СЕО для Linux попросту нет, а игры начали появляться только последние несколько лет. Были и раньше простенькие игры с открытым исходным кодом, но популярные игры, класса ААА начали появляться только тогда, когда этой платформой заинтересовалась Valve. Но до сих пор ситуация с играми обстоит не так, как хотелось бы. Поэтому и возникает необходимость установки Windows программ в Linux.

Немного теории

Windows программы не могут запускаться просто двойным щелчком по исполняемому файлу. Формат исполняемых файлов Linux очень сильно отличается от Windows. Поэтому для их запуска необходимо использовать специальное программное обеспечение – wine. Название Wine образовано с помощью, почему-то популярного в мире свободного программного обеспечения способа – рекурсивный акроним, и расшифровывается как Wine is not emultor. И это правда, wine не является эмулятором.

Это программная оболочка, которая преобразует системные вызовы Windows программ в вызовы функций операционной системы Linux. Таким образом, wine представляет из себя прослойку между Windows программой и операционной системой Linux вместе с ее ядром и библиотеками.

Чтобы понять как работает Wine, нужно сначала сказать несколько слов о ядре Windows. У Windows, так же как и у Linux есть ядро. Как вы знаете ядро Linux состоит из одного файла и находится в папке boot. Ядро Windows совсем другое, по сути это набор dll библиотек, которые расположены в папке C:windowssystem32. Поэтому нам, чтобы заставить Windows программы работать в Linux достаточно реализовать dll библиотеки, которые нужны программе, так чтобы они вызывали необходимые нам функции из системы linux, что собственно и делает Wine. Но проект развивается очень медленно и разработчики не успевают реализовать все функции из системных библиотек Windows, поэтому работают далеко не все программы, особенно новые.

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

Основы использования Wine

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

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

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

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

Чтобы задать архитектуру используйте переменную WINEARCH. Например, для х86:

Также не создавайте папку для нового префикса с помощью mkdir или файлового менеджера, пусть программа сама создаст эту папку при своем первом запуске.

Прослойка совместимости Wine поддерживает далеко не все программы, чтобы проверить поддерживается ли программа Wine вы можете воспользоваться сайтом appdb.winehq.org здесь есть поиск и перечислены все поддерживаемые и не очень программы для Linux.

Запуск exe программ в Linux с помощью wine

Первым делом, надо посмотреть страницу программы на сайте appdb.winehq.com. Здесь есть поиск, поэтому вы можете попытаться искать нужную программу. Например, я хочу установить довольно популярную программу Notepad++. Cначала надо посмотреть поддерживается ли она Wine. Для этого на сайте есть поиск:

На странице программы есть версия Wine, с которой она была протестирована, версия тестируемой программы, а также оценка. Оценка может быть Platinum, Gold, Silver или ниже, она зависит от того насколько хорошо программа работает:

Как видите, программа тестировалась с версией wine 5.0 и работала довольно неплохо. К тому же на странице есть ссылка на загрузку программы, так как она бесплатна. Если при запуске программы возникают сложности, то на странице winehq обычно сообщается что надо сделать чтобы программу всё-таки запустить.

Если вам нужно запустить программу, полностью поддерживаемую Wine, например, проводник или notepad, достаточно выполнить:

$ wine /адрес/файла/программы.exe

Например, для программы Notepad++ надо выполнить:

Здесь я использую portable версию, её надо перед этим скачать и распаковать. Как видите, программа полностью работает:

Но как я уже говорил, нам придется запускать мало таких программ, большинство из них будут требовать функциональности, которая ещё не реализован в wine. Тогда нам придется заменить библиотеки Wine, на оригинальные библиотеки Windows.

Конечно, есть оболочки для Wine, которые автоматизируют этот процесс, например, Crossover, PlayOnLinux, Lutris и другие. Но мы рассмотрим ручной вариант.

Для установки компонентов Windows в wine существует специальный инструмент – winetricks. Устанавливать его лучше из сайта программы, так версия будет новее:

wget https://raw.githubusercontent.com/Winetricks/winetricks/master/src/winetricks
chmod +x winetricks

Чтобы установить нужный компонент достаточно передать имя этого компонента:

$ winetricks имя_компонента

С установкой компонентов более-менее понятно, но как узнать какие компоненты нужны? Скорее всего, вашу программу уже пытались устанавливать и другие пользователи нашли решение проблемы. Поэтому воспользуйтесь поиском Google для того, чтобы найти способы установки программы. Также очень полезным будет сайт appdb.winehq.org.

Давайте рассмотрим пример. Наберите в поиске по appdb.winehq.com программу Internet Explorer 8, это последняя версия программы, которую можно установить в Linux. Как видите, здесь бронза, значит программа поддерживается:

На её странице сообщается, что программа работает, но для её работы надо установить компонент msxml и urlmon:

winetricks msxml6 urlmon

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

После установки вы можете её запустить:

Выглядит всё не очень, но зато работает. Инструкции не обязательно искать только на winehq, это могут быть различные форумы, блоги и так далее.

Остается вопрос, что же делать, если инструкций нет, информации минимум, а нужно чтобы программа работала. Мы можем анализировать вывод Wine при запуске программы. Причем нас будут интересовать не все сообщения из лога программы, а только последние, именно то что вызвало ошибку. Например если программа вывела:

fixme:richedit:ITextRange_fnEndOf (0xa04410)->(6 0 (nil)): stub
fixme:richedit:ITextRange_fnEndOf (0xa04410)->(6 0 (nil)): stub
fixme:richedit:ITextRange_fnEndOf (0xa04410)->(6 0 (nil)): stub

Осталось понять, что такое richedit, и Microsoft TechNet нам любезно сообщает что это их API и состоит оно из Riched32.dll, это последняя версия, но раньше это была riched20.dll, уже понимаете какие библиотеки нужны?

Их можно установить с помощью winetricks, но это делать необязательно, можно и вручную. Скачайте библиотеки, найти их не составит труда с помощью Google. Только ищите версию для Windows XP.

Копируем библиотеку в наш префикс, в папку system32:

cp ~/Загрузки/riched32.dll ~/program/drive_c/windows/system32/

cp ~/Загрузки/riched20.dll ~/program/drive_c/windows/system32/

Для 64 битных библиотек используется папка syswow64, а поскольку мы указали архитектуру 32 бит нужно и библиотеки использовать соответствующие. Затем запустите winecfg и на вкладке библиотеки, в поле новое замещение для библиотеки наберите *riched32, затем добавить и *riched20 и опять добавить:

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

Таким образом, вы можете заменить много библиотек Wine. Можно запустить практически любую программу, написанную несколько лет назад и не требующую сверх новых технологий. Достаточно только заменить нужные библиотеки. Вы можете не только использовать winetricks или копировать библиотеки из интернета, но и брать их прямо из Windows. Точно не стоит заменять gdi32.dll, kernel32.dll, и user32.dll – эти библиотеки реализуют функции ядра Windows на самом низком уровне, и если их заменить, это только нарушит работу Wine. Наверное, есть и другие библиотеки, которые нельзя заменять, но это вычисляется только путем экспериментов.

Упрощённая установка exe в Linux

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

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

Запуск Windows программ в виртуальной машине

Если ни один из перечисленных выше способов вам не помог, осталось только последнее решение. Оно поможет, при условии, что у вас мощный компьютер. Вы можете установить виртуальную машину VirtualBox, затем установить туда Windows и уже там запускать вашу программу. Можно пойти ещё дальше и сделать из старого компьютера сервер, на котором будет запущена Windows, к которой вы сможете подключаться по VNC или RDP и делать там всё, что угодно. Это не совсем способы запуска exe в Linux, однако это решение будет работать почти всегда, где не будет работать wine.

Выводы

Теперь вы знаете как запустить exe на Linux. Не пренебрегайте инструментами упрощения установки вроде PlayOnLinux. Они очень сильно экономят ваше время, так как имеют уже готовые профили для многих программ. Экспериментируйте и пусть ваши программы работают без ошибок!

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *