解决WSL升级Debian 13后报错:Failed to take /etc/passwd lock: Invalid argument


发布日期 : 2025-12-09 08:52:07 UTC

访问量: 472 次浏览

在Windows 10中安装 Debian 13后,先进行软件源更新与升级:

sudo apt update && sudo apt dist-upgrade -y

出现如下问题:

Summary:
  Upgrading: 0, Installing: 0, Removing: 0, Not Upgrading: 0
  5 not fully installed or removed.
  Space needed: 0 B / 17.7 GB available

Setting up systemd (257.9-1~deb13u1) ...
Failed to take /etc/passwd lock: Invalid argument
dpkg: error processing package systemd (--configure):
 installed systemd package post-installation script subprocess returned error exit status 1
dpkg: dependency problems prevent configuration of systemd-sysv:
 systemd-sysv depends on systemd (= 257.9-1~deb13u1); however:
  Package systemd is not configured yet.
 systemd-sysv depends on systemd; however:
  Package systemd is not configured yet.

dpkg: error processing package systemd-sysv (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 systemd
 systemd-sysv
Error: Sub-process /usr/bin/dpkg returned an error code (1)

原因大概为:WSL(尤其是 WSL1)对 Linux 的部分系统功能并不完全支持,像 polkitd 这样的系统服务需要对用户和权限做底层管理,但 WSL 没有完整实现这些机制,因此 polkitd 的 post-installation 脚本会失败。这个问题在 WSL2 也可能出现。

解决方法为在管理员权限下运行如下命令:

cd /bin && mv -f systemd-sysusers{,.org} && ln -s echo systemd-sysusers && cd -

AI说这条命令的作用是: 这条命令把原有的 systemd-sysusers 程序备份为 systemd-sysusers.org。 然后让 systemd-sysusers 变成一个 echo 的软链接(假装 systemd-sysusers 存在,但其实它什么都不做,只输出参数)。 常用于“欺骗”某些安装脚本绕过 systemd 相关校验,或者在不支持 systemd 的环境(如 WSL、Docker 等)防止一些服务安装时报错。

然后运行修复命令:

apt --fix-broken install