0

テスト目的で、構成済みの EC2 マシンの作成を自動化しています。作成/構成は、ssh 接続を介して行われます (さまざまな OS で同じロジック)。Windows (Windows 2003 Server) には、ssh が事前構成された cygwin があるので、そこで ssh を実行できます。

構成の一部として、特定のバージョンの Java SDK をインストールする必要があります。exe インストーラー (jdk-6u34-windows-i586.exe) をマシンにアップロードし、/s パラメーターを指定して実行します (サイレント インストール)。これを Windows コンソール (リモート デスクトップ) から、またはリモート デスクトップの cygwin 経由で実行すると、完全に動作します。しかし、そこにsshしてssh経由でcygwinで実行すると、失敗した場合。

インストーラーがコンテンツを部分的に抽出し、終了コード 67c:\Documents and Settings\Administrator\Application Data\Sun\Java\jdk1.6.0_34で失敗するため、失敗は非常に奇妙に思えます。終了前に抽出されるファイルの数はさまざまです。

Java と を使用してプログラムでこれを行う場合Jsch、コマンドはエラー メッセージもinitgroups: Permission deniedエラー ストリームに出力します。ssh 経由で手動で接続するとこのメッセージが表示されないため、関連しているかどうかはわかりません (グーグルで調べたところ、このエラーがまったく別のコンテキストで発生していることがわかりましたが、役に立ちませんでした)。

なぜこれが起こるのか(そしてそれを修正/回避する方法)、説明を歓迎します。EC2 Windows マシンに特定の JDK を確実に自動的にインストールする方法に関するその他のヒントも歓迎します。ありがとう。

4

1 に答える 1

0

Windows には (一部のバージョンから) 意図的なアーキテクチャの分離があり、サービスが UI にアクセスできないことが判明しました。

cygwin ssh-daemon はサービスとして実行されていたため、UI 呼び出しを行ったり、UI ベースのプログラムを開始したりできませんでした。JDK インストーラーは UI ベースで (サイレント モードでも UI っぽいことをしているように見えました)、これは禁止されました。

リモート デスクトップ セッションから同じものを実行すると、UI にアクセスできるため、すべて正常に機能しました。

于 2015-09-22T12:33:07.337 に答える