我正在尝试使用makefile编译一些源代码。在makefile中,有一堆命令需要作为sudo运行。

当我从终端编译源代码时,一切都很好,并且在第一次运行sudo命令等待密码时,make会暂停。一旦我输入密码,做简历和完成。

但是我希望能够在NetBeans中编译源代码。所以,我开始了一个项目,并向netbeans展示了在哪里可以找到源代码,但当我编译项目时,它给出了错误:

sudo: no tty present and no askpass program specified

第一次执行sudo命令时。

我在网上查了这个问题,我找到的所有解决方案都指向一件事:禁用这个用户的密码。因为这里讨论的用户是根用户。我不想那样做。

还有其他解决办法吗?


当前回答

运行包含来自jenkins的sudo命令的shell脚本可能无法按预期运行。要解决这个问题,请遵循以下步骤

简单的步骤:

在基于ubuntu的系统中,运行" $ sudo visudo " 这将打开/etc/sudoers文件。 如果jenkins用户已经在该文件中,那么修改如下:

詹金斯

保存文件 重新开始你的jenkins工作 你不应该再看到错误信息:)

其他回答

这个问题的解决办法是

如果您在Jenkins实例之外的任何地方遇到了这个问题,请从第二步开始。第一步是针对遇到Jenkins实例问题的用户。

转到谷歌云控制台的Jenkins实例。 输入命令 sudo苏

Visudo -f /etc/sudoers

在末尾添加以下一行

jenkins所有= NOPASSWD:所有

在这里签出以了解此问题的根本原因

允许用户使用该命令而不提示输入密码应该可以解决这个问题。首先打开一个shell控制台,输入:

sudo visudo

然后编辑该文件添加到最后:

username ALL = NOPASSWD: /fullpath/to/command, /fullpath/to/othercommand

eg

john ALL = NOPASSWD: /sbin/poweroff, /sbin/start, /sbin/stop

将允许用户约翰sudo关机,启动和停止没有提示密码。

查看屏幕底部你需要在visudo中使用的击键——顺便说一下,这不是vi——并在出现任何问题的第一个迹象时不保存就退出。健康警告:损坏此文件将导致严重后果,请小心编辑!

确保你正在执行的命令是你的PATH的一部分。

如果您有一个(或多个,但不是ALL)命令sudoers条目,当命令不是路径的一部分(并且没有指定完整路径)时,您将得到sudo: no tty present和没有指定askpass程序。

您可以通过将命令添加到PATH或使用绝对路径调用它来修复它。

sudo /usr/sbin/ipset

而不是

须藤ipset

我不确定这是否是最近的更改,但我刚刚遇到了这个问题,sudo -S为我工作。

如果你碰巧来这里是因为你不能在Windows10自带的Ubuntu中sudo

在Windows中编辑/etc/hosts文件(使用记事本),它将位于:%localappdata\lxss\rootfs\etc,添加127.0.0.1 WINDOWS8,这将消除无法找到主机的第一个错误。 要消除no tty present错误,请始终执行sudo -S <命令>