dpkg: 处理归档 /var/cache/apt/archives/libpng12-0_1.2.54-1ubuntu1.1_amd64.deb (--unpack)时出错: 无法安装 /lib/

问题:在ubuntu19.04使用sudo apt-get update 提示标题内容。

原因:Ubuntu 14以上就已经不再支持libpng12,然而有些软件又依赖于libpng12。

使用sudo apt install xxx提示下列软件包有未满足的依赖关系: openjdk-9-jre : 依赖: libpng12-0 (>= 1.2.13-4) 但是它将不会被安装。因此得知openjdk-9需要libpng12。

使用ls -alh /lib/x86_64-linux-gnu/libpng1*  得到如下并没有libpng12

lrwxrwxrwx 1 root root   19 10月 28 22:48 /lib/x86_64-linux-gnu/libpng16.so.16 -> libpng16.so.16.36.0
-rw-r--r-- 1 root root 214K 4月   8  2019 /lib/x86_64-linux-gnu/libpng16.so.16.36.0

原因显而易见:接下来安装libpng12

方法一:

sudo vim /etc/apt/source.list

我们在其中加上deb http://cz.archive.ubuntu.com/ubuntu xenial main

保存后

sudo apt-get update
sudo apt-get install libpng12-0

没有效果。

方法二:

下载libpng12-0.deb然后安装

http://kr.archive.ubuntu.com/ubuntu/pool/main/libp/libpng/libpng12-0_1.2.54-1ubuntu1_amd64.deb

sudo mv libpng12.so.0  /usr/lib/x86_64-linux-gnu/

安装失败。。

方法三:

1. 下载文件

链接:https://pan.baidu.com/s/1IAiUENyPnXD3kDJyV11gPA
密码: qw6j

2. 复制文件

sudo cp libpng12.so.0  /usr/lib/x86_64-linux-gnu/

失败。。。

方法三看到很多人都试成功了,但是在我这不行,可能和我系统有关吧。大家可以试下^_^。


依赖libpng12的包是openjdk-9,好吧,我把openjdk-9卸载了。。。索性安装sun jdk。

最后说下删除openjdk-9的坑。因为安装openjdk就提示缺少依赖libpng12。我没搭理它,好吧,怪我!

使用sudo apt-get purge openjdk*卸载openjdk时。问题来了:还是依赖问题。额!好吧,谁让我是小白呢。

 

最后附上我正确删除openjdk的步骤。感谢作者4528283108ee   原文链接:https://www.jianshu.com/p/c8701311a718

一、卸载旧有包
大神法一:
1、 移除所有 Java相关包 (Sun, Oracle, OpenJDK, IcedTea plugins, GIJ):
?
1
2
3

apt-get update

apt-cache search java | awk '{print($1)}' | grep -E -e '^(ia32-)?(sun|oracle)-java' -e '^openjdk-' -e '^icedtea' -e '^(default|gcj)-j(re|dk)' -e '^gcj-(.*)-j(re|dk)' -e 'java-common' | xargs sudo apt-get -y remove

apt-get -y autoremove

2、清除配置信息
?
1

dpkg -l | grep ^rc | awk '{print($2)}' | xargs sudo apt-get -y purge

3、清除java配置及缓存
?
1

bash -c 'ls -d /home/*/.java' | xargs sudo rm -rf

4、手动清除JVMs
?
1

rm -rf /usr/lib/jvm/*

5、清除所有java实体,如果还有,则使用Alternatives命令(Remove Java entries, if there is still any, from the alternatives):
?
1

for g in ControlPanel java java_vm javaws jcontrol jexec keytool mozilla-javaplugin.so orbd pack200 policytool rmid rmiregistry servertool tnameserv unpack200 appletviewer apt extcheck HtmlConverter idlj jar jarsigner javac javadoc javah javap jconsole jdb jhat jinfo jmap jps jrunscript jsadebugd jstack jstat jstatd native2ascii rmic schemagen serialver wsgen wsimport xjc xulrunner-1.9-javaplugin.so; do sudo update-alternatives --remove-all $g; done

6、查找可能存在 Java的路径:
?
1
2

updatedb

locate -b '\pack200'

如果上述命令产生了任何类似于这样( /path/to/jre1.6.0_34/bin/pack200)的结果,则 删除 bin对父目录,可以这样做: sudo rm -rf /path/to/jre1.6.0_34

大神法二:
1、卸载之前,先检查Java对安装情况

update-alternatives --display java

To check the setup before uninstalling Java.

接下来,删除符号链接
2、(替换(version)为你的java具体版本.命令 “java -version”来得到,我的所1.7.0_15,那么你可以用命令 ****update-alternatives --remove "java" "/usr/lib/jvm/jdk1.7.0_15/bin/java"****来删除)

?
1
2
3

update-alternatives --remove "java" "/usr/lib/jvm/jdk/bin/java"

update-alternatives --remove "javac" "/usr/lib/jvm/jdk/bin/javac"

update-alternatives --remove "javaws" "/usr/lib/jvm/jdk/bin/javaws"

确认这些符号链接(symlinks)是否都删除了

java -version# javac -version# which javaws

后面俩命令必须要慎之又慎,不然可能毁掉你的系统.

cd /usr/lib/jvm# sudo rm -rf jdk

然后,

update-alternatives --config java# update-alternatives --config javac# update-alternatives --config javaws

最后,

vi /etc/environment

删除JAVA_HOME 这行环境变量。
-----------------分割线---------------------------------
要删除 OpenJDK (如果已安装的话)。首先,检查是安装的哪个 OpenJDK包。

dpkg --list | grep -i jdk

移除 openjdk包:

apt-get purge openjdk*

卸载 OpenJDK 相关包:

apt-get purge icedtea-* openjdk-*

检查所有 OpenJDK包是否都已卸载完毕:

dpkg --list | grep -i jdk

完毕。

 

 

 

你可能感兴趣的:(错误集锦)