Windows Bash(WSL) - sudo:没有tty存在且没有指定askpass程序

Chr*_*ers 15 linux bash ubuntu ubuntu-16.04 windows-subsystem-for-linux

在关注此tutroial后,我尝试以用户甚至sudo运行命令时出现以下错误:

sudo:没有tty存在且没有指定askpass程序

Lurdan在本文中的评论表明你需要运行

sudo -S <YOUR_COMMAND>
chmod 0666 /dev/tty
Run Code Online (Sandbox Code Playgroud)

chmod不起作用sudo -S,但确实有另一种解决方法吗?

Chr*_*ers 29

如此愚蠢,经过深入研究后,我看到了Beorat的解决方案:

要避免sudo tty问题和其他问题,请在运行do-release-upgrade之前运行这些命令:

sudo -S apt-mark hold sudo
sudo -S apt-mark hold procps
sudo -S apt-mark hold strace
Run Code Online (Sandbox Code Playgroud)

如果您已经升级,请运行上述命令,然后手动降级到Trusty软件包:

sudo -S wget http://mirrors.kernel.org/ubuntu/pool/main/s/sudo/sudo_1.8.9p5-1ubuntu1.1_amd64.deb
sudo -S wget http://mirrors.kernel.org/ubuntu/pool/main/p/procps/procps_3.3.9-1ubuntu2_amd64.deb
sudo -S wget http://mirrors.kernel.org/ubuntu/pool/main/s/strace/strace_4.8-1ubuntu5_amd64.deb
sudo -S dpkg -i sudo_1.8.9p5-1ubuntu1.1_amd64.deb
sudo -S dpkg -i procps_3.3.9-1ubuntu2_amd64.deb
sudo -S dpkg -i strace_4.8-1ubuntu5_amd64.deb
Run Code Online (Sandbox Code Playgroud)

更多信息:https://github.com/Microsoft/BashOnWindows/issues/482

  • 在sudo包URL中,将1ubuntu1.1_更改为1ubuntu1_以修复404. (3认同)

cch*_*ain 14

WSL使用lxrun可执行文件从Windows进行管理:

lxrun -h

Usage:
    /install - Installs the subsystem
        Optional arguments:
            /y - Do not prompt user to accept
    /uninstall - Uninstalls the subsystem
        Optional arguments:
            /full - Perform a full uninstall
            /y - Do not prompt user to accept
    /setdefaultuser - Configures the subsystem user that bash will be launched as. If the user does not exist it will be created.
        Optional arguments:
            username - Supply the username
            /y - If username is supplied, do not prompt to create a password
    /update - Updates the subsystem's package index
Run Code Online (Sandbox Code Playgroud)

鉴于此,您可以使用lxrun /setdefaultuser root.我想我会指出它的这一面,因为当我在尝试升级到Xenial之后遇到与你相同的问题时需要它.我可以确认运行此命令,然后wget/dpkg命令解决了我的问题.

我使用的命令:

wget http://mirrors.kernel.org/ubuntu/pool/main/s/sudo/sudo_1.8.9p5-1ubuntu1.4_amd64.deb
wget http://mirrors.kernel.org/ubuntu/pool/main/p/procps/procps_3.3.9-1ubuntu2_amd64.deb
wget http://mirrors.kernel.org/ubuntu/pool/main/s/strace/strace_4.8-1ubuntu5_amd64.deb
dpkg -i sudo_1.8.9p5-1ubuntu1.4_amd64.deb
dpkg -i procps_3.3.9-1ubuntu2_amd64.deb
dpkg -i strace_4.8-1ubuntu5_amd64.deb
Run Code Online (Sandbox Code Playgroud)

最后,您可能需要运行sudo apt-get install -f以防万一The following packages have unmet dependencies [xxx] but it is not going to be installed