文章更新

20170308 初次成文

问题简述

在之前的文章中:

树莓派折腾记:打造HiFi解码转盘(基于Volumio和Dac扩展板)

小苏特意提到了不要给Volumio执行upgrade操作,即使你这么做了,你也无法升级成功。但是由于Volumio基于Raspbian(基于Debian基于Linux),大多数用户不是很清楚"Volumio不能执行系统升级操作",当他们习惯了Linux的操作模式后,便不可避免地在Volumio执行了apt-get upgrade操作。这样问题就产生了,在升级过程中会造成升级失败和升级中断,并报出类似错误(以下简称错误1):

Unpacking systemd (215-17+deb8u5) over (215-17+deb8u4) ...
dpkg: error processing archive /var/cache/apt/archives/systemd_215-17+deb8u5_armhf.deb (--unpack):
trying to overwrite '/usr/share/dbus-1/system-services/org.freedesktop.systemd1.service', which is also in package systemd-shim 9-1
dpkg-deb: error: subprocess paste was killed by signal (Broken pipe)
addgroup: The group `systemd-journal' already exists as a system group. Exiting.
Processing triggers for dbus (1.8.20-0+deb8u1) ...
Errors were encountered while processing:
 /var/cache/apt/archives/systemd_215-17+deb8u5_armhf.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)

在此次升级报错之后就再也无法用apt-get安装任何软件包了,当使用apt-get安装其他软件包时,会报出类似错误(以下简称错误2):

You might want to run 'apt-get -f install' to correct these:
The following packages have unmet dependencies:
libpam-systemd : Depends: systemd (= 215-17+deb8u6) but 215-17+deb8u5 is to be installed
libpam-systemd : Depends: systemd-sysv (= 215-17+deb8u6) but 215-17+deb8u5 is to be installed
E: Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

刚在SD卡中烧写好Volumio的时候,小苏就因为在不知情的情况下执行了apt-get upgrade操作,导致将Volumio恢复了一次默认设置(所有用户数据都会被清除,系统会恢复到刚刚烧写好系统的状态),恢复默认设置之后就再也不敢升级了。但是依小苏的观点,对于Linux来说,不能进行升级是很不爽的(在安装软件时总是会提示"65 not graduated"),在强迫症和好奇心的驱使下,昨天晚上小苏不顾SD卡中的近9G,800多首音乐文件和各种已经折腾成功的劳动成果,又执行了这个神奇的命令:

sudo apt-get upgrade

结果可想而知,升级过程中又报错了,并且又出现了"任何软件包都无法安装"的错误。

于是根据报错信息执行:

sudo apt-get -f install

结果还是提示"错误2"(在这种情况下加"-f"参数好像并没有用~因为在第一次小苏把系统弄成这样之后也执行过这条命令,如果有用的话小苏也不会恢复默认设置了~)。不得已只好又去谷歌了。

解决方案

意料之中,又出现到一堆英文搜索结果,在第一页,第一条搜索结果中意外看到了在Volumio官方社区中有一位用户和我的情况非常相似,也是因为在不知情的情况下升级了系统,最终导致无法安装vim,抱着一丝希望往下翻回帖,终于在17楼发现了解决方法,并且是3月1号,也就是一周前才回的帖子:

170308-101606.jpeg

他的做法是,在Debian的官方软件源服务器中下载错误中"未满足依赖关系"版本的软件包到本地,然后执行dpkg -i --force-overwrite强制安装此包,具体到我上面报出的错误,我的解决方法是这样的:

由于"systemd"和"systemd-sysv"的版本过旧(215-17+deb8u5),不满足包"libpam-systemd"的依赖关系,所以我需要在Debian的官方软件源中下载"systemd"和"systemd-sysv"且版本都为"215-17+deb8u6"的这两个软件包:

wget http://ftp.de.debian.org/debian/pool/main/s/systemd/systemd_215-17+deb8u6_armhf.deb
wget http://ftp.de.debian.org/debian/pool/main/s/systemd/systemd-sysv_215-17+deb8u6_armhf.deb

下载完成后,使用dpkg命令强制安装这两个包:

sudo dpkg -i --force-overwrite systemd_215-17+deb8u6_armhf.deb
sudo dpkg -i --force-overwrite systemd-sysv_215-17+deb8u6_armhf.deb

安装过程中可能会报warning,安装完成后进行更新软件源索引和升级操作,在升级过程中,如果遇到Cannot remove file: "Structure needs cleaning"错误的话,重启系统再次更新软件源索引和系统升级:

sudo apt-get update
sudo apt-get upgrade

不出意外的话,此次所有软件包都会被升级成功且不会报任何错误。当你再使用apt-get安装软件包时,也不会报错,并且目前来说,Volumio的各个功能都没有受到影响。

但小苏仍然需要强调,如非必要,不要给Volumio执行upgrade操作,虽然执行升级操作后出现的错误能用以上方法解决,但是毕竟官方不建议咱们升级,咱就别升啦。

参考资料

Can't install vim : Volumio 2 Pi 3 - volumio.org:
https://volumio.org/forum/can-install-vim-volumio-t4167.html

标签: volumio, 升级失败, systemd

已有 2 条评论

  1. Douglas

    P主你好,

    看了你的文章,我遇到了一个volumio升级的问题,但是似乎和你说的又不太一样,我现在在树莓派2B上运行V2.118版本,发现了最新的V2.129,想升级上去,结果卡在creating backup 20%的进度条,也不下载什么,直接变成了successful,要求重启,重启后发现版本没有升级,这是防火墙的缘故吗?更新源被墙了?

    1. 我文章里面说的是在终端对Volumio进行对软件包的升级,而你说的是在Volumio的WebUI里对系统的升级。我刚刚在WebUI中对Volumio升了一次级,顺利升级到V2.129了,可能你那边的网络确实有问题...可以尝试在路由器上挂个VPN或者过一段时间再试。

添加新评论