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号,也就是一周前才回的帖子:
他的做法是,在Debian的官方软件源服务器中下载错误中"未满足依赖关系"版本的软件包到本地,然后执行dpkg -i --force-overwrite
强制安装此包,具体到我上面报出的错误,我的解决方法是这样的:
由于"systemd"和"systemd-sysv"的版本过旧(215-17+deb8u5),不满足包"libpam-systemd"的依赖关系,所以我需要在Debian的官方软件源中下载"systemd"和"systemd-sysv"且版本都为"215-17+deb8u6"的这两个软件包:
下载完成后,使用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