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<version>/bin/java"

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

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

確認這些符號鏈接(symlinks)是否都刪除了

java -version# javac -version# which javaws

後面倆命令必須要慎之又慎,不然可能毀掉你的系統.

cd /usr/lib/jvm# sudo rm -rf jdk<version>

然後,

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

完畢。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章