将 JDK 安装到 Azure Batch 中池的计算节点

Installing JDK to a pool's compute nodes in Azure Batch

我必须在池中的 Ubuntu 个服务器节点上安装 java。我试图通过任务来完成,但每次我尝试使用以下代码通过任务安装 java 时:

 TaskAddParameter taskToAdd = new TaskAddParameter();
    taskToAdd.withId(taskId).withCommandLine(String.format("sudo apt-get install openjdk-8-jdk"));
    // Associate resource file with task
    taskToAdd.withResourceFiles(getListOfResourceFiles(sas));

我收到一条错误消息

sudo: no tty present and no askpass program specified

我也通过在池的 StartTask 中给出此命令在池级别尝试了上述方法,但它也给了我同样的错误。

我需要在我的池节点上安装 java,以便我可以 运行 我的 java 程序。

您应该在池的 StartTask 上执行此操作。

对于 commandLine,您需要调用 shell,如最佳实践指南 here 中所述。所以代替:

sudo apt-get install openjdk-8-jdk

做:

/bin/bash -c "sudo apt-get install openjdk-8-jdk"

此外,您应该使用 PoolAdmin AutoUser 用户身份,这样您就不必调用 sudo。请参阅 this guide 了解更多信息。