пятница, 16 мая 2008 г.

Запуск привычных Windows-программ в Linux

Рассмотрим возможности запуска приложений Windows под операционными системами Windows, а также сопутствующие проекты.

Каждый, кто недавно установил Linux, задается вопросом: как "довести" простоту использования этой операционной системой до уровня Windows? Здесь "довести" в кавычках, так как удобство в мире Linux и Windows немного разые понятия, в Linux некоторые вещи не будут такими очевидными, но как мне кажется, это вопрос привычки, привитый ещё со школьных лет.

Часто спрашивают про аналоги программ под Linux, составляются специальные таблицы аналогов софта. Борцов за чистоту нравов такие вопросы бесят, и они норовят напомнить в ответ, что Linux – это не Windows, и различия неизбежны. Однако есть возможность запуска приложений Windows в Linux! И это без установки первой! Это проект Wine. Получается истина в Wine (Wine - пер. с англ. Вино) :-)

Wine – это слой совместимости, разработанный для запуска Windows-приложений в Linux. Это не эмулятор в его истинном значении, даже название проекта - WINE - рекурсивный акроним слов Wine Is Not an Emulator. В ОС Windows используются другие файловые системы, иначе происходит работа с памятью, и по-другому обозначаются диски. Wine "хватает" вызовы API-функций приложения Windows и подменяет их выховами API-функций ОС Linux.

Некоторые пользователи пробуют разобраться в Wine и потом бросают это занятие, если какая-то программа не устанавливается сразу. Одни программы работают в Wine лучше, а другие требуют "напильника" для нормального запуска.

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

Однако есть другие способы запуска Windows приложений в Linux. Ведь всегда эффективнее пользоваться программами, родными для вашей ОС, чем возиться со слоями совместимости.
Растет число кроссплатформенных программ, особенно с открытым исходным кодом, и можно найти версию нужной программы под Linux. Всё больше и больше ведущих мировых производителей софта портируют свои приложения для Linux. Даже если ваша программа не портирована под Linux, можно найти аналогичную программу и использовать ее как замену.
Полный список эквивалентов ПО имеется на сайте http://wiki.linuxquestions.org/wiki/Linux_software_equivalent_to_Windows_software. Правда, если вы используете Linux для разработки программ под Windows или для игр, Wine остается лучшим выбором. Есть проекты с улучшенной поддержкой графики DirectX - Cedega например, однако они уже платные.

Сайт проекта Wine находится по адресу http://www.winehq.org/, где уже лежат собранные пакеты для различных дистрибутивов Linux. Также Вы можете найти пакет Wine в репозиториях Вашего дистрибутива, однако только на сайте проекта всегда свежая информация.

Wine – не единственный способ запускать Windows-приложения в Linux. Самым очевидным было бы установить приложения Windows прямо в Windows и не париться. Не думайте, что это глупая шутка: если программа, которую вы используете, критически важна, требует максимальной производительности и не запускается под Wine, лучше всего запускать ее на компьютере с Windows. В блоге я уже писал про альтернативу в лице проекта ReactOS (http://www.reactos.org/). ReactOS использует значительное количество кода Wine, однако проект отличается от WINE? поскольку это максимально близкий клон Windows? хотя пока и не годящийся для повседневного использования.

Другая возможность запуска Windows-приложений – делать это в Windows на виртуальной машине. Теоретически, это безупречный метод заставить работать некоторые Windows-приложения, потому что они будут запускаться в самой Windows, а не в Linux. Но у этого подхода есть и недостатки. Это то, что у Вас должна быть полноценная лицензия на копию Windows, устанавливаемую на виртуальном компьютере, но тогда опять таки проще делать это в самой Windows. Во-вторых, из-за одновременного запуска двух ОС падает производительность. Большинстве ПО для виртуализации старается свести этот эффект к минимуму, но запуская приложение в виртуальном компьютере, вы запускаете его поверх Windows и поверх программы виртуализации, которая, в свою очередь, работает поверх Linux. Во многих случаях падение производительности не очень заметно, но на слабом оборудовании и для программ с повышенными требованиями к ресурсам может стать проблемой. Программ виртуализации имеется несколько, включая Qemu, VMWare и VirtualBox. VirtualBox, наверное, лучший выбор для большинства пользователей: он распространяется бесплатно и имеет дружественный интерфейс. Qemu также Open Source проект, в составе также идёт модуль ядра для увеличения производительности виртуализации, кстати, как-то я даже установил и запустил ReactOS в Qemu. А VMWare - платный софт.

Также есть проект Mono, обеспечивающий необходимое программное обеспечение для разработки и запуска клиентских и серверных приложений платформы .NET в операционных системах Linux, Solaris, Mac OS X, Windows и Unix. Спонсируется компанией Novell и позиционируется как лучший выбор для разработки приложений Linux.