+++ Данная ошибка создана размножением ошибки 31991 +++ Установил i586-wine Когда запускаю "wine cmd", вижу ошибки: err:wincodecs:PngEncoder_CreateInstance Failed writing PNG because unable to find libpng15.so.15 fixme:ole:CoCreateInstanceEx no instance created for interface {00000103-a8f2-4877-ba0a-fd2b6645fb94} of class {27949969-876a-41d7-9447-568f6a35a4dc}, hres is 0x80004005 err:menubuilder:convert_to_native_icon error 0x80004005 creating bitmap encoder После установки пакета i586-libpng15 ошибки прекратились. (Если б не понадобилось проверить одну мелочь, так бы и не заметил. Ошибки видны только в консоли и только с 32-битным wine в 64-битном Linux, потому что пакет libpng15 устанавливается вместе с, наверное, любым desktop manager)
Была такая проблема. В Сизифе исправлена в wine-vanilla-2.14 (Requires уже libpng16), но я не уверен, что это повлияет на 32-битую версию. В wine-2.14 также будет добавлено.
$ apt-cache depends libwine-vanilla | grep libpng Требует: libpng16 при этом пакет после arepo не имеет зависимостей: $ apt-cache depends i586-libwine-vanilla <i586-libwine-vanilla> Что тут можно сделать?
(В ответ на комментарий №2) > $ apt-cache depends libwine-vanilla | grep libpng > Требует: libpng16 > > при этом пакет после arepo не имеет зависимостей: > $ apt-cache depends i586-libwine-vanilla > <i586-libwine-vanilla> > > Что тут можно сделать? Для этого есть трюк: симлинк на системную библиотеку под 32-битной сборкой. После этого в arepo форируется ссылка на arepную библиотеку. Для примеры: skype-preinstall.
На данный момент зависимости не теряются: $ rpm -q --requires i586-libwine i586-libpng16 Но для обеспечения идентичности пакетов i586-*wine и оригинальных 32-битных *wine я бы перешёл на преобразование в путь к библиотеке. Насколько я понимаю, создание ссылки, которая при упаковке породит зависимость на файл, на который она ссылается, ничем не отличается от добавления зависимости на файл. План такой: Название библиотеки, указываемое при линковке превращать в зависимость на файл, который будет реально линковаться при запуске. То есть # png -> /usr/lib/libpng16.so.16 а не /usr/lib/libpng16.so.16.37.0 Пример кода: get_linking_lib() { # get full path to lib.so local ll=%_libdir/lib$1.so test -f "$ll" || return 1 # real lib file (WHY it links not to linked file??) local ee=$(readlink -e $ll) test -f "$ee" || return 1 # get third file (not last, not just .so) in a hope there are only one file local ee1=${ee/.so*/.so} test -f "$ee1" || return 1 local ee2=$(ls -1 $ee1.* | grep -v "^$ee") # if there are no third file, just return one if [ "$ee" = "$ee2" ] ; then echo "$ee" test -f "$ee" else echo "$ee2" test -f "$ee2" fi } L=$(get_linking_lib png) || exit ln -s $L %buildroot%_libdir/%name/$(basename $L) %files %_libdir/%name/
Начиная с wine 7.5 используется встроенный libpng, внешняя зависимость больше не нужна.