Приколы и глюки в wine


В свободном програмном обеспечении принято разделять текущие и стабильные версии. Текущие версии - это когда с каждым днем нас радуют новые функции и возможности. А стабильные версии - это когда эти функции и возможности даже работают. Что мне нравится в Linux Gentoo по сравнению с другими дистрибутивами это простота установки самой последней версии необходимой программы. Вот вышел 13 марта wine 1.1.17 и через день он уже обновлен до последней версии на моем компьютере одной командой. Больше виндовых игр можно запустить на линуксе, меньше глюков в уже работающих играх, меньше требуется костылей для работы программ. В общем каждые две недели с новой версией wine новая радость.

Вайновское
Но вот я всеми фибрами своей сети ощутил отличие стабильной версии от текущей. Стабильным релизом wine на сегодняшний день является версия 1.1.0. С обновлением Gentoo на работе обновилось море программ. Обновил KDE с 3.5 на KDE 4.2.1, появилось очень много фишек и удодобств. Обновился и вайн до самой новой на сегодняшний день версии.

Но вот незадача. Виндовая программа, которая крутится под вайном работает совсем недолго и с каждой минутой всё больше и больше тормозит. Через несколько минут работы она полностью зависает. Работать нереально. Уже месяц я пытался обновить линукс, но как настоящий хавчик я помнил правило "работает - не трожь". Снимал старый винт и ставил новый обновленный Gentoo даже в сборке x86_64. Но на новом виндовая программа тормозила, а старый добрый Gentoo ~x86 работал на отлично. Приходилось возвращать взад старый винт и работать как есть. Но вот на днях я решил это дело добить, оставил обновленный Gentoo, отладил и оптимизировал ядро так, что можно было даже работать. Выяснилось что я всего лишь продлил работоспособность программы, но через пятнадцать минут работы она все равно тормозила и зависала.

Нужно было что то решать. Нервы работников с такой работой программы были на исходе. Я перебрал все варианты и пришел к выводу что нужно откатить вайн до той версии, в которой однозначно все работало. Замаскировать вайн выше 1.1.0 не составило проблем, но выяснилось что стабильный wine в Gentoo не компилируется. Перепробовал разные версии имеющиеся в портеджах Gentoo. Ни 1.1.0, ни 1.0.1, ни что либо из более ранних версий не компилируется и вылетает со следующей ошибкой:


i686-pc-linux-gnu-gcc -c -I. -I. -I../../include -I../../include -I/usr/include/freetype2 -D__WINESRC__ -D_GDI32_ -D_REENTRANT -fPIC -Wall -pipe -fno-strict-aliasing -Wdeclaration-after-statement -Wwrite-strings -Wtype-limits -Wpointer-arith -O2 -march=athlon-xp -pipe -o freetype.o freetype.c
freetype.c:166: error: 'FT_MulFix' undeclared here (not in a function)
freetype.c:166: warning: type defaults to 'int' in declaration of 'pFT_MulFix'
freetype.c: In function 'WineEngGetOutlineTextMetrics':
freetype.c:5142: error: called object 'pFT_MulFix' is not a function

Как скомпилировать стабильный wine 1.1.0 в Gentoo
Порывшись в инете я выяснил, что в текущей версии вайн не ладит с библиотекой freetype. Одно из замороченых решений через патч стабильного вайна описано вот тут: http://www.nabble.com/-PATCH--Adjust-FT_MulFix-function-to-Freetype-cvs-...

Я очень не люблю ставить в систему софт не из ебилдов поэтому это решение я отложил на крайний случай. Более простое решение заключалось в следующем.

Находим файл
/usr/include/freetype2/freetype/config/ftconfig.h

В файле находим следующие строки (у меня этот блок находится в 350 строке) и удаляем

#ifdef FT_CONFIG_OPTION_INLINE_MULFIX
#ifdef FT_MULFIX_ASSEMBLER
#define FT_MULFIX_INLINED FT_MULFIX_ASSEMBLER
#endif
#endif

После такого изменения замаскировав текущий вайн делаем
emerge -u wine
Стабильный вайн скомпилился и моя виндовая программа продолжила превосходно работать под линуксом. Все сотрудники счастливы.

Файл ftconfig.h можно вернуть из бэкапа к оригиналу до тех пор пока не понадобится перекомпилить заново вайн. Самое главное не забыть замаскировать wine, чтоб при очередном обновлении не скатиться к тем же глюкам. Для тех кто не в курсе, маскировка в Gentoo - это блокирование использование какой либо версии какой либо программы (добавлением названия программы в файл /etc/portage/package.mask ). Таким образом, даже если обновим всю систему командой emerge -DuN world, то замаскированная программа останется всё равно той версии, которая нам нужна.

Комментарии

Мне тоже стоило

Мне тоже стоило бы поставить, только не умею

зачем таким

зачем таким травиальным способом делать?
Надо добавить вселишь команду: --without-freetype и будет вам счастье =P

А если я

А если я собираю через ebuild?

Я то

Я то программист, понимаю что здесь. Но как объяснить обычному человеку?
Знаю что такое freebsd и всякие генты.
Мир информационных технологий в тупике эволюции.

Человек должен сесть перед компом и сразу начать интуитивно выполнять элементарные действия.
Мир населен технофобами(за исключением Японии и некоторых).

Кстати, надо будет посмотреть сделали ли они plasma в kde.

А у простого

А у простого человека не так уж много вариантов выбора. Целый один и это никак не линукс и не фрибзд. Это написано чтоб обычные люди знали, что не все владельцы компьютеров несчастны, что есть люди которые могут свободно ходить по порносайтам пользуясь свободным програмным обеспечением :)

Завтра

Завтра иду в гости)))

Ну давай, бери

Ну давай, бери винт и тебе поставим KDE 4.2.1

Поделитесь этой страницей



0
0
0
0
0
0
0
0

0

Комментарии ВКонтакте