Ключевые слова:wine, x, win, linux, (найти похожие документы)
From: Юрий Прушинский и Александр Куприн
Newsgroups: http://gazette.linux.ru.net/
Date: Mon, 20 Jun 2003 13:01:37 +0000 (UTC)
Subject: Настройка Wine
Оригинал: http://gazette.linux.ru.net/lg80/taneja.html
Wine: Поднимая тост за ваши Windows-приложения в Linux
Автор: Gaurav Taneja <tech@gauravtaneja.com>
Перевод: Юрий Прушинский http://gazette.linux.ru.net/team/y_prushinsky.html
Обработка: Александр Куприн http://gazette.linux.ru.net/team/a_kuprin.html
Несколько лет назад, когда я только начинал работать с Линукс, у меня
всегда была установлена Windows на соседнем разделе диска. Так, на
случай, если что-нибудь рухнет. Но позднее я осознал, что в Linux есть
практически всё, что мне нужно, и нет необходимости тратить деньги на
что-либо иное. Тем не менее, иногда у меня возникает необходимость
запустить приложение, написанное именно под Windows. Что делать в этой
ситуации? Мой ответ - использовать Wine.
Wine не имеет ничего общего со спиртным!
Такие программы как VMware и Win4Lin позволяют вам запускать из-под
Linux другие операционные системы (как правило Windows) и таким
образом предоставляют возможность запускать Windows-приложения на
Линукс-машине. [Win4Lin специально создана для использования
исключительно Windows. VMware -- это "отдельная песня". Уникальность
этого продукта в том, что он эмулирует работу "железа" компьютера, что
позволяет устанавливать в её среде такие ОС как Windows, MSDOS, Linux,
FreeBSD и т.п. Исключение могут составлять те операционные системы,
которые очень круто обходятся с аппаратным обеспечением. Прим.ред.]
Кроме того, можно пойти традиционным путем и установить Windows на
соседний раздел. Тем не менее, эти альтернативы скорее нагружают вашу
систему, чем решают проблему.
Wine (рекурсивный акроним от "WINE Is Not an Emulator") отличается от
всех вышеперечисленных методов, и не требует от вас покупки
лицензионной копии Windows. Принцип его работы основан на эмуляции
Win32 API, код которого полностью переписан и отличается от кода
Microsoft.
Прим.ред.: предыдущий абзац вводит немного в заблуждение. Так
всё-таки: Wine -- эмулятор или нет? Посмотрим, что говорится в
документации к нему (c3886.html):
Аббревиатура "Wine" -- это рекурсивный акроним "Wine Is Not an
Emulator". Кроме этого Wine известен тем, что используется как
"эмулятор Windows". В некотором смысле, оба значения верны, только
отличаются в зависимости от перспективы. Первое определение говорит о
том, что Wine не виртуальная машина. Он не эмулирует работу CPU и вы
не устанавливаете Windows или драйвера устройств для неё. Правильней
сказать, что Wine -- это реализация API Windows и он может
использоваться как библиотека для портирования приложений Windows на
Unix. Второе утверждение (о том, что Wine эмулятор), очевидно,
опирается на то, что для исполняемых файлов Windows (.exe файлы), Wine
действительно выглядит как Windows, подражая его поведению.
Давайте поднимем тост!
Если вы уже решились поэкспериментировать с Wine, то для начала вам
нужно взять последние исходники эмулятора с официального сайта проекта
http://www.winehq.com. Хотя вовсе не обязательно собирать его
вручную из "сырцов". На сайте есть ссылки на уже собранные версии
эмулятора в разных форматах (rpm, deb и т.д.).
Если вы решились собрать Wine из исходников, то необходимо выполнить
следующее:
gunzip Wine-20020411.tar.gz
tar -xvf Wine-20020411.tar
cd wine-20020411
./configure
make depend
make
make install
[Но лучше этого не делать и воспользоваться соответствующим пакетом
"сырцов". Почему именно пакетом? Во-первых, для тех, кто не в курсе,
смотрите статью Дениса Овсиенко об организации и ведении "пакетного
хозяйства" http://gazette.linux.ru.net/rus/articles/ideal_sysadmin-rpm.html
Во-вторых, почему пакет "сырцов", а не "бинарников"?
Всегда лучше "заточить" программу под конкретную машину. Кроме этого,
если вы используете rpm-based дистрибутив, то я советую вам взять
пакет Wine на сайте ALT Linux из репозитория пакетов Sisyphus.
Пакет с исходниками вы найдёте здесь
ftp://ftp.altlinux.com/pub/distributions/ALTLinux/Sisyphus/files/SRPMS/
(ищите файл wine-номер_cvs_версии-номер_сборки.src.rpm). Здесь же вы можете
взять и пакет исходников для WineX (см. подкаталог Sisyphus/unsupported и
ищите файл WineX-номер_версии-номер_сборки.src.rpm). Прим.ред.]
Если же вы хотите самую-самую свежую версию Wine, то можно взять
исходный код с CVS:
export CVSROOT=:pserver:cvs@cvs.winehq.com:/home/wine
cvnpres login
На запрос пароля, введите 'cvs':
cvs -z 3 checkout wine
После этого в вашей текущей папке появится подкаталог "wine", в
который и скопируются все необходимые файлы. После завершения
копирования, вы можете скомпилировать wine вышеуказанными командами.
Настройка Wine
Теперь нам нужен конфигурационный файл с именем "config" в каталоге
"~/.wine/". Вы можете просто скопировать его пример из каталога с
исходниками:
cp documentation/samples/config ~/.wine/config
Конечно, от количества параметров в конфигурационном файле "config"
можно слегка приуныть, но это только на первый взгляд. На самом деле
достаточно настроить лишь самые основные пути для вашей системы.
Например, вам нужно проверить следующие секции:
[Drive A]
"Path" = "/mnt/fd0"
"Type" = "floppy"
"Label" = "Floppy"
"Serial" = "87654321"
"Device" = "/dev/fd0"
[Drive C]
"Path" = "/c"
"Type" = "hd"
"Label" = "MS-DOS"
"Filesystem" = "win95"
[Drive D]
"Path" = "/cdrom"
"Type" = "cdrom"
"Label" = "CD-Rom"
"Filesystem" = "win95"
; убедитесь что устройство указано правильно и имеет корректно
; установленные атрибуты доступа!
"Device" = "/dev/cdrom"
Wine пытается эмулировать DOS-раздел и структуру каталогов, поэтому,
например, секция которая начинается с "[Drive C]" обозначает
соответствие гипотетическому диску С: с вашим Линукс-каталогом, в
данном случае "/c".
Далее, таким же образом в секции "[wine]" настраиваются системные
папки "windows" и "system":
"Windows" = "c:\\windows"
"System" = "c:\\windows\\system"
"Temp" = "e:\\"
"Path" = "c:\\windows;c:\\windows\\system;e:\\;e:\\test;f:\\"
"Profile" = "c:\\windows\\Profiles\\Administrator"
"GraphicsDriver" = "x11drv"
; Wine по умолчанию не "понимает" символьные ссылки каталогов для
; Windows-программ.
; Включение этой опции может вызвать сбой в программе, пытающейся
; сделать рекурсивный просмотр всего дерева
; подкаталогов, в случае если символьная ссылка указывает на саму
; себя.
; "ShowDirSymlinks" = "1"
"ShellLinker" = "wineshelllink"
Обратите внимание на ошибку -- переменная "Temp" указывает на диск
[E], но диски определены только до [D]. Тоже самое относится к
переменной "Path". Прим.ред.
Сейчас мы создадим основную структуру каталогов Windows (папки
"windows", "system") которые указаны в файле "config" в секции
"[wine]":
cd /c
mkdir -p windows/system
mkdir -p windows/Start\ Menu/Programs
Секция "[DllOverrides]" в конфигурационном файле управляет
библиотеками DLL, которые в Wine являются аналогами библиотек Windows,
а также некоторыми родными Windows библиотеками, которые вам могут
быть необходимы:
; Будьте предельно осторожны здесь, неверная
; настройка DllOverrides потенциально может
; повредить настройку вашего эмулятора
[DllOverrides]
"commdlg" = "builtin, native"
"comdlg32" = "builtin, native"
"ver" = "builtin, native"
"version" = "builtin, native"
"shell" = "builtin, native"
"shell32" = "builtin, native"
"shfolder" = "builtin, native"
"shlwapi" = "builtin, native"
"shdocvw" = "builtin, native"
"lzexpand" = "builtin, native"
"lz32" = "builtin, native"
"comctl32" = "builtin, native"
"commctrl" = "builtin, native"
"advapi32" = "builtin, native"
"crtdll" = "builtin, native"
"mpr" = "builtin, native"........
Ну, не всё так страшно. Можно воспользоваться и "родными" для Windows
динамическими библиотеками. Например: commdlg, comdlg32, commctrl,
comctl32, shell, shell32. Только нужно, чтобы они присутствовали в
каталоге, определённом переменной "System" секции [wine]. Общий
список, что можно использовать в Wine из библиотек Windows, а что
нельзя, вы найдёте в файле документации x1273.html. Прим.ред.
Секция [serialports] отвечает за настройку разных портов и устройств:
Com1=/dev/ttyS0
Com2=/dev/ttyS1
Com3=/dev/modem,38400
Com4=/dev/modem
Внешний вид окон можно поменять в секции [Tweak.Layout].
;; поддерживаются стили 'Win31'(default), 'Win95', 'Win98'
;; но не путайте это с номерной версией Windows, которую выдает Wine:
;; для этого используйте опцию командной строки --winver .
"WineLook" = "Win98"
(Не обязательно запускать Wine с ключом --winver, вы можете прописать
в ~/.wine/config следующие строки:
[Version]
; Имитация версии Windows (win95,win98,winme,nt351,nt40,win2k,winxp,win20,win3
0,win31)
"Windows" = "win98"
; Имитация версии DOS
"DOS" = "6.22"
Прим.ред.)
А про реестр Windows вы не забыли?
Далее нам необходимо установить реестр по умолчанию, который в
точности соответствует реестру, который есть на любой Windows-машине.
Но перед этим надо не забыть немного подправить файл /etc/ld.so.conf .
Для этого мы просто добавляем в него строку /usr/local/lib/wine [Здесь
будьте особенно внимательны -- возможно ваша версия Wine собрана с
другим ключом --prefix. Например, /usr. Соответственно, и пути
поменяются. Прим.ред.], которая указывает на расположение библиотек,
необходимых программе для имитации Windows-окружения.
Да, и не забудьте запустить /sbin/ldconfig после этого.
Итак, теперь мы можем использовать regapi, чтобы установить реестр по
умолчанию. В каталоге с исходниками Wine выполните следующую команду:
programs/regapi/regapi setValue < winedefault.reg
Неплохо бы взять "родной" regedit.exe -- тогда у вас появится
возможность "резвиться" в файле реестра. Если сделаете это, то заодно
раскомментируйте в секции [DllOverrides] строку:
"C:\\windows\\regedit.exe" = "native, builtin"
Если нужно, исправтье путь к regedit.exe. Прим.ред.
_________________________________________________________________
От редактора: А про шрифты вы не забыли?
Всё, что описал Gaurav, конечно, в тему. Но есть ещё один очень важный
момент в настройке Wine -- шрифты. Для получения качественных шрифтов
в Wine, необходимо в системе настроить и зарегистрировать ttf-шрифты.
Идеальным вариантом будет скачать (опять обращаемся к Sisyphus) пакет
ttf-шрифтов от Microsoft (ms-ttf-1.0-alt5.src.rpm).
ftp://ftp.altlinux.com/pub/distributions/ALTLinux/Sisyphus/files/SRPMS.non-free/ms-ttf-1.0-alt5.src.rpm
Затем правим (если нужно) в ~/.wine/config два раздела, [Fonts] и [FontDirs].
Получается примерно следующее:
[fonts]
"Resolution" = "96"
"Default" = "-monotype-arial-*-*-*--*-*-*-*-*-*-koi8-r"
"DefaultFixed" = "-monotype-courier new-*-*-*--*-*-*-*-*-*-koi8-r"
"DefaultSerif" = "-monotype-times new roman-*-*-*--*-*-*-*-*-*-koi8-r"
"DefaultSansSerif" = "-monotype-arial-*-*-*--*-*-*-*-*-*-koi8-r"
[FontDirs]
"dir1" = "/usr/X11R6/lib/X11/fonts/msttf"
Само собой разумеется, что каталог (или каталоги) меняется в
зависимости от того, куда именно вы установили ttf-шрифты.
Кроме этого можно поиграть с антиалиасингом и способом и местом
рендеринга шрифтов (на стороне клиента или сервера):
[x11drv]
...
"ClientSideWithRender" = "Y"
"ClientSideWithCore" = "Y"
"ClientSideAntiAliasWithRender" = "Y"
"ClientSideAntiAliasWithCore" = "Y"
...
Если же вам не нужен антиалиасинг в приложениях Windows, то выставите
значение двух последних опций в "N".
_________________________________________________________________
А теперь давайте всё это подпалим!
В принципе, уже сейчас после произведённой ранее настройки можно
попробовать запустить какое-нибудь простое Windows-приложение.
Попробуем обычный калькулятор, который идёт в стандартной поставке
Windows ("calc.exe").
Вы можете примонтировать раздел с Windows или скопировать calc.exe" с
дискеты в вашу систему в каталог "/c/windows" и запустить его одним из
нижеуказанных способов:
cd /c/windows; wine calc.exe
wine /c/windows/calc.exe
wine "c:\windows\calc.exe"
Здесь вы можете посмотреть как выглядит это приложение на моей
Линукс-машине. http://gazette.linux.ru.net/lg80/misc/taneja/calc.png
Здорово, не правда ли! (факт запуска калькулятора
несомненно крут, но к тому, что на заднем плане это уже не относится,
особенно после KDE 3.1 ... - прим. перев. )
На этом всё!
Wine может быть очень полезен, когда вам необходимо запустить
какой-нибудь файл для Windows в системе Линукс. Единственное замечание
- надо учитывать что не все ваши приложения будут работать в Wine, и
вам будет необходимо самим разобраться как заставить работать вашу
любимую программу. Но, всё равно, во многих случаях Wine бывает очень
полезен.
_________________________________________________________________
От редактора: "А вас, Штирлиц, я попрошу остаться!" (c) Броневой
Пути.
Не торопитесь. Несколько слов о том, как мне приходилось "бодаться" с
Wine при подготовке этой статьи к публикации. Во-первых, вам следует
знать, что при первом запуске Wine генерирует разделы [Drive X] на
основании данных /etc/fstab. Если вы планируете использовать в
качестве основы для работы Wine каталоги и файлы Windows, то можете
оставить всё как есть. Если же нет, то придётся подправить секции
[Drive X]. Я настроил Wine таким образом, что ему доступны два диска,
[C] и [D] (жёсткий диск, CD-привод) и привод флоппи-дисков [A]:
[Drive A]
"Path" = "/mnt/floppy"
"Type" = "floppy"
"Label" = "Floppy"
"Filesystem" = "win95"
"Serial" = "87654321"
"Device" = "/dev/fd0"
[Drive C]
"Path" = "/var/lib/wine"
"Type" = "hd"
"Label" = "MS-DOS"
"Filesystem" = "win95"
[Drive D]
"Path" = "/mnt/cdrom"
"Type" = "cdrom"
"Label" = "CDROM"
"Filesystem" = "win95"
"Device" = "/dev/cdrom"
При этом для диска [C] использовался "скелет" каталогов,
сформированный Wine при инсталляции, /var/lib/wine. Решать, конечно,
вам какую именно конфигурацию избрать. Можете оставить путь к
подмонтированым vfat-разделам (надеюсь, понятно, что под
vfat-разделами я понимаю разделы с файловыми системами FAT12, FAT16
и/или FAt32). Но, что там может натворить Wine? Лично я не знаю,
поэтому работал с /var/lib/wine. К тому же этот вариант универсален,
т.к. позволяет использовать Wine на машине, где нет vfat-разделов. И
есть ещё одна неприятная особенность, которую я не смог побороть --
не-LATIN имена файлов сохраняются в кодировке cp1251. А в
vfat-разделах они хранятся в кодировке cp866.
Обратите внимание на значение переменной "Temp" в разделе [wine]
(выше, в примечаниях, я уже об этом говорил):
[wine]
...
"Temp" = "C:\\Temp"
...
По умолчанию переменная "Temp" указывает на отдельный диск, который
формируется в "/tmp/winetmp-${USER}". Я её исправил на C:\\Temp,
предварительно создав подкаталог Temp на диске [C] (в моём случае это
/var/lib/wine/Temp)
Проверьте значение переменной "Path" в этом же разделе. Возможно,
понадобится добавить новые пути.
Звук.
Чтобы Wine "зазвучал", вы должны раскомментировать одну из строк в
секции [WinMM]:
[WinMM]
...
;"Drivers" = "wineoss.drv" ; default for most common configurations
"Drivers" = "winearts.drv" ; for KDE
;"Drivers" = "winealsa.drv" ; for ALSA users
;"Drivers" = "winejack.drv" ; for Jack sound server
;"Drivers" = "winenas.drv" ; for NAS sound system
;"Drivers" = "wineaudioio.drv" ; for Solaris machines
;"Drivers" = "" ; to disable sound
...
У меня запущен KDE, поэтому для переменной "Drivers" я указал значение
"winearts.drv". Для большинства конфигураций подойдёт "wineoss.drv".
Чтобы убедиться в том, что в Wine появился звук, я установил Winamp
версии 2.0 Заголовок главного окна оказался битым (но только главного
-- окно плэйлиста и эквалайзера отображалось корректно), а само окно
"мазалось" при перемещении других окон поверх него. Но звук был и что
самое удивительное во всём этом -- в системном лотке KDE появился
значок агента Winamp! И на рабочем столе столе тоже (см. скриншот)
http://gazette.linux.ru.net/lg80/misc/taneja/winamp.png
Скриншоты.
И в заключении несколько скриншотов:
* The Bat! -- наверное самый часто задаваемый в эхах вопрос при
переходе с Windows на Linux -- "а чем заменить TheBat!?" Один из
вариантов ответа -- TheBat!'ом. Хотя, если подумать, то это
попахивает извращением. Попробую объяснить почему: на мой взгляд,
цель Wine заключается в том, чтобы дать возможность работать с
Windows-программами, чьих аналогов нет в Linux. В случае же с
почтовым клиентом это не так, и каждый может найти себе в Linux
MUA по вкусу. К тому же у TheBat!, работающего под Wine
обнаружилась неприятная особенность -- границы кнопок панели
инструментов "мажутся" (см. слева от кнопки "Get new mail").
http://gazette.linux.ru.net/lg80/misc/taneja/thebat.png
* WinRar -- любимый многими архиватор в среде Windows неплохо
чувствует себя в Linux.
http://gazette.linux.ru.net/lg80/misc/taneja/winrar.png
* Windows Commander -- Far запустить не удалось, а вот Windows
Commander, пожалуйста. Хотя и тут не обошлось без казусов.
Почему-то при путешествии по дереву каталогов при помощи стрелок
управления курсора, WC ведёт себя так, будто нажимается не клавиша
Down, а Insert (команда "пометить файл").
http://gazette.linux.ru.net/lg80/misc/taneja/wc.png
Заключение.
Судя по всему, программы небольшого размера будут себя неплохо
чувствовать в среде Wine. Исключение составляют те программы, которые
немного экзальтировано используют Windows API (недокументированные
возможности и прочее). К сожалению, программы-гиганты типа MS Office и
ему подобные, активно засоряющие реестр и таскающие за собой ворох
динамических библиотек, очень трудно заставить работать.
Если вам интересно, то здесь вы найдёте конфигурационный файл,
который использовал я http://gazette.linux.ru.net/lg80/misc/taneja/config.txt
Copyright (c) 2002, Gaurav Taneja.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 80 of Linux Gazette, July 2002
Больше всего мне понравилась фраза:
"Обратите внимание на ошибку -- переменная "Temp" указывает на диск
[E], но диски определены только до [D]. Тоже самое относится к
переменной"
Ну и чего с этой ошибкой делать-то?
Переправить на "A", убрать переменную или вообще про нее забыть?:)
Или фраза: "А про реестр Windows вы не забыли?"
:))))))))))))))))))
Хеее
Это прикол над обычными смертными?
Если wine ставить нормально, как написано в инструкции, то все будет работать сразу...
Ставить надо через ./tools/wineinstall
Сам спросит что ставить диском C, если надо создаст структуру каталогов и конфиг, в котором будет диск Е(=/tmp) :)
У меня работаетно кривовато - Enter не открывает документы в журналах, не реагирует при выборе товаров в отборе - все через двойной клик мышкой.
Цены и колличество, кстати, выбивается и Энтером.
вот хочу попросить помощи в настройках - если это возможно
FAR запустился.
wineconsole --backend=user C:\Far\Far.exe
Желательно еще какой-нибудь шелл для него, а то Far ничего исполнить не сможет.
Я поставил CMD.exe из WinXP.
wineconsole --backend=user cmd /c C:\Far\Far.exe > /dev/null
Работает хорошо, но не все. С Multiarc не все хорошо. Colorer-take5 тормозит сильно, Colorer4ever работает.
Версия Wine - 20050310
OS - Debian GNU/Linux Sarge
>FAR запустился.
>wineconsole --backend=user C:\Far\Far.exe
>Желательно еще какой-нибудь шелл для него, а то Far ничего исполнить не
>сможет.
>Я поставил CMD.exe из WinXP.
>wineconsole --backend=user cmd /c C:\Far\Far.exe > /dev/null
>Работает хорошо, но не все. С Multiarc не все хорошо. Colorer-take5 тормозит
>сильно, Colorer4ever работает.
>Версия Wine - 20050310
>OS - Debian GNU/Linux Sarge
Работает. Спасибо.
xyu$ wine --version
wine-1.1.5
xyu$ uname -a
FreeBSD xyu.nnz-home.ru 7.0-RELEASE FreeBSD 7.0-RELEASE #0: Sun Sep 21 03:59:41 UTC 2008 root@xyu.nnz-home.ru:/usr/src/sys/i386/compile/BSD_P4C800E_VER10 i386
мудреное дело вынь калькулятор в иксах пустить
еслиб он рассказал как офис ХР поднять это было-бы интересно
-- сначала "обновляет" систему просит перезагрузку
делаешь wineboot и инстал кричит что установка не была завершена повторить установку обновления? или пойдем покурим?
на что весело приходится отвечать - пойдем покурим. и идем курить google (пока еще не скурил.)
... все пишут пустил - то-то и то-то , хоть бы кто один рабочий конфиг выложил под запуск конкретного софта
сделал так как описано, затем пытаюсь запустить блокнот и ...
$ ./notepad.exe
Line 24: Unrecognized input ':"Label" = "MS-DOS"'
Created symlink /home/admin2/.wine/dosdevices/a:: -> /dev/fd0
Created symlink /home/admin2/.wine/dosdevices/d:: -> /dev/cdrom
You can now remove the [SerialPorts], [ParallelPorts], and [Drive] sections
in your configuration file, they are replaced by the above symlinks.
Warning: could not find DOS drive for current working directory '/mnt/win_c/windows', starting in the Windows directory.
err:font:ReadFontDir Can't open directory "/usr/share/fonts/default/TrueType-ms"
Couldn't open required GL library /usr/X11R6/lib/libGL.so.1.3.501!
err:seh:setup_exception stack overflow 8 bytes in thread 0009 eip 10e3a45e esp 10570ff8 stack 0x10570000-0x10670000
Что может означать? Что я не правильно сделал?
Wine_20040716
прошу прощение за пофтор, насчёд кракозяброф! У меня wine 0.9.33, кадирофка-пипец! Мудохался, рыл сцылки, ну нерулит и усё. Обновит не вышло, захажу в менеджер пакетов синаптек, нахожу вайн, кликаю свойства, отметить рекомендуемые пакеты для установки, а там!!! а там две вкладки
-msffcorfonts,
-xdg-utils.
отметил, приминил и зарулила кодировка зарулила!
Ура товарищщи!!!
>прошу прощение за пофтор, насчёд кракозяброф! У меня wine 0.9.33, кадирофка-пипец! Мудохался,
>рыл сцылки, ну нерулит и усё. Обновит не вышло, захажу в
>менеджер пакетов синаптек, нахожу вайн, кликаю свойства, отметить рекомендуемые пакеты для
>установки, а там!!! а там две вкладки
>-msffcorfonts,
>-xdg-utils.
>отметил, приминил и зарулила кодировка зарулила!
>Ура товарищщи!!!
Мы не знаем что такое менеджер пакетов, тем более синаптек. Как компиляли, так и компиляем. Поэтому проблемы пользователей линупса нас не касаются.