【问题标题】:Ant build.xml requires user input, but Eclipse has no ttyAnt build.xml 需要用户输入,但 Eclipse 没有 tty
【发布时间】:2010-03-25 18:59:12
【问题描述】:

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

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

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

【问题讨论】:

    标签: java eclipse ant sudo


    【解决方案1】:

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

    eclipseuser ALL = NOPASSWD: /bin/cp
    

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

    【讨论】:

    • 感谢您的建议。在家里我会很好,但在工作中任何人都可以使用这台电脑,所以这似乎不明智。
    • +1 表示 Brian 的评论。其他 sudo 选项需要一个 tty 用于密码输入,并且由于 eclipse 终端不是 tty,看起来我们运气不好。 @disown 也有一些不错的建议。
    • 您是说任何人都可以在该工作计算机上登录您的帐户吗?我还有一些想法,但需要进一步了解您的系统是如何设置和使用的。
    • 我是说我去吃午饭/喝咖啡时并不总是把电脑锁在外面。我不希望任何坐在我电脑前打开终端的人都拥有 sudo。再次感谢布赖恩。
    【解决方案2】:

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

    这适用于 ,但我没有尝试过 .deployconf 中可能需要一些努力来避免换行。

    【讨论】:

    • 我之所以选择这个是因为它是最安全的,但似乎没有什么绝妙的方法可以实现我所希望的。
    • 我和你一样谨慎。这类似于在房子里藏一把备用钥匙。您还可以使用组权限来限制 deployer 操作的范围。
    【解决方案3】:

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

    【讨论】:

    • 这就是我现在所拥有的。部署步骤根据平台将库打包到 .app/.exe 安装程序/.deb 中。将库移动到系统路径的 ant 任务严格用于开发,因此我可以通过 Eclipse(或通过 java -jar)正常运行 Java 代码,并获得比打包在 app/exe 中的 Java jar 所能提供的更好的反馈。 (例如,终端输出的路由通常不需要特殊的日志查看器)。
    猜你喜欢
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2013-10-24
    • 1970-01-01
    • 2019-02-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多