Возможен ли запуск старых версий wine

RusWolf
gcc6 может помочь.
Ясно, будет время попробую разобраться.

ЗЫ, думаю можно пометить это как решеное.
blackboar
Имеется: archlinux, все пакеты актуальных версий + набор стрых версий вайна установленых с помощью playonlinux.
Версия 2.20 и новее запускаются без проблем.
Версии древнее падают с однотипной ошибкой:

wine: Unhandled page fault on read access to 0x00000004 at address 0x7e488d44 (thread 0009), starting debugger...
winedbg: Internal crash at 0x7e7b3d44
Вот именно это — из-за того, что во Freetype 2.8.1 что-то то ли сломали, то ли починили, но все существующие на тот момент версии Wine стали с ним падать с этой ошибкой.
Здесь об этом чуть подробнее, со ссылками на багтрекер Wine: https://bugs.archlinux.org/task/55667
Впоследствии Wine, конечно, подстроился, но все предыдущие версии теперь тоже следует обязательно пересобирать, наложив патчи для совместимости с Freetype 2.8.1 и новее.

Таким образом, архив Playonlinux стал после этого только очень ограниченно полезным! В нём ведь не стали всё заново пересобирать.

Ну и ещё более ранние версии Wine могут требовать и других патчей для сборки на актуальной системе, как вот та 1.7.55. Ну или может быть действительно ещё и ранних версий GCC. И хорошо ещё, если эти проблемы со сборкой в своё время всплывали в багтрекере Wine — их можно будет найти по тексту ошибок и взять оттуда патчи. А если нет и эти изменения просто тихо закоммитили непонятно где — всё становится намного печальнее...

Вот например, где-то недели две назад некоторые версии из ветки 1.9.x прекрасно собирались (с патчами, конечно же), но буквально после следующего обновления — перестали. И по тексту ошибки тоже ничего вразумительного применительно именно к Wine не находится.
make[1]: Entering directory '/home/user/src/asp/wine/repos/multilib-x86_64/src/wine-64-build/dlls/wpcap'
gcc -m64 -c -o wpcap.o ../../../wine/dlls/wpcap/wpcap.c -I. -I../../../wine/dlls/wpcap -I../../include \
  -I../../../wine/include -D__WINESRC__ -D_REENTRANT -fPIC -Wall -pipe -fno-strict-aliasing \
  -Wdeclaration-after-statement -Wempty-body -Wignored-qualifiers -Wshift-overflow=2 \
  -Wstrict-prototypes -Wtype-limits -Wunused-but-set-parameter -Wvla -Wwrite-strings -Wpointer-arith \
  -Wlogical-op -D_FORTIFY_SOURCE=2 -march=native -O2 -pipe -fstack-protector-strong -fno-plt -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=0
../../tools/winegcc/winegcc -o wnaspi32.dll.so -B../../tools/winebuild -m64 -fasynchronous-unwind-tables -shared ../../../wine/dlls/wnaspi32/wnaspi32.spec \
  aspi.o winaspi32.o -ladvapi32 ../../libs/port/libwine_port.a -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now
In file included from ../../../wine/dlls/wpcap/wpcap.c:21:
../../../wine/include/winsock.h:395:18: error: two or more data types in declaration specifiers
 typedef UINT_PTR SOCKET;
                  ^~~~~~
In file included from ../../../wine/include/winsock2.h:47,
                 from ../../../wine/dlls/wpcap/wpcap.c:22:
../../../wine/include/winsock.h:395:1: warning: useless type name in empty declaration
 typedef UINT_PTR SOCKET;
 ^~~~~~~
../../../wine/include/winsock.h:401: warning: "INVALID_SOCKET" redefined
 #define INVALID_SOCKET             (SOCKET)(~0)

In file included from ../../../wine/dlls/wpcap/wpcap.c:21:
/usr/include/pcap/pcap.h:958: note: this is the location of the previous definition
   #define INVALID_SOCKET -1

../../../wine/dlls/wpcap/wpcap.c: In function 'wine_pcap_lookupdev':
../../../wine/dlls/wpcap/wpcap.c:183:5: warning: 'pcap_lookupdev' is deprecated: use 'pcap_findalldevs' and use the first device [-Wdeprecated-declarations]
     return pcap_lookupdev(errbuf);
     ^~~~~~
In file included from ../../../wine/dlls/wpcap/wpcap.c:21:
/usr/include/pcap/pcap.h:326:16: note: declared here
 PCAP_API char *pcap_lookupdev(char *)
                ^~~~~~~~~~~~~~
../../../wine/dlls/wpcap/wpcap.c: At top level:
../../../wine/dlls/wpcap/wpcap.c:234: warning: "PCAP_OPENFLAG_PROMISCUOUS" redefined
 #define PCAP_OPENFLAG_PROMISCUOUS 1

In file included from ../../../wine/dlls/wpcap/wpcap.c:21:
/usr/include/pcap/pcap.h:690: note: this is the location of the previous definition
 #define PCAP_OPENFLAG_PROMISCUOUS  0x00000001

make[1]: Leaving directory '/home/user/src/asp/wine/repos/multilib-x86_64/src/wine-64-build/dlls/wpcap'
../../tools/winegcc/winegcc -o wnaspi32.dll.fake -B../../tools/winebuild -m64 -fasynchronous-unwind-tables -shared ../../../wine/dlls/wnaspi32/wnaspi32.spec \
  aspi.o winaspi32.o -ladvapi32 ../../libs/port/libwine_port.a -Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now
make[1]: *** [Makefile:167: wpcap.o] Error 1
make: *** [Makefile:16625: dlls/wpcap] Error 2

И что с этим теперь делать — тоже не очень понятно. Конечно, можно попробовать временно это всё откатить, но... словом, это не самая хорошая идея. Наверное.
blackboar
Так вот вопрос, делает ли POL что-то большее (например стабильнее ли с ним работает) или нет. Описание вроде большую часть прочитал на его родном сайте, на эту тему ни слова не увидел (что впрочем не удивляет). В этом смысле нужен ли он вообще.
Основная задача, возникающая при применении Wine — это собрать правильный wineprefix со всеми нужными библиотеками и правильными настройками именно для той программы, которую мы хотим запустить. И мы можем собирать его как вручную с winetricks, так и с использованием уже написанных решений для вспомогательных программ вроде PoL и Lutris. И естественно, если мы не совсем хорошо понимаем, чего хочет эта программа (или просто хотим сделать всё чуть побыстрее), то мы можем воспользоваться последними. Но если мы знаем всё хорошо, или просто хотим поэкспериментировать, или же изучаем, так скажем, не совсем официальную версию программы, которая не отражена в установочных скриптах — нашим выбором будет собирать префикс вручную (разве что подглядывая в исходные тексты тех же самых скриптов с PoL или Lutris).

Но как бы то ни было, как только правильный префикс создан — запускать из него программу можно как угодно, хоть с использованием вспомогательных программ, хоть без, тут уже дело вкуса и удобства. Таким образом, PoL (а точнее его установочные скрипты) конечно же делает нечто для повышения стабильности — но скорее до запуска, чем во время. И если нам от него не нужен ни архив бинарных версий Wine, ни его установочные скрипты, ни его способности по управлению префиксами — от него вполне можно отказаться, ничего особенно не потеряв по части стабильности. Если мы, конечно, знаем сами, как собрать правильный префикс.
 
Зарегистрироваться или войдите чтобы оставить сообщение.