17.10需要Libpng12


13

Blackmagic Design的Resolve视频编辑器V14.0.1需要libpng1 2。不幸的是,新的17.10版本仅提供libpng1 6

有没有一种方法可以还原到17.10下的libpng12?如果是这样,我怎么得到libpng12-当我搜索它时synaptic不会列出它。


1
联系Blackmagic并提交错误报告。blackmagicdesign.com/support
Panther

除了将过时的软件包安装到系统上之外,还可以将它们放置在依赖于源代码的封闭式二进制文件附近,而无需捆绑它们。使用ldd ./path/to/<program>显示库中的给定的二进制将尝试加载。编译或下载与二进制文件相邻的过时的库,或操作envron LD_LIBRARY_PATH以包括它们。请注意,维护人员的软件包存储库中未分发的任何软件都不会从其安全团队那里获取安全更新。您将必须自己手动更新该库,一天四次是非常理想的:)
ThorSummoner

Answers:


17

Ubuntu软件包可libpng12-0用于trusty(14.04LTS)和xenial(16.04LTS),但不适用于17.10。您必须要求软件制造商(即Blackmagic Design)更新程序和/或安装程序以使用最新版本libpng16-16


解决方法是,在安装Blackmagic Design的Resolve视频编辑器之前.deb,可以从Ubuntu网页下载并安装Xenial软件包。

  • 正在安装 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

如果不确定所执行的操作,请勿尝试安装较早发行版的软件包。


您处于正确的轨道上,这可能适用于简单的包装。但是,由于冲突的依赖性,混合来自不同存储库的软件包可能会导致系统崩溃,并且随着所涉及软件包的数量和复杂性的增加,系统崩溃的可能性也会增加。此外,通过dpkg安装只会持续到下一个sudo apt upgrade,您将不得不暂停导入的软件包。最好编译libping12并将其安装在say / 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
Jaime

16.04和17.10之间有很多更改,并且混合存储库中的软件包是破坏Ubuntu或更合适的一种方法。

您是否认为安装仅依赖于libc6xzlib1g(在17.x中存在)且独立于所包含的libpng库并且没有其他依赖于此程序包的程序包会破坏apt?-我认为WPS和Resolve视频编辑器之类的程序取决于(旧的)libpng12,因此它们不会保持结果。最近的Ubuntu程序不依赖libpng12而是libpng16-16。这些应用也不会被保留。-对于这种具体情况,我认为此解决方案是安全的。
Jaime

1
在这种情况下,它确实不会破坏Apt。但是,另一个问题是,如果将的更新版本libpng12上载到16.04存储库,您将不会自动获得此更新,这是一个问题,特别是与安全性相关的情况。可以通过将16.04存储库添加到您的源列表中并使用apt-pinning来解决此问题,从而将它们仅用于libpng12(将优先级<100分配给所有其他软件包)。
fkraiem

4

您可以编译而不使用二进制包libpng

  • 如果您有要安装的程序的源代码,则可以使用原始源代码。安装库后,可以使用它来配置和编译其他应用程序。
  • 如果您没有程序的源代码,而只有.deb安装程序,例如,如果该程序是商业产品,则必须安装软件包,以避免在安装过程中出错。您可以按照以下说明从源代码创建程序包。

从官方源代码编译libpng

请注意,旧的libpng v1.2.x可能存在很多漏洞。建议使用sourceforgegithub的最新1.2.x版本。这是针对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
    

注意:安装该库不会将依赖项设置libpng12apt。您必须使用.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. 编译

    $ 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


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

尝试安装打印机驱动程序时在这里找到它,似乎可以正常工作。


拯救了我的一天!谢谢
Aryeh Beitz

0

与使用旧存储库中的旧程序包相比,从源代码进行编译更安全。

我能给您的最佳建议是使用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

我了解这似乎需要一些额外的步骤,但是以这种方式下载和编译却很简单,并且不存在破解的风险。


如果编译原始源代码并执行make install,则.deb安装程序将找不到libpng-12所满足的依赖项。安装程序将失败。-如果您可以访问该软件的源代码或其他类型的安装程序,则此解决方案将起作用。-如果无法获取源代码,则可以在安装所需软件之前编译Ubuntu软件包的源代码并安装生成的文件。
Jaime

我放弃了这个主意。实际上,这只是供应商提供的程序的创可贴,而该供应商的工作量有点……很难。很遗憾,因为该产品有很多用途。噢...继续前进...
理查德·爱默生
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.