Ubuntu `apt` 报错 “Errors were encountered while processing: base-passwd“ 的解决方法

Ubuntu apt 更新时出现报错:

复制代码
Setting up base-passwd (3.5.52build1) ...
Changing home-directory of irc from /var/run/ircd to /run/ircd
1 changes have been made, rewriting files
Writing passwd-file to /etc/passwd
Error making backupfile /etc/passwd.org: Invalid cross-device link
dpkg: error processing package base-passwd (--configure):
 installed base-passwd package post-installation script subprocess returned error exit status 4
Errors were encountered while processing:
 base-passwd
E: Sub-process /usr/bin/dpkg returned an error code (1)

由于是 postinst hook 阶段出现问题,想到需要检查这个 hook:

sh 复制代码
apt download base-passwd
dpkg-deb -xv base-passwd_*.deb base-passwd_extracted/
dpkg-deb -e base-passwd_*.deb base-passwd_extracted/DEBIAN
cat base-passwd_extracted/DEBIAN/postinst

发现其中有

sh 复制代码
update-passwd --verbose

这个命令。

因此,执行

sh 复制代码
sudo update-passwd --verbose

命令输出:

复制代码
Changing home-directory of irc from /var/run/ircd to /run/ircd
1 changes have been made, rewriting files
Writing passwd-file to /etc/passwd
Error making backupfile /etc/passwd.org: Invalid cross-device link

这就是产生错误的原因。

要知道 update-passwd 命令会执行什么操作,使用:

sh 复制代码
sudo update-passwd --verbose --dry-run

命令输出:

复制代码
Reading passwd from /usr/share/base-passwd/passwd.master
Reading group from /usr/share/base-passwd/group.master
Reading passwd from /etc/passwd
Reading shadow from /etc/shadow
Reading group from /etc/group
Changing home-directory of irc from /var/run/ircd to /run/ircd
Would commit 1 changes

由此可见,该命令执行失败的操作是

复制代码
Changing home-directory of irc from /var/run/ircd to /run/ircd

因此,我手动使用 vi 命令修改:

sh 复制代码
vi /etc/passwd

根据上面的提示,找到 irc,将对应的 /var/run/ircd 改为 /run/ircd。修改后 apt 恢复正常。

相关推荐
CXH72813 分钟前
nginx-file-server
运维·数据库·nginx
侯小啾21 分钟前
Ubuntu NAT模式设置静态 IP 地址
tcp/ip·ubuntu·php·静态ip
不会kao代码的小王24 分钟前
从局域网到全网可用!PDFMathTranslate 翻译工具的进阶使用法
linux
寺中人27 分钟前
Nginx安全策略
运维·nginx
Myosotis51330 分钟前
DNS练习
linux·运维·服务器
wzyannn1 小时前
Linux字符设备驱动开发详细教程(简单字符设备驱动框架)
linux·运维·驱动开发·嵌入式
LCG元1 小时前
Linux 下的端口转发:ssh、socat、iptables 三种方案对比
linux
LCG元1 小时前
深入理解 Linux 网络命名空间:自己动手实现"虚拟网络"
linux
powerfulhell2 小时前
11.11作业
linux·运维·centos
板鸭〈小号〉2 小时前
进程间关系(linux)
linux·运维·服务器