debian 9 сборка wine из исходников

Автор kish, 02 декабря 2017, 22:44:22

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

kish

Добрый вечер! Возникла необходимость пропатчить исходник wine 2.20 для игры Корсары Возвращение легенды

Сам патч состоит из единственной строки:

https://bugs.winehq.org/attachment.cgi?id=57957&action=diff#a/dlls/wined3d/resource.c_sec1

Теперь вопрос, как скомпилировать 32 битный wine на 64 битной системе?

основная моя проблема в следующем:

./configure --prefix=$HOME/kish/wine-test --with-x --with-xattr

Цитироватьchecking for -lfreetype... not found
configure: error: FreeType 32-bit development files not found. Fonts will not be built.
Use the --without-freetype option if you really want this.

Далее без фритайпа:

./configure --prefix=$HOME/kish/wine-test --with-x --with-xattr --without-freetype

получаю:

Цитироватьconfigure: WARNING: libxrender 32-bit development files not found, XRender won't be supported.

configure: WARNING: No OpenGL library found on this system.
OpenGL and Direct3D won't be supported.

configure: WARNING: libxml2 32-bit development files not found (or too old), XML won't be supported.

configure: WARNING: libxslt 32-bit development files not found, xslt won't be supported.

configure: WARNING: libgnutls 32-bit development files not found, no schannel support.

configure: WARNING: libjpeg 32-bit development files not found, JPEG won't be supported.

configure: WARNING: libpng 32-bit development files not found, PNG won't be supported.

configure: WARNING: No sound system was found. Windows applications will be silent.

configure: Finished.  Do 'make' to compile Wine.

Synaptic показывает, что libc6-dev-i386 установлена, но по факту в usr/lib32 этой библиотеки я не вижу, есть папка, а в ней чейндж логи, и всё.

Как правильно установить все необходимые зависимости, что бы собрать wine?




ferum

Вывод об ошибках из за отсутствия в системе  заголовочных пакетов -dev упомянутых в выводе библиотек:i386 и это только начало.
wine из исходников на  64 битной системе с мультиархитектурой собирается сразу для i386 и amd64 и делается это всё не ай бы как.
Дома у меня записаны ( на бумажном носителе) все команды
Наверное завтра у меня будет время что бы попробовать разобраться в вопросе, только киньте ссылочку на ресурс где вы узнали про патч и всё прочее.
Русские дебианщики против цифрового слабоумия !

kish

#2
ЦитироватьВывод об ошибках из за отсутствия в системе  заголовочных пакетов -dev упомянутых в выводе библиотек:i386 и это только начало.

По-порядку, вот мой сурс лист:

Цитировать# Stretch

deb http://security.debian.org/ stretch/updates main
# Line commented out by installer because it failed to verify:
deb-src http://security.debian.org/ stretch/updates main

deb http://mirror.yandex.ru/debian stretch main
deb-src http://mirror.yandex.ru/debian stretch main

deb http://mirror.yandex.ru/debian stretch-updates main
deb-src http://mirror.yandex.ru/debian stretch-updates main

deb http://mirror.yandex.ru/debian/ stretch-proposed-updates main non-free contrib
deb-src http://mirror.yandex.ru/debian/ stretch-proposed-updates main non-free contrib

# Backports
#deb http://mirror.yandex.ru/debian stretch-backports main contrib non-free
#deb-src http://mirror.yandex.ru/debian stretch-backports main contrib non-free
deb https://dl.winehq.org/wine-builds/debian/ stretch main

deb http://www.deb-multimedia.org stretch main non-free
deb http://www.deb-multimedia.org stretch-backports main

Ну, например, тут я был: https://wiki.debian.org/Multiarch/HOWTO
Далее:
sudo apt-get install libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386
ЦитироватьЧтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
Уже установлен пакет libgcc1:i386 самой новой версии (1:6.3.0-18).
libgcc1:i386 установлен вручную.
Уже установлен пакет libstdc++6:i386 самой новой версии (6.3.0-18).
libstdc++6:i386 установлен вручную.
Уже установлен пакет libncurses5:i386 самой новой версии (6.0+20161126-1+deb9u1).
libncurses5:i386 установлен вручную.
Уже установлен пакет zlib1g:i386 самой новой версии (1:1.2.8.dfsg-5).
zlib1g:i386 установлен вручную.
Следующие пакеты устанавливались автоматически и больше не требуются:
  libass5 libavresample3 libbdplus0 libgles1-mesa liblivemedia57 libopenmpt-modplug1 libwine-development libwine-development:i386
  libwxbase3.0-0v5 libwxgtk3.0-0v5 libx264-148 libx265-95 linux-headers-4.12.0-0.bpo.1-amd64 linux-headers-4.12.0-0.bpo.1-common
  linux-image-4.9.0-3-amd64 python-wxgtk3.0 python-wxversion wine32-development:i386 wine64-development
Для их удаления используйте «sudo apt autoremove».
обновлено 0, установлено 0 новых пакетов, для удаления отмечено 0 пакетов, и 60 пакетов не обновлено.

Библиотеки установлены вручную, скорее всего, потому что я их устанавливал через Synaptic.

По поводу патча к Корсарам, во всех аддонах 3 части проблема с выходом в море одинаковая, как я уже понял, и решается заменой одной строки:

https://bugs.winehq.org/attachment.cgi?id=57957&action=diff#a/dlls/wined3d/resource.c_sec1

С рутрекера мне дали собранный wine 2.21, естественно без перекомпиляции, как вывод мерцающая текстура моря, и до самого корабля я пока даже не добрался:

Цитироватьwine-2.21 (Staging)
csmt: on
##################################
game: Корсары: Возвращение легенды
version: 1.2.3
##################################
home: /home/kish/Kopcap-wine/home

Wine cannot find the ncurses library (libncursesw.so.6).

Впринципе, проблемы начинаются с фактического отсутствия 32 битных библиотек в папке /usr/lib32... Я уже не одну неделю пытаюсь понять, как справиться с этой проблемой, буду рад практическим советам опытных людей.

И еще, нашел на http://portwine-linux.ru/steam-linux/ :

ЦитироватьРешение этой проблемы(ошибка со скрина при старте) заняло у меня 2 часа((, хотя все оказалось до банального просто. Пакет lib32-nvidia-libgl был объединен с еще кучей пакетов и добавлен в lib32-nvidia-utils, тк что... просто нужно установить lib32-nvidia-utils, мда, а все гайды в интернете по решению этой проблемы устарели.

Информация, действительно, очень устарела, но какой нужно репозиторий добавить, что бы подтянуть этот пакет со всеми зависимостями?



ferum

Значит смотрите одна из ваших проблем это то что вы используете свободный драйвер для nvidia для игрушек нужен проприаретарный.

в sources.list довести строку до состояния
deb http://mirror.yandex.ru/debian stretch main contrib non-free
хотя я не люблю зеркала яндекса, но это ваше дело.
sudo apt update
sudo apt install nvidia-kernel-dkms nvidia-xconfig
sudo nvidia-xconfig
sudo-reboot

Это в любом случае, далее надо определиться что мы хотим лепить ту хрень с рутрекера либо собирать wine с патчем из исходников непосредственно на вашей машине либо собирать патченный wine в пакеты.
С последним вариантом ещё надо посмтреть.
Я конечно не ас в запуске игр под wine но прикрутить готовый префикс с установленной программой с другой машины даже с другой системой для меня пока тёмный лес.
Поясню сразу что при сборке wine на вашей машине все необходимые библиотеки попадут туда в процессе установки сборочных  зависимостей, большая же часть сборочных зависимостей останется в системе в виде мусора, который удалить реально но необходимо разобраться что нужно а что нет.
Можно конечно попробовать пропатчить wine-2.21 (Staging) но не уверен что они выкладывают свои исходники.
В любом случае качать пакеты с торрентов совсем плохое решение по многим причинам.
P.S. я дважды собирал последний на тот момент wine из исходников на centos 7. Думаю в debian это не проблема.
Русские дебианщики против цифрового слабоумия !

kish

#4
ferum
Я на стадии изучения основ, почему не любите яндекс зеркала? А какие предпочитаете?

Цитироватьодна из ваших проблем это то что вы используете свободный драйвер для nvidia для игрушек нужен проприаретарный.
Да нет, давно уже играю на проприетарном :) На свободном то даже пасьянс, наверное, без фризов не запустится. Сам драйвер обновляется чуть не каждую неделю. Одно есть НО! 4.13 ядро позавчера с заголовочными файлами у меня загрузилось через обновления, и игры стали зависать, я вернулся на 14.12.0.0, и пока всё чётко.

Теперь вам на будущее поделюсь практическим опытом, я сижу под игровым ноутбуком, а тут видео идет гибридное: intel hd + geforce 680m, это не стационарный ящик, тут всё завязано на проекте Bumblebee, nvidia-xconfig тут не выполняется, иначе убьете иксы. Утилиту саму скачать можно, но и то, запускать под примусом, либо оптираном, что бы убедиться, что драйвер нужный подтянут, и система его определяет нормально. Это очень важный момент, я с этим недели 2 провозился с момента знакомства с дебиан в консоли и строкой нет драйвера для загрузки оболочки. Тоже будет, если воспользоваться скриптом sgfxi, получите консоль с пустым экраном с сообщением, что не найден модуль загрузки иксов.
Цитироватьsudo apt update
sudo sudo apt update
sudo apt install nvidia-kernel-dkms nvidia-xconfig
sudo nvidia-xconfig
sudo-reboot

Насчёт рутрекера вопросов нет, то был эксперимент, сам же я люблю всё делать своими руками и под себя, что бы понимать, что есть, что. У меня сейчас загружен wine 2.0.3, Корсары не требуют csmt, поэтому обойдусь без stanging.
Я пока ничего не могу понять с гибридной мультиартитектурой debian 9. Чтобы скомпилировать wine 2.0.3 мне нужны в системе 32 битные библиотеки, как мне их доустановить? :)

Вот ia32-libs: https://packages.debian.org/wheezy/ia32-libs
Что означает, что он мигриговал в мультиархитектуру? Как мне компилятору wine объяснить, что библиотеки надо искать в мультиархитектуре?

ferum

Зеркала предпочитаю deb http://ftp.ru.debian.org/debian/
Не понял по поводу ядра в стандартных репах stretch его быть не должно где то у вас не стыковка как и
Цитата: kish от 02 декабря 2017, 22:44:22Возникла необходимость пропатчить исходник wine 2.20 для игры Корсары Возвращение легенды
Цитата: kish от 03 декабря 2017, 19:09:00У меня сейчас загружен wine 2.0.3, Корсары не требуют csmt, поэтому обойдусь без stanging.
Крайняя версия wine 2.22. Так что именно вы хотите?
Не уверен что с гибридной графикой  всё будет хорошо работать, я наслышан про гибридную графику ноутбуков и если буду себе покупать то только на intel. Остальное пока поддерживается не так как хотелось бы.
Русские дебианщики против цифрового слабоумия !

kish

Я так и не понял, как установить все необходимые 32 битные библиотеки для компиляции wine?

Так. Пока писал сообщение, до меня дошло... Я говорю о проблеме компиляции wine из исходников, а не просто установку из репозитория, мы об одном и том же?
ЦитироватьНе уверен что с гибридной графикой  всё будет хорошо работать, я наслышан про гибридную графику ноутбуков и если буду себе покупать то только на intel. Остальное пока поддерживается не так как хотелось бы.
Посмотрите на YouTube обзоры гейминга под Linux, эра мобильной графики уже давно наступила, и вполне неплохо себя даже зарекомендовала. Ну, если вы планируете покупать ноутбук только со встроенной графикой от intel, то ваши запросы очень скромны, добавлю лирики, вы, похоже, из категории людей, до сих пор считающих жигули - машиной, но дело ваше :)

ferum

#7
Я ни когда не считал жигули машиной но в этом мире (не то что на ютюбе) 3/4 враньё а не плохо не значит замечательно....с учётом индивидуальных способностей каждого  :D
Про сборочные зависимости всё просто (строка deb-src у вас присутствует)
sudo apt-get build-dep wine-development
Смотрите предложенный список пакетов, ставите их и те же пакеты только после имени каждого дописываете :i386
это будет основа, остальное если потребуется вычисляется из вывода работы скрипта ./configure
Завтра я буду дома, где у меня записи и вам напишу дальнейший порядок действий, ещё после загрузки исходников надо будет разобраться как наложить ваш патч.
Кстати ваш wine придётся прежде удалить и сделать autoremove так как будут проблемы зависимостей и это придумал не я.
На сколько я понимаю у вас сейчас стоит сборка с wineHQ файлы в /opt а сборка из исходников ложится в /usr/local
Ну и стоит помнить что эта версия пока не стабильная.
[offtopic]Я вообще предпочитаю стационарные компьютеры, хотя сейчас пишу с нетбука и хотя располагаю временем что бы посидеть за компьютером мне в принципе жаль его тратить на игры. Мне приятней покопаться в консоли собирая какой нибудь пакет, который кому нибудь нужен. Могу конечно глянуть киношку но тут действительно потребности не велики.[/offtopic]
Русские дебианщики против цифрового слабоумия !

kish

хорошо, для фрипайп:

Цитироватьsudo apt-get install libfreetype6-dev:i386
Чтение списков пакетов... Готово
Построение дерева зависимостей       
Чтение информации о состоянии... Готово
Некоторые пакеты невозможно установить. Возможно, вы просите невозможного,
или же используете нестабильную версию дистрибутива, где запрошенные вами
пакеты ещё не созданы или были удалены из Incoming.
Следующая информация, возможно, поможет вам:

Пакеты, имеющие неудовлетворённые зависимости:
libfreetype6-dev:i386 : Зависит: libc6-dev:i386 но он не будет установлен или
                                         libc-dev:i386
                         Зависит: zlib1g-dev:i386 но он не будет установлен или
                                         libz-dev:i386
                         Зависит: libpng-dev:i386 но он не будет установлен
E: Невозможно исправить ошибки, у вас отложены (held) битые пакеты.

В поиске случайно наткнулся на тему:
ЦитироватьДля сборки программ для разных архитектур удобно использовать chroot.
Похоже, что я близок к разгадке... Пока совсем непонятно, о чём идёт речь.

ferum

#9
Вот так пихать в систему что попало со всяких трекеров, у вас же там ядра какие то левые стоят вы об этом вскользь писали. В общем прежде надо привести систему в исходное состояние. Без тех пакетов wine вам не собрать
Про croot это чистая среда ,я именно так делаю пакеты, но опять же зависимости в них прописываются под стандартную систему.
Выше правда ваш sources.list ? Что у вас в /etc/apt/sources.list.d ? Какие левые пакеты устанавливали?
Ладно если разберётесь со сборочными зависимостями дальше так:

mkdir source
cd source
git clone git://source.winehq.org/git/wine.git
cd wine

Дальше идёте в папку с исходниками wine>dills>wined3d открываете графическим текстовым редактором файл resource.c как написано https://bugs.winehq.org/attachment.cgi?id=57957&action=diff#a/dlls/wined3d/resource.c_sec1 сохраняете изменения и снова в консоль

mkdir wine64
cd wine64
.. /wine/./configure --enable-win64
make > make.log 2>&1
cd ..
mkdir wine32
cd wine32
.. /wine/ ./configure --with-win64=.. /wine64
make > make.log 2>&1
sudo make install
cd .. /wine64
sudo make install

Таким образом в систему устанавливается и 32 битная и 64 битная версии wine
P.S. делал свои записи уже давно на коленке если где то пропустил или воткнул лишний пробел не обессудьте, в любом случае надо понимать команды, в крайнем случае выругается так исправите.
Делал всё по мотивам этого кино https://www.youtube.com/watch?v=40BH9W5ToVI&t=97s
Удачи.
Русские дебианщики против цифрового слабоумия !

kish

ЦитироватьВ общем прежде надо привести систему в исходное состояние. Без тех пакетов wine вам не собрать
ferum
у вас у самого какой дистрибутив debian? 9 или 8?
ЦитироватьВыше правда ваш sources.list ?
Да, а что в этом такого удивительного?
Левых пакетов не ставил вообще никаких, по-сути всё кручусь около одного и того же. Если начинать компиляцию wine сразу с параметра -enable-win64, то и никаких вопросов нет по поводу недостающих библиотек, а вот если так: ./configure --prefix=$HOME/kish/wine-test --with-x --with-xattr --without-freetype
то сразу:

Цитироватьconfigure: WARNING: libxrender 32-bit development files not found, XRender won't be supported.

configure: WARNING: No OpenGL library found on this system.
OpenGL and Direct3D won't be supported.

configure: WARNING: libxml2 32-bit development files not found (or too old), XML won't be supported.

configure: WARNING: libxslt 32-bit development files not found, xslt won't be supported.

configure: WARNING: libgnutls 32-bit development files not found, no schannel support.

configure: WARNING: libjpeg 32-bit development files not found, JPEG won't be supported.

configure: WARNING: libpng 32-bit development files not found, PNG won't be supported.

configure: WARNING: No sound system was found. Windows applications will be silent.

configure: Finished.  Do 'make' to compile Wine.

Я нового ничего и не делаю, ввожу одни и те же команды, мне система и выдаёт, что пакеты не совместимы, и я желаю невозможного.
Если пойти от обратного, то 64 битные библиотеки присутствуют физически, их легко найти и в файловом менеджере... чего не скажешь о 32 битных библиотеках, сама папка то 32 битных библиотек есть, но нужных библиотек в ней нет, я пока не пойму "гения дебиановцев" в этом, может быть это и есть современный взгляд на Linux, пока это мнение.

Пока пытаюсь тоже понять:

Цитироватьmkdir wine64
cd wine64
.. /wine/./configure --enable-win64
make > make.log 2>&1
cd ..
mkdir wine32
cd wine32
.. /wine/ ./configure --with-win64=.. /wine64
make > make.log 2>&1
sudo make install
cd .. /wine64
sudo make install

Вы создаёте 2 отдельных каталога, под 32 битный wine и 64, а в параметрах компиляции указываете только 64 в обоих случаях, так должно быть? Или я может напрасно ищу решения для компиляции именно 32 битного wine, префикс то потом для старой игры можно будет задать 32 битным? Вопросов пока много...

ferum

У вас архитектура i386 вообще добавлена ? Это первый шаг в установке 32 битного вайна

sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386

потом всё ставится.
Русские дебианщики против цифрового слабоумия !

kish

Скомпилировал следующим образом:

./configure --prefix=$HOME/wine-test --enable-win64 --with-xattr
make depend && make CFLAGS="-mtune=native -march=native -O3 -pipe" -j$((`grep -c ^processor /proc/cpuinfo`*2+1))
make install

никаких жалоб на библиотеки не возникло, на выходе 4 каталога получил, игра запустилась. Уверен, что этот ответ поможет тут ещё очень многим, кто также заинтересуется скомпилировать патченные исходники wine под конкретную игру.

Цитироватьsudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install libc6:i386

Всё как обычно, вообщем тут надо другим путём подходить, а не библиотеки подгонять под нужды компилятора.
Цитировать
Уже установлен пакет libc6:i386 самой новой версии (2.24-11+deb9u2).

ferum

Цитата: kish от 02 декабря 2017, 22:44:22Теперь вопрос, как скомпилировать 32 битный wine на 64 битной системе?
Был ответ на ваш вопрос.
Цитата: kish от 04 декабря 2017, 20:05:43никаких жалоб на библиотеки не возникло,
Что естественно сборочные зависимости подтягивают установочные зависимости.
Цитата: kish от 04 декабря 2017, 20:05:43на выходе 4 каталога получил, игра запустилась.
Ну надо просто быть в теме что бы понять выражение локальный префикс, я не играю например , для многих было бы полезней знать патчи от etersoft.
Русские дебианщики против цифрового слабоумия !