以前使用的是Deepin 15.7桌面版本,系统自带的深度文件管理器少了些功能,比如最近访问的路径、收藏文件夹等,所以升级到Deepin 15.8系统,并且在文件管理器有一个最近使用的功能,所以打算直接升级文件管理器尝试下,但是失败,以下为解决办法。
具体问题
在Deepin 15.8系统下升级深度商店时发现升级失败,并且重试了几次也无法更新成功。由于自己的强迫症,想找到不能更新的原因并且解决它,于是在深度商店上的深度文件管理器中再点击一次更新按钮,使用命令行查看下apt-get的进程并要尝试解决它。
解决详情如下(以下执行的命令为红色字)
ops@localhost:~$ ps aux | grep apt
root 3628 0.0 0.0 99016 6424 pts/2 S+ 00:22 0:00 sudo apt-get -y -m -o APT::Status-Fd=3 -o Debug::NoLocking=1 -o Acquire::Retries=1 -c /var/lib/lastore/apt.conf install -d --allow-change-held-packages -- dde-file-manager
# 尝试直接执行命令升级,发现竟然会有404的情况。
ops@localhost:~$ sudo apt-get -y -m -o APT::Status-Fd=3 -o Debug::NoLocking=1 -o Acquire::Retries=1 -c /var/lib/lastore/apt.conf install -d --allow-change-held-packages -- dde-file-manager
...
于“仅下载”模式中下载完毕
E: 无法下载 http://packages.deepin.com/deepin/pool/main/d/dde/dde_15.8_all.deb 404 Not Found [IP: 202.141.160.114 80]
...
# 为了证明不是我的网络问题,于是我登入其他vps查看deb包是否确实不存在。结果果然又是404
[ops@centos ~]$ curl -I http://packages.deepin.com/deepin/pool/main/d/dde/dde_15.8_all.deb
HTTP/1.1 404 Not Found
# 一般这种情况是官方发布错链接或者忘记上传资源了,于是打开浏览器看了下deb的地址:http://packages.deepin.com/deepin/pool/main/d/dde/
# 这时发现包名是dde_15.8+1_all.deb ,而不是dde_15.8_all.deb。
# debain分支为什么要用+号来命名文件,一直搞不懂,以前在Ubuntu也遇到过这类问题,这不又出问题了
# 但是这并不能阻碍我们背锅工程师的脚步,我决定手动升级一下
# 在包的地址上右键复制实际链接,并用wget下载下来
ops@localhost:~$ wget http://packages.deepin.com/deepin/pool/main/d/dde/dde_15.8%2b1_all.deb
# 手动安装
ops@localhost:~$ sudo dpkg -i dde_15.8+1_all.deb
(正在读取数据库 ... 系统当前共安装有 188785 个文件和目录。)
正准备解包 dde_15.8+1_all.deb ...
正在将 dde (15.8+1) 解包到 (15.7+deepin1) 上 ...
dpkg: 依赖关系问题使得 dde 的配置工作不能继续:
dde 依赖于 fonts-noto-color-emoji;然而:
未安装软件包 fonts-noto-color-emoji。
dpkg: 处理软件包 dde (--install)时出错:
依赖关系问题 - 仍未被配置
在处理时有错误发生:
dde
# 尝试再执行一次apt更新
ops@localhost:~$ sudo apt-get -y -m -o APT::Status-Fd=3 -o Debug::NoLocking=1 -o Acquire::Retries=1 -c /var/lib/lastore/apt.conf install -d --allow-change-held-packages -- dde-file-manager
...
正在读取状态信息... 完成
您也许需要运行“apt --fix-broken install”来修正上面的错误。
下列软件包有未满足的依赖关系:
dde: 依赖: fonts-noto-color-emoji 但是它将不会被安装
推荐: printer-driver-all 但是它将不会被安装
推荐: printer-driver-hpijs 但是它将不会被安装
推荐: open-vm-tools-desktop 但是它将不会被安装
推荐: open-vm-tools 但是它将不会被安装
推荐: deepin-fpapp-org.deepin.flatdeb.deepin-picker 但是它将不会被安装
dde-file-manager: 依赖: libdde-file-manager (= 4.7.1.1-1) 但是 4.6.5-1 正要被安装依赖: libdtkwidget2 (>= 2.0.9.9-1) 但是 2.0.9.2-1 正要被安装
E: 有未能满足的依赖关系。请尝试不指明软件包的名字来运行“apt --fix-broken install”(也可以指定一个解决办法)。
# 以上报错建议我们用apt --fix-broken install,那我们就按它说的做吧
ops@localhost:~$ sudo apt --fix-broken install
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
正在修复依赖关系... 完成
将会同时安装下列软件:
fonts-noto-color-emoji
下列【新】软件包将被安装:
fonts-noto-color-emoji
升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 136 个软件包未被升级。
有 1 个软件包没有被完全安装或卸载。
需要下载 0 B/7,167 kB 的归档。
解压缩后会消耗 7,841 kB 的额外空间。
您希望继续执行吗? [Y/n] y
正在选中未选择的软件包 fonts-noto-color-emoji。
(正在读取数据库 ... 系统当前共安装有 188785 个文件和目录。)
正准备解包 .https://blog.51cto.com/fonts-noto-color-emoji_0~20180424-2_all.deb ...
正在解包 fonts-noto-color-emoji (0~20180424-2) ...
正在设置 fonts-noto-color-emoji (0~20180424-2) ...
正在设置 dde (15.8+1) ...
正在处理用于 fontconfig (2.13.0-5) 的触发器 ...
# 发现这次没报错了,于是再执行一次更新命令
ops@localhost:~$ sudo apt-get -y -m -o APT::Status-Fd=3 -o Debug::NoLocking=1 -o Acquire::Retries=1 -c /var/lib/lastore/apt.conf install -d --allow-change-held-packages -- dde-file-manager
...
下列软件包将被升级:
dde-desktop dde-disk-mount-plugin dde-file-manager libdde-file-manager libdtkcore2 libdtkwidget2
升级了 6 个软件包,新安装了 0 个软件包,要卸载 1 个软件包,有 129 个软件包未被升级。
...
结语
以上为更新深度文件管理器处理的全部过程,它解决了深度文件管理器更新失败的问题。