Libpng12 необходим для 17.10

13

Для видеоредактора Resolve от Blackmagic Design, V14.0.1, требуется libpng1 2 . К сожалению, только libpng1 6 поставляется с новой версией 17.10.

Есть ли способ вернуться к libpng12 под 17.10? Если да, то как мне получить libpng12 - synaptic не выдает его при поиске.

Ричард Эмерсон
источник
1
Свяжитесь с Blackmagic и отправьте отчет об ошибке. blackmagicdesign.com/support
Panther
вместо установки устаревших пакетов в систему их также можно размещать рядом с двоичными файлами с закрытыми исходными кодами, которые зависят от их объединения. Используйте, ldd ./path/to/<program>чтобы показать библиотеки, которые данный бинарный файл попытается загрузить. Скомпилируйте или загрузите устаревшие библиотеки либо рядом с двоичным файлом, либо управляйте envron LD_LIBRARY_PATH, чтобы включить их. Помните, что любое программное обеспечение, не распространяемое хранилищем пакетов вашего сопровождающего, не будет получать обновления безопасности от своей команды безопасности; вам придется самостоятельно обновлять библиотеку, четыре раза в день - идеальный
вариант

Ответы:

17

Существуют пакеты Ubuntulibpng12-0 для доверенных (14.04LTS) и xenial (16.04LTS), но не для 17.10. Вы должны попросить производителя программного обеспечения (например, Blackmagic Design) обновить программу и / или установщик, чтобы использовать самые последние версии libpng16-16.


В качестве обходного пути вы можете загрузить и установить .debпакет для Xenial с веб-страницы Ubuntu перед установкой видеоредактора Resolve от Blackmagic Design.

  • Установка libpng12

    $ wget http://mirrors.kernel.org/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb
    $ sudo dpkg -i libpng12-0_1.2.54-1ubuntu1_amd64.deb
    

ПРИМЕЧАНИЕ. Установка пакетов из более старых дистрибутивов может привести к поломке aptсистемы установки.


Безопасно ли устанавливать libpng12пакет из Xenial (16.04LTS)?

Использование пакетов из старых дистрибутивов может быть опасным. Это может нарушить систему aptустановки, поскольку более старые пакеты могут вносить зависимости в несуществующие пакеты или заменять пакеты, необходимые для новых версий. Попробуйте использовать пакеты и репозитории для используемой версии Ubuntu, то есть официальных репозиториев Ubuntu и известных репозиториев PPA (которые тестируют их пакеты).

Чтобы проверить, может ли установка libpng12сломаться apt, я проверил информацию о пакете .

  • libpng12Зависит от libc6 (>= 2.14)и zlib1g (>= 1:1.1.4), которые включены в последних версиях Ubuntu.

    $ apt-cache policy libc6     # gives me 2.24-9ubuntu2.2
    $ apt-cache policy zlib1g    # gives me 1.2.11dfsg-0ubuntu1
    
  • Обратите внимание, что никакой другой пакет Ubuntu не требует последней версии, libpng12потому что он не включен в репозиторий. Самые последние программы зависят, libpng16-16и обе библиотеки могут сосуществовать.

  • Я думаю, что вряд ли этот пакет сломает apt.

Не пытайтесь установить пакет более старого дистрибутива, если вы не уверены в том, что делаете.

Jaime
источник
Вы находитесь на правильном пути, и это может работать для простых пакетов. Однако смешивание пакетов из разных репозиториев может привести к поломке системы из-за конфликтующих зависимостей, и вероятность поломки системы возрастает с увеличением количества и сложности рассматриваемых пакетов. Кроме того, установка через dpkg продлится только до следующего sudo apt upgrade, вам придется приостановить импортированный пакет. Лучше откомпилировать libping12 и установить его, скажем, в / usr / local.
Пантера
Я согласен, это решение не работает со всеми пакетами, которые могут вам понадобиться. В частности, я попробовал это в недавно установленной Ubuntu 17.04, в которой был libpng16-16пакет перед установкой, libpng12чтобы ответить на этот вопрос. В результате обе библиотеки установлены. Я сделал apt-get upgradeв конце. - Прямо сейчас я думаю, что правила в хранилище не считают libpng16последней версией libpng12. В свою очередь, libpng12зависит только от libc6 (> = 2.14) и zlib1g (> = 1: 1.1.4). - Я думаю, что это решение libpng12может быть безопасным для использования apt-get update.
Хайме
Между 16.04 и 17.10 есть много изменений, и смешивание пакетов из репозиториев - один из многих способов сломать Ubuntu или, более конкретно, apt.
Пантера
Считаете ли вы, что установка пакета, который зависит только от ( libc6и xzlib1gсуществует в 17.x), который не зависит от включенной libpngбиблиотеки и от которого не зависит ни один другой пакет, может сломать apt? - Я думаю, что такие программы, как WPS и редактор видео Resolve, зависят от (старых) libpng12и они не будут удерживаться. Последние программы Ubuntu не зависят от libpng12но libpng16-16. Эти приложения не будут удерживаться ни. - Для этого конкретного случая я считаю это решение безопасным.
Хайме
1
В этом случае это действительно не сломает Apt. Однако другая проблема заключается в том, что если обновленная версия libpng12загружена в репозитории 16.04, вы не получите это обновление автоматически, что особенно важно, если оно связано с безопасностью. Это можно исправить, добавив репозитории 16.04 в список источников и используя apt-pinning, чтобы они использовались только для libpng12(присвоение приоритета <100 всем остальным пакетам).
фкраием
4

Вместо использования бинарного пакета вы можете скомпилировать libpng.

  • Если у вас есть исходный код программы, которую вы хотите установить, вы можете использовать оригинальный исходный код. После установки библиотеки вы можете использовать ее для настройки и компиляции других приложений.
  • Если у вас нет исходного кода программы, а есть только .debустановщик, например, если программа является коммерческим продуктом, вы должны установить пакет, чтобы избежать ошибок во время установки. Вы можете создать пакет из исходного кода, используя инструкции ниже.

Компиляция libpng из официального исходного кода

Обратите внимание, что старый libpng v1.2.x может иметь много уязвимостей . Рекомендуется использовать самую последнюю версию 1.2.x от sourceforge или github . Это для версии v.1.2.59.

  1. Установите пакеты для компиляции программного обеспечения (если они не установлены)

    $ sudo apt-get install build-essential
    
  2. Получить и извлечь исходный код

    $ wget https://github.com/glennrp/libpng/archive/v1.2.59.tar.gz
    $ tar xvfz v1.2.59.tar.gz 
    
  3. Скомпилируйте и установите библиотеку

    $ cd libpng-1.2.59/
    $ ./configure
    $ make check
    $ sudo make install
    

ПРИМЕЧАНИЕ. При установке библиотеки не будет установлена ​​зависимость libpng12в соответствии с apt. Вы должны использовать .debпакет для его установки и поддерживать установку других .debфайлов, которые зависят от него. Чтобы создать соответствующий .debпакет, вы можете использовать следующие инструкции.


Использование исходного кода пакета Ubuntu

libpng12-0пакет соответствует libpng 1.2.54. У Ubuntu есть настроенная версия, которую они назвали 1.2.54-1ubuntu1.

  1. Установите пакеты для компиляции программного обеспечения и создания пакетов Ubuntu (если они не установлены)

    $ sudo apt-get install build-essential fakeroot dpkg-dev devscripts
    
  2. Загрузите файлы исходного кода, используя .dscфайл со страницы

    $ dget -d http://archive.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng_1.2.54-1ubuntu1.dsc
    
  3. Извлеките исходный код, применяя патч, предоставленный Ubuntu

    $ dpkg-source -x libpng_1.2.54-1ubuntu1.dsc 
    
  4. Проверьте зависимости для пакета

    $ cd libpng-1.2.54/
    $ dpkg-buildpackage -rfakeroot -b
    

    Это показывает неудовлетворенные зависимости сборки. В моем случае...

     :
    dpkg-checkbuilddeps: error: Unmet build dependencies: debhelper (>= 8.1.3) libtool automake autoconf zlib1g-dev
    
  5. Установите зависимости

    $ sudo apt-get install debhelper libtool automake autoconf zlib1g-dev
    
  6. Compile

    $ fakeroot debian/rules binary
    

    Полученные пакеты будут расположены в родительской папке

    ../libpng12-0_1.2.54-1ubuntu1_amd64.deb
    ../libpng12-dev_1.2.54-1ubuntu1_amd64.deb
    ../libpng3_1.2.54-1ubuntu1_amd64.deb
    
  7. Используйте полученный пакет

    $ cd ..
    $ sudo dpkg -i libpng12-0_1.2.54-1ubuntu1_amd64.deb
    

ПРИМЕЧАНИЕ. Компиляция и установка пакетов для старых дистрибутивов так же опасны, как и использование бинарных пакетов для старых дистрибутивов . Описанный процесс компиляции для libpng12пакета использует только пакеты в репозиториях Ubuntu 17.x и не приводит к ошибкам. Я думаю, что использование полученного пакета не сломает apt.

Jaime
источник
1

Этот источник работал для меня на Ubuntu 18:

sudo echo 'deb http://cz.archive.ubuntu.com/ubuntu trusty main universe' \ > /etc/apt/sources.list.d/extra.list
sudo apt update
sudo apt-get install libpng12-0
sudo rm /etc/apt/sources.list.d/extra.list

Нашел его здесь, когда пытался установить драйверы принтера, и, похоже, он работает.

GeoKwi
источник
спас мой день! спасибо
Арье
0

IMO, вы безопаснее компилируете из исходного кода, чем используете старые пакеты из старых репозиториев.

Лучший совет, который я могу вам дать - подать отчет об ошибке в blackmagic, им нужно обновить свои зависимости.

https://www.blackmagicdesign.com/support/

Для компиляции перейдите в соответствующий пакет Ubuntu, чтобы определить пакет и исходный код

https://packages.ubuntu.com/xenial/libpng12-0

Итак, вы хотите "libpng_1.2.54.orig.tar.xz"

https://sourceforge.net/projects/libpng/files/libpng12/older-releases/1.2.54/

скачать, распаковать, скомпилировать, установить (начиная с загрузки и распаковки tar-шара).

cd libpng-1.2.54
./configure --prefix=/usr/local
make
sudo make install

Удалить снова (при необходимости)

#run within libpng-1.2.54 directory
sudo make uninstall

Я понимаю, что это выглядит как несколько дополнительных шагов, но скачивать и компилировать таким образом тривиально, и нет риска сломать apt.

пантера
источник
Если вы скомпилируете исходный исходный код и сделаете это make install, .debустановщик не найдет зависимость libpng-12как выполненную. Установщик не удастся. - Это решение будет работать, если вы сможете получить доступ к исходному коду или инсталлятору другого типа для программного обеспечения. - Если вы не можете получить исходный код, вы можете скомпилировать исходные коды для пакета Ubuntu и установить полученный файл перед установкой нужного программного обеспечения.
Хайме
Я отказался от идеи. Это действительно просто пластырь для программы от продавца, с которым ... эээ ... довольно сложно работать. Жаль, потому что у продукта есть много чего. О, хорошо ...
Ричард Эмерсон