Debian“buster/sid”上的 lilypond 升级问题

Debian“buster/sid”上的 lilypond 升级问题

我的本地 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 软件包有两个组件:

  1. 一个文件存档,它很普通.tar.gz(或任何类似的),提取到根目录
  2. 安装脚本,运行档案提取。

因此,软件包安装看起来是这样的:

  1. 包运行的预安装脚本
  2. 包存档被提取到根目录中
  3. 安装后脚本运行

删除过程类似,但具有删除前脚本和删除后脚本。

在您的情况下,发生了软件包升级,然后脚本调用顺序稍微复杂一点,但并不严重。

从他们看来,新软件包的安装后脚本由于某种原因无法运行。因此,它已经被提取到您的系统上。

因为它是一个开发发行版,所以手动修复问题并不是一件很难的事情。

编辑旧的安装后脚本。

vi /var/lib/dpkg/info/lilypond-data.postinst

找到无法创建该链接的地方,并让他允许。

之后,运行:

dpkg --configure -a

会做你想做的事。 (如果不成功,不用担心,重新编辑并重试。)

相关内容