私の質問は: SBT から自分のサーバーに SSH 経由で公開できないのはなぜですか?
環境:
私は scala ライブラリを開発しており、SSH (SFTP リゾルバを使用) 経由で SBT v0.12.3 を使用してリモート リポジトリに公開したいと考えています。私の project/Build.scala SBT 設定ファイルの関連部分は、https : //github.com/harrah/xsbt/wiki/Resolvers で規定されているように構成されています。
publishTo <<= version { v =>
Some(Resolver.sftp(
"My Repository",
"example.com",
"/var/www/public_html/repositories/" + (
if (v.trim.endsWith("SNAPSHOT")) { "snapshots" } else { "releases" }
)
))
},
resolvers ++= Seq(
{
import java.io.File
val privateKeyFile: File = new File(sys.env("HOME") + "/.ssh/id_rsa")
Resolver.ssh("scala-sh", "example.com") as("my-username", privateKeyFile) withPermissions("0644")
},
...
),
を実行するsbt publish
と、承認まではうまくいきますが、それでもログイン/パスワードの入力を求められます。ローカルで実行すると、ユーザー名/パスワードのプロンプトが表示され、マシンに SSH で接続しているときにリモートで公開しようとすると、java.awt.HeadlessException
. その結果、目的の秘密鍵タイプの認証が試行されていないようです。
リモート セッションの公開試行のログは次のとおりです。
> sbt-version
[info] 0.12.3
> publish
[info] Packaging /home/me/my-lib/target/scala-2.10.1/my-lib_2.10.1-SNAPSHOT-sources.jar ...
[info] Done packaging.
[info] Wrote /home/me/my-lib/target/scala-2.10.1/my-lib_2.10.1-SNAPSHOT.pom
[info] :: delivering :: org.example#my-lib_2.10.1;SNAPSHOT :: SNAPSHOT :: release :: Sun Apr 21 12:48:59 PDT 2013
[info] delivering ivy file to /home/me/my-lib/target/scala-2.10.1/ivy-SNAPSHOT.xml
[info] Generating API documentation for main sources...
model contains 75 documentable templates
[info] API documentation generation successful.
[info] Packaging /home/me/my-lib/target/scala-2.10.1/my-lib_2.10.1-SNAPSHOT-javadoc.jar ...
[info] Done packaging.
[info] Packaging my-lib-SNAPSHOT.jar ...
[info] Done packaging.
[trace] Stack trace suppressed: run last *:publish for the full output.
[error] (*:publish) java.awt.HeadlessException:
[error] No X11 DISPLAY variable was set, but this program performed an operation which requires it.
[error] Total time: 35 s, completed Apr 21, 2013 12:49:33 PM
X11のディスプレイがないので失敗。SBT プロジェクト構成が秘密鍵認証を使用するように設定されているため、これは予期しない動作です (resolvers
上記を参照)。
これまでのところ、この問題の考えられる原因は 2 つ考えられます。詳細を以下に示します。
考えられる原因 #1: SBT の構成ミス
上記の構成に問題はありますか?
考えられる原因 #2: 古いバージョンからの Ivy バグの影響
執筆時点では、最新の SBT 0.12.3 を使用しています。SBT で使用されている Ivy のバージョンが古い可能性があります。考えれば考えるほどその可能性は低いように思えますが、まだ除外できていません。
使用している Ivy SBT のバージョンを確認するにはどうすればよいですか?
その後..
古い場合、 SBTに新しいバージョンのアイビーを使用させる方法はありますか?
別の関連する質問があります.ivy ssh publisherを参照してください.[0] .java.awt.HeadlessExceptions
"Ivy のどのバージョンを使用していますか? バージョン 2.0 の Jira バグがあります: issues.apache.org/jira/browse/IVY-783は今すぐ修正する必要があります。"
「ivy 2.3 rc-2 にアップグレードすると、SSH パブリッシュが機能するようです。」