Ubuntu 22.04.01 LTS Gnome
更改了 Python 版本,导致无法访问终端和其他一些东西。
使用了 liveUSB,然后选择尝试 ubuntu。
在该终端输入:
sudo fdisk -l
sudo mount /dev/sda1 /mnt/
sudo mount --bind /proc/ /mnt/proc/
sudo mount --bind /sys/ /mnt/sys/
sudo mount --bind /dev/ /mnt/dev/
sudo cp /etc/resolv.conf /mnt/etc/resolv.conf
sudo chroot /mnt/
该代码执行良好。然后我想将 python3.11 更改为 python 3.10
sudo update-alternatives --set python /usr/bin/python3.6
但是我得到了标题中列出的错误。使用各种代码更改 Python 的其他尝试也引发了同样的错误。在这里找不到任何类似的问题。
答案1
私人有限公司(又称伪终端)用于实现终端仿真器,例如xterm
…它涉及以与真实终端解释数据相同的方式解释传递的数据……这在向程序发送输入时非常重要(例如su
和sudo
) 通常拒绝从管道读取输入。
在 Ubuntu 中(以及许多其他 Linux 发行版), PTY 是伪设备,在/dev/pts
因此,简单方法mount —bind
无法使其在目标挂载点可用,但递归方法mount —rbind
可以。
因此,您可以通过使用如下/dev/
选项以递归方式挂载绑定来解决此问题:—rbind
sudo mount --rbind /dev/ /mnt/dev/
或者直接通过另外挂载绑定,/dev/pts/
如下所示:
sudo mount --bind /dev/pts/ /mnt/dev/pts/
或者,如果您不需要目标中的su
和这样的程序,那么您可以在运行命令之前成为用户,如下所示:sudo
chroot
root
sudo -i
然后,您将能够在同一 shell 中以提升的权限运行命令,而无需使用sudo
。
答案2
如果这种情况发生在 chroot 之外,则 /dev/pts 可能已被意外卸载。以下是挂载方法:
mount none -t devpts /dev/pts
答案3
从命令中删除 sudo。