我的本地 Debian 安装出现未完成升级的问题:
Operating System: Debian GNU/Linux buster/sid
Kernel: Linux 4.12.0-1-686-pae
Architecture: x86
apt upgrade -f
我尝试用and修复它,dpkg --configure lilypond-data
但无论我做什么,我都会收到以下消息:
Setting up lilypond-data (2.18.2-8) ...
Running mktexlsr /usr/share/texlive/texmf-dist...
mktexlsr: Updating /var/lib/texmf/ls-R-TEXLIVEDIST...
mktexlsr: Done.
ln: failed to create symbolic link 'lilypond/user': File exists
dpkg: error processing package lilypond-data (--configure):
subprocess installed post-installation script returned error exit status 1
Errors were encountered while processing:
lilypond-data
E: Sub-process /usr/bin/dpkg returned an error code (1)
如果我跑步dpkg --remove --force-remove-reinstreq --dry-run lilypond-data
我会得到:
dpkg: dependency problems prevent removal of lilypond-data:
lilypond depends on lilypond-data (= 2.18.2-8).
dpkg: error processing package lilypond-data (--remove):
dependency problems - not removing
Errors were encountered while processing:
lilypond-data
答案1
一般方法是查看(shell 脚本)/var/lib/dpkg/info/lilypond-data.postinst
并找到ln
失败的行。然后确定原因并解决它(例如,通过rm
现有链接,或者通过编辑 postinst 在最坏的情况下)。当然,然后提交一个错误。
除非其他人已经这样做了——看错误 871631。并且该错误已被修复;你只需要从不稳定的版本中获取(并安装)2.18.2-9。
(这产生了一个重要的教训:在考虑如何修复之前检查错误跟踪系统......)
另外:您可能想安装 apt-listbugs。
答案2
这部分显示了重要的内容:
ln: failed to create symbolic link 'lilypond/user': File exists
dpkg: error processing package lilypond-data (--configure):
subprocess installed post-installation script returned error exit status 1
您的安装后脚本失败。这可能是因为它没有配置为正确处理稳定版本中的先前版本。
debian 软件包有两个组件:
- 一个文件存档,它很普通
.tar.gz
(或任何类似的),提取到根目录 - 安装脚本,运行前和后档案提取。
因此,软件包安装看起来是这样的:
- 包运行的预安装脚本
- 包存档被提取到根目录中
- 安装后脚本运行
删除过程类似,但具有删除前脚本和删除后脚本。
在您的情况下,发生了软件包升级,然后脚本调用顺序稍微复杂一点,但并不严重。
从他们看来,新软件包的安装后脚本由于某种原因无法运行。因此,它已经被提取到您的系统上。
因为它是一个开发发行版,所以手动修复问题并不是一件很难的事情。
编辑旧的安装后脚本。
vi /var/lib/dpkg/info/lilypond-data.postinst
找到无法创建该链接的地方,并让他允许。
之后,运行:
dpkg --configure -a
会做你想做的事。 (如果不成功,不用担心,重新编辑并重试。)