Часто бывает так, что в очередной минорной версии разработчики Wine что-нибудь ломают для одной конкретной программы или игры, при этом все остальные программы работают нормально. И пользователю приходится либо откатываться до предыдущей версии Wine (это возможно не во всех дистрибутивах), ставить PlayOnLinux, что не всем нравится, либо компиллировать самому.
Чтобы предотвратить это неудобство, я с некоторых пор делаю бинарные сборки Wine и выкладываю их для всех желающих. Располагаются они здесь. Когда задумывал это, то вдохновлялся примером PlayOnLinux, которые тоже делают собственные бинарные сборки Wine, но обладают некоторыми недостатками:
- Выходят нерегулярно.
- Скрипта, который их формирует, я так и не нашел.
- Мне нужна еще версия с патчами Staging, а они не для каждой версии их делают.
Поэтому я несколько месяцев назад написал свой собственный скрипт, c помощью которого можно скомпиллировать любую версию Wine, в том числе на выбор, со staging патчами или без.
Преимущество бинарных сборок:
- Идут практически любом современном дистрибутиве. За абсолютно все дистрибутивы любой давности ручаться не буду, сам проверял только на паре дистрибутивов, поэтому хотелось бы чтобы вы их протестировали и подтвердили или опровергли это утверждение.
- Для использования не требуется ничего, установленных зависимостей для Wine. Сам системный Wine при этом даже необязателен.
- Можно иметь хоть с десяток разных версий Wine для разных программ и с легкостью переключаться между ними без каких-то переустановок. Чтобы установить бинарную сборку, достаточно лишь ее распаковать в любой каталог.
В процессе создания бинарных сборок я целенаправленно не применял никаких сторонних патчей. В версии с патчами Staging присутствует только набор патчей из Staging и больше ничего. В ванильной версии не применяются никакие патчи. Даже несмотря на то, что начиная с какой-то версии из ветки 1.9.x Wine стало невозможно скомпиллировать с помощью gcc 5.3.0 и патч довольно оперативно написали, я предпочел откатиться до gcc 4.8.5, чем применять этот патч. Сомневающимся могу порекомендовать скачать мой скрипт, собрать Wine самому с помощью gcc 4.8.5 и после чего сравнить свой хэш получившегося архива с моим.
Для чего эта тема? Во-первых, для информации. Может кому-нибудь пригодятся мои бинарные сборки, мне будет приятно. И еще протестируйте их пожалуйста на своих разных дистрибутивах разных версий, чтобы посмотреть, действительно ли они дистронезависимые или нет?
И еще раз ссылки:
- Сайт с бинарными сборками Wine
- Скрипт, по которому они формируются
P.S. Перед использованием скрипта отредактируйте его и измените содержимое переменных WORKDIR (каталог, в котором будет компиллироваться Wine) и GCC_VERSION (версия GCC, которая применяется для сборки) в соответствии со своими предпочтениями. А то там сейчас стоят мои значения.
Обновлено 04.02.17:
В связи с тем, что после выхода Wine 2.0 сменилась нумерация промежуточных версий (промежуточная версия теперь 2.1 и все исходники будут лежать в папке 2.x и еще они сменили формат архива), то скрипт для сборки разделен. Скрипт wine_build_1.9.x-2.0.sh - для сборки всех предыдущих версий Wine до версии 2.0 включительно и wine_build-2.x.sh - для всех версий после 2.0. Да, это неудобно. Но это лучше, чем если бы в одном скрипте писать кучу костылей по парсингу мажорной версии, минорной версии и их какого-то совмещения. Размер скрипта значительно увеличился бы, он стал бы трудночитаемым и вряд ли это решение было бы совсем безглючным.
Обновлено 25.10.18:
Я закрываю формирование бинарных сборок в связи с тем, что Wine в последнее время оброс сторонними патчсетами, вроде esync, да и самому мне это все надоело. К тому же появился Steam Play. Все предыдущие сборки вы можете скачать отсюда, но новые формироваться вряд ли будут. Там же вы найдете скрипт, с помощью которого можно будет сделать свою собственную сборку.
Обновлено 24.10.20:
В силу некоторых причин пришлось снова расчехлить мой скрипт для формирования бинарных сборок. Только сами бинарные сборки я выкладывать не буду: мне и влом, и места на хостинге жалко, да и проблемы совместимости с разными версиями glibc в разных дистрибутивах.
Вместо этого я адаптировал сам скрипт согласно современным реалиям и выложил его на GitHub - пользуйтесь, если хотите. Скрипт пришлось практически полностью переписать, убрать костыли, а заодно и поддержку сборки из git. Для сборки из git надо писать отдельный скрипт, поскольку там другие пути и сценарии распаковки и сборки. Может займусь этим когда-нибудь.