更新 Raspberry Arch Linux 后无法登录

更新 Raspberry Arch Linux 后无法登录

今天,我尝试更新 Raspberry 上的 Arch Linux,但出现错误:

error: could not prepare transaction
error: failed to commit transaction (conflicting files)
package: /bin exists in filesystem
package: /sbin exists in filesystem
package: /usr/bin exists in filesystem
Errors occurred, no packages were upgraded.

因此,我按照提供的说明进行操作这里

在更新一些软件包pacman -S --force(包括软件包影子)后,我无法使用任何帐户登录并收到消息Access denied

我做错什么了吗?密码账户被重置了?

答案1

上次升级后,我的安装也非常糟糕(只是因为我事先没有阅读说明)!我所做的是使用 archlinux CD 登录(可启动的 USB 棒也可以),然后 chrooted 到我的“原始”linux 并从那里更新所有内容。我现在必须马上跑了,但如果您想要了解更多信息,我很乐意提供更多信息...

答案2

你可能在执行时覆盖了/etc/shadow。尝试登录虚拟控制台(即键盘和 HDMI 显示器的 tty)或串行端口(连接到某些 GPIO 引脚的 UART)将不再成功。/etc/passwdpacman -S --force shadow

从 Raspberry Pi 中取出 SD 卡,将其插入另一台运行 Linux 并带有 shadow 的计算机(因此可能是任何相对较新的发行版),然后执行以下操作之一:

  • 手动编辑/etc/shadow/etc/passwd保存在 SD 卡上。
  • 修复/etc/shadow/etc/passwd使用阴影套件:

    1. 如果用户不在/etc/shadow/etc/passwd,则重新创建该用户。

      sudo useradd -M -R /path/to/sd/card/mount/point whatever_your_rpi_username_is
      
    2. 重置您的用户密码。

      sudo passwd -R /path/to/sd/card/mount/point whatever_your_rpi_username_is
      

同步并卸载 SD 卡,然后将其放回 Pi 并尝试从中启动。

Raspberry Pi 上的其他用户可能也被欺骗或完全失踪。

/etc/passwd如果您覆盖或,则通过 SSH 登录应该不会发生任何变化,而通过控制台登录则不会发生任何变化/etc/shadow

跟随重要的 Arch Linux 新闻。 这最近的可以让你免于痛苦。/bin/sbin和中的所有二进制文件/usr/sbin都被移动到了/usr/bin,而你仍然有一些文件在下面,这就是 pacman 抱怨的原因。 按照那篇文章中的说明操作,但要运用你的判断力。 如果他们没有完全解决问题(毕竟你处于不干净的状态),你可能能够手动将所有内容移入/bin/sbin/usr/sbin并重/usr/bin试。

--force除非您清楚自己在做什么或者 Arch 开发人员明确告知您这样做,否则请勿使用。

相关内容