Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Ant build.xml需要用户输入,但Eclipse没有tty_Java_Eclipse_Ant_Sudo - Fatal编程技术网

Java Ant build.xml需要用户输入,但Eclipse没有tty

Java Ant build.xml需要用户输入,但Eclipse没有tty,java,eclipse,ant,sudo,Java,Eclipse,Ant,Sudo,我正在尝试更好地将Eclipse与build.xml集成。 我的构建文件为程序的本机部分调用gnumake,Makefile使用sudo将编译的lib移动到系统路径中。 不幸的是,这需要输入密码,而Eclipse的终端不接受用户输入。 因此,在eclipse中运行构建的结果是: [exec] sudo: no tty present and no askpass program specified [exec] make: *** [install] Error 1 有办法解决这个问题吗?

我正在尝试更好地将Eclipse与build.xml集成。 我的构建文件为程序的本机部分调用gnumake,Makefile使用sudo将编译的lib移动到系统路径中。 不幸的是,这需要输入密码,而Eclipse的终端不接受用户输入。 因此,在eclipse中运行构建的结果是:

 [exec] sudo: no tty present and no askpass program specified
 [exec] make: *** [install] Error 1

有办法解决这个问题吗?ant构建是否可以通过其他方式提升为root?

您可以设置/etc/sudoers文件,以便它为运行Eclipse的用户以及用于移动libs的命令指定NOPASSWD:。使用visudo命令,您可以将其添加到/etc/sudoers的末尾:

eclipseuser ALL = NOPASSWD: /bin/cp

请注意,这确实会带来安全风险,因为eclipseuser将有权覆盖系统上的任何文件。

也许是一个愚蠢的“解决方案”,但为什么不将部署作为一个单独的步骤呢?让构建生成一个打包工件:DEP、RPM或其他东西

设置一个单独的帐户,例如deployer。修改以包含允许部署人员以root用户身份执行单个命令(例如部署)的别名。使部署程序NOEXEC:。将部署人员密码存储在一个不可见的文件中,例如,deployconf仅允许用户访问:例如400或600。在ant中加载密码,并根据需要使用:


这很好用,但我还没有试过。可能需要一些努力才能将linefeed保留在.deployconf之外。

谢谢您的建议。在家里我可以接受,但在工作中任何人都可以使用这台电脑,所以这似乎是不明智的。其他sudo选项需要一个tty来输入密码,因为eclipse终端不是tty,看起来我们运气不好@disown也有一些好的建议。你是说任何人都可以在那台工作电脑上登录你的帐户吗?我还有一些想法,但需要更多地了解您的系统是如何设置和使用的。我是说,当我去吃午饭/喝咖啡时,我并不总是把电脑锁在外面。我不想让坐在我电脑前打开终端的人拥有sudo。再次谢谢你,布莱恩。这就是我现在拥有的。部署步骤根据平台将库打包到.app/.exe安装程序/.deb中。将库移动到系统路径的ant任务严格来说是为了开发,因此我可以通过Eclipse或Java-jar正常运行Java代码,并获得比封装在app/exe中的Java jar更好的反馈。例如,终端输出通常不需要特殊的日志查看器。我选择这一个是因为它是最安全的,但似乎没有一个真正的好方法来实现我的期望。我和你一样谨慎。这类似于在房子里藏一把备用钥匙。您还可以使用组权限来限制deployer操作的范围。