我需要运行 Ubuntulibpng
实用程序convert
,但当我运行它时,我收到一条错误消息,提示我的版本libpng
已过期,必须更新。因此,我选择了通常的apt-get install
,但由于我现在不记得的原因,这并没有解决问题。事情从此变得混乱。
我下载了 的源代码libpng
,执行了 make 和 make install。虽然在 中创建了一个可共享库/usr/local/lib
,但 convert 现在报告:
convert: error while loading shared libraries: libpng.so.2: cannot open shared object file: No such file or directory
在 StackExchange 上其他热心人士的建议下,我apt-get install
再次尝试获取并安装软件包libpng12-dev
和libpng12-0
。然而,两次尝试都生成了以下消息
libpng12-dev is already the newest version
libpng12-0 is already the newest version
...所以什么都没安装。可能是我笨拙地尝试制作源代码把事情搞砸了。有什么办法可以清理吗?例如,安装旧版本的 libpng,然后安装最新版本?
之后:
根据 dogbert 的建议,我查阅了https://www.debian-administration.org/article/176/Reinstalling_packages_to_fix_problems并发现我可以强制删除一个包,而不会删除所有依赖的包:
dpkg --purge --force-depends libpng12-0
因此,我这样做了,然后重新安装了libpng12-0
。但是,convert
仍然报告相同的错误。好吧,也许我需要重新安装,convert
因为libpng12-0
库可能不在预期的位置。convert
是 的一部分imagemagick
,所以我卸载了它。但是,convert
在命令行上仍然可用,因此卸载imagemagick
并不能摆脱它。重新安装imagemagick
。相同的结果:convert
仍然抱怨找不到libpng.so.2
。
搜索了整个硬盘,发现没有libpng.so*
任何文件存在。显然安装包并没有创建所需的文件。
答案1
libpng.so.2 应该是 libpng-1.0.x 的共享库(当前版本为 1.0.63)。您有“convert”(imagemagick 的一部分),它显然是用 libpng-1.0.x 构建的,因此您需要通过 apt-get 删除并重新安装 imagemagick。一旦成功,您可以再次尝试从 imagemagick.org 安装较新版本的 imagemagick,它应该可以与 libpng12 配合使用。