sudo:无法分配 pty:没有这样的设备

sudo:无法分配 pty:没有这样的设备

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…它涉及以与真实终端解释数据相同的方式解释传递的数据……这在向程序发送输入时非常重要(例如susudo) 通常拒绝从管道读取输入。

在 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和这样的程序,那么您可以在运行命令之前成为用户,如下所示:sudochrootroot

sudo -i

然后,您将能够在同一 shell 中以提升的权限运行命令,而无需使用sudo

答案2

如果这种情况发生在 chroot 之外,则 /dev/pts 可能已被意外卸载。以下是挂载方法:

mount none -t devpts /dev/pts

答案3

从命令中删除 sudo。

相关内容