每当我更新软件包时,(它们更新)我都会收到以下有关 TeXLive 的消息:
dpkg: warning: parsing file '/var/lib/dpkg/status' near line 2888 package 'texlive-local':
missing maintainer
这不会扰乱软件包的下载或升级。但我还是想停下来。
我怎样才能做到这一点?
答案1
包裹texlive-local
格式错误。这Maintainer
场地in packages 是强制性的,即使它不是出于任何技术原因而使用 - 为所有包提供一定的可追溯性更多的是社会要求。缺少此字段不会导致任何问题,但这是不应该发生的事情,因此dpkg
会警告您。所有官方软件包都有该字段。
texlive-local
如果您删除了该软件包或升级到带有字段的版本Maintainer
,则警告消息将会消失。我建议您建议该包的维护者添加一个Maintainer
包含其电子邮件地址的字段。它进入debian/control
源代码树。
同时,您可以通过编辑包数据库并手动添加该字段来消除警告。编辑/var/lib/dpkg/status
,搜索恰好包含 的行Package: texlive-local
,然后添加下面包含的行(该地址在语法上应该格式良好,但如果您不想将某人的名字放在那里,则它不必是有效的)。Maintainer: [email protected]
答案2
幸运的你!你有备份!更重要的是,它们是每天在您不知情的情况下制作的!因此,要恢复文件只需运行:
sudo rm /var/lib/dpkg/status
sudo cp /var/backups/dpkg.status.0 /var/lib/dpkg/status
sudo apt-get update
完毕!
如果您需要更旧的文件,还有更多可供选择的文件:
ls /var/backups/dpkg.status*
/var/backups/dpkg.status.0 /var/backups/dpkg.status.4.gz
/var/backups/dpkg.status.1.gz /var/backups/dpkg.status.5.gz
/var/backups/dpkg.status.2.gz /var/backups/dpkg.status.6.gz
/var/backups/dpkg.status.3.gz
只需使用以下命令解压缩它们gunzip
:
gunzip -c /var/backups/dpkg.status.6.gz > /var/lib/dpkg/status
我自己在 AskUbuntu 中的帖子:https://askubuntu.com/a/343620/169736
如果备份不好,另一种方法是列出doc
目录内容:
sudo -i
ls /usr/share/doc | \
grep -v [A-Z] | \
grep -v '^texmf$' | \
grep -v '^debian$' | \
awk '{print $1 " install"}' | \
dpkg --set-selections