2010-03-25 32 views
2

我试图更好地将Eclipse与我的build.xml集成。 我的构建文件调用GNU Make作为程序的本机部分,Makefile使用sudo将编译后的库移动到系统路径中。 不幸的是,这需要输入密码,并且Eclipse的终端不接受用户输入。 所以在Eclipse运行构建的结果是:Ant build.xml需要用户输入,但Eclipse没有tty

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

解决这个问题什么办法?蚂蚁的构建可以通过其他方式提升到根源吗?

回答

2

设置一个单独的帐户,例如部署者。修改/etc/sudoers以包含允许部署者执行单个命令的别名,例如,以root身份部署,部署为。使部署者NOEXEC:。将部署者的密码存储在不可见的文件中,例如, .deployconf拥有用户唯一的访问权限:例如400600。在ant加载密码,并根据需要使用:

<的loadFile SRCFILE = “$ {}的user.home/deployconf” 属性= “deployconf”/ >

这与<效果很好signjar/>,但我还没有尝试过< exec/>。可能需要做一些努力来保持.deployconf以外的换行。

+0

我选择这个,因为它是最安全的,但它似乎并不是真的有一种奇妙的方式来做我希望的事情。 – 2010-04-02 04:26:07

+0

我分享你的警惕。这类似于在房子中隐藏备用钥匙。您也可以使用组权限来限制_deployer_操作的范围。 – trashgod 2010-04-02 05:49:43

3

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

eclipseuser ALL = NOPASSWD: /bin/cp 

要知道,这确实存在安全风险的eclipseuser将不得不覆盖系统上的任何文件的权力。

+0

感谢您的建议。在家里我会很好,但在工作中任何人都可以使用这台电脑,所以这似乎是不明智的。 – 2010-03-25 19:08:16

+0

对Brian的评论+1。 其他的sudo选项*需要*一个tty的密码输入,因为eclipse终端不是tty,看起来我们运气不好。 @disown也有一​​些很好的建议。 – 2010-03-25 19:46:55

+0

您是否在说任何人都可以在该工作计算机上登录您的帐户?我还有一些想法,但需要更多地了解您的系统是如何设置和使用的。 – 2010-03-26 14:33:15

0

也许是一个愚蠢的'解决方案',但为什么不使这个部署成为一个单独的步骤呢?构建产生一个包装神器:DEP,RPM或其他东西。

+0

这就是我现在拥有的。部署步骤根据平台将库打包到.app/.exe安装程序/ .deb中。将库移动到系统路径的ant任务严格用于开发,所以我可以通过Eclipse(或通过java -jar)正常运行Java代码,并获得比在应用程序/ exe中提供的Java jar更好的反馈。 (例如,终端输出通常不需要特殊的日志查看器)。 – 2010-03-25 20:47:04