Wine

Материал из support.qbpro.ru

Сборка и установка из исходников

Скачиваем исходники wine-1.2.3 от сюда. Если честно я так и не понял как у WineHQ идут версии, на сайте написано, что 1.2.3 это последняя версия, но есть еще 1.3.24 вроде как последняя разрабатываемая версия. Короче скачал Latest Stable Version по их словам.

Дальше распаковываем все это в ~/wine-1.2.3
Дальше нужно установить пакеты, необходимые для сборки:
 apt get install bison flex gcc libc6-dev libfontconfig1-dev libfreetype6-dev libgl1-mesa-dev libglu1-mesa-dev libgphoto2-2-dev
libgsm1-dev libice-dev libjpeg62-dev libldap2-dev libmpg123-dev libncurses5-dev libopenal-dev libpng12-dev libsm-dev libssl-dev
libusb-dev libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxi-dev libxinerama-dev libxml2-dev libxrandr-dev libxrender-dev
libxslt1-dev libxt-dev libxxf86vm-dev

Переходим в каталог с исходниками:

 cd /home/mdma/wine-1.2.3

Компилируем:

 ./configure
 make depend
 make

После того как компиляция завершилась можно собрать deb-пакет:

 checkinstall
  • на вопрос утилиты - обязательно указываем имя пакета, в данном случае просто: wine

На выходе получился файл wine_1.2.3-1_i386.deb.
Можно его установить:

dpkg -i wine_1.2.3-1_i386.deb

Компиляция приложений с поддержкой OpenCL без закрытых драйверов

При сборке Wine не для личного использования, а чтобы распространять сборки, я столкнулся с проблемой. С какой реализацией OpenCL линковать? NVIDIA, AMD, Intel, Mesa? Ответ - FreeOCL!

На самом деле, не важно с чем линковать. У всех известных мне реализаций OpenCL, сама библиотека libOpenCL.so.1 занимает около 30 Кб. Оказывается, внутри этой библиотеки ничего нет. Сам OpenCL находится в другой библиотеке (например в libatiocl64.so - см. /etc/OpenCL/vendors/*.icd для подробностей). Однако залить проприетарный драйвер в OBS-репозиторий я не могу, так как закрытый код. Остаётся только Mesa и FreeOCL.

FreeOCL это программная реализация OpenCL, написанная на C++, и имеющая у себя в зависимостях libatomic_ops - а LLVM не имеющая. Установив в систему FreeOCL и opencl-headers, я успешно собрал Wine. Причём Wine линкуется только с OPENCL_1.0, что не помешало конечному софту, запущенному в Wine, успешно задействовать расширения 1.2 и 2.0.

В общем, рекомендую всем, кто до сих пор собирает с AMD APP SDK 3.0, перейти на FreeOCL. Я попробовал скомпилировать весь известный мне OpenCL-софт при помощи FreeOCL, а затем запустить на NVIDIA и AMD - всё работает безупречно. Не падает, не отказывается стартовать, и демонстрирует ровно ту же скорость работы.

P.S. Бинарник получает зависимость от libOpenCL.so.1 (параметр -lOpenCL), а пакет RPM или DEB также получает от pkg-config ещё несколько зависимостей:

  libOpenCL.so.1(OPENCL_1.0)(64bit)
  libOpenCL.so.1(OPENCL_1.1)(64bit)
  libOpenCL.so.1(OPENCL_1.2)(64bit)
  libOpenCL.so.1(OPENCL_2.0)(64bit)

Поэтому если вы собираете пакеты, а не просто tar.gz архив с программой, рекомендую пропатчить FreeOCL патчем freeocl-0.3.6-disable-symbol-versioning.patch. В этом случае, пакет получит зависимость только от libOpenCL.so.1()(64bit). Например в моей системе в пакете NVIDIA 340.xx нет "версионинга" OpenCL, а в 390.xx он есть. Вследствие чего, пакет не хотел устанавливаться, но после force install - работал.

Решение проблем

Решение по ошибке:/usr/bin/winecfg: 32: exec: winecfg.exe: not found

Установка фонтов

Решение проблемы со шрифтами. Начиная с версии wine 0.9.47 в нём присутствует свободный аналог шрифта tahoma из коллекции Red Hat's freely licensed "Liberation" fonts. Но в нём нет кириллицы! Предлагаю исправить эту ситуацию следующим скриптом создайте в любом текстовом редакторе фал со следующим модержимым Код:

#!/bin/sh
cd /usr/share/wine/fonts
rm tahoma.ttf
rm tahomabd.ttf
ln -s /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf ./tahoma.ttf
ln -s /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono-Bold.ttf ./tahomabd.ttf

сохраните фал в директорию /tmp/patchfont.sh выполните команду в терминале (gnome-terminal или konsole)

sudo bash /tmp/patchfont.sh

После этого winecfg должен корректно отображать русские буквы.

Примечание поскольку размеры букв в шрифте DejaVuSansMono

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


Второй вариант если у вас есть лицензионная копия windows. Скопируйте файлы tahoma.ttf и tahomabd.ttf из директории c:\windows\fonts в /usr/share/wine/fonts с заменой файлов.


Некоторые программы используют шрифт Tribuchet его "замену" можно включить командой

ln -s /usr/share/fonts/truetype/ttf-dejavu/DejaVuSansMono.ttf  ~/.wine/drive_c/windows/fonts/tribuc.ttf

К сожалению подмена шрифта tahoma не для всех приложений работает корректно. Есть альтернативный вариант где его взять :) Когда то давно m$ бесплатно распространяла вьювер документов Word97 файл называется wd97vwr32.exe И распространяется под лицензией

Microsoft Viewer for Word
END-USER LICENSE AGREEMENT FOR MICROSOFT SOFTWARE

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

sudo apt-get install cabextract

чтобы добыть из него шрифт нужно выполнить две команды

cabextract -F Viewer1.cab ./wd97vwr32.exe
cabextract -F tahoma.ttf ./Viewer1.cab

затем скопировать в директорию

cp tahoma.ttf ~/.wine/drive_c/windows/fonts

кому интересно почитать лицензию её можно добыть командой

cabextract -F License.txt ./wd97vwr32.exe :)

Подключить репозитарий с новыми версиями wine для gutsy Можно добавив строчку

deb http://wine.budgetdedicated.com/apt gutsy main

в файл /etc/apt/sources.list затем для установки ключа подписи выполните в терминале

wget -q http://wine.budgetdedicated.com/apt/387EE263.gpg -O- | sudo apt-key add -

Возможно в будующем для подключения потребуется заменить строчку на

deb http://wine.budgetdedicated.com/apt <название нового релиза убунты> main

покрайней мере так было при переходе с feisty на gutsy.


ИСТОЧНИКИ:


ПОЛЕЗНОЕ: