◎すでにlibgnutls-dev他がインストールされていてlibgnutls28-devをインストールしないでやる場合(GNUTLS2.0)、jd-2.8.9-150226-a150417.patch.xzを解凍しパッチを書き換える
・GNUTLS2.0用 1898行目の GNUTLS_E_PREMATURE_TERMINATION を GNUTLS_E_UNEXPECTED_PACKET_LENGTH へ変更
・GNUTLS2.0、3.0両対応 1887行目から1905行目を以下に変更
---------- ここから ----------
@@ -133,8 +138,21 @@

const int JDSSL::read( char* buf, const size_t bufsize )
{
+ if ( m_terminated ) return 0;
+
int tmpsize = gnutls_record_recv( m_session, buf, bufsize );
- if( tmpsize < 0 ) m_errmsg = "gnutls_record_recv failed";
+#ifdef _DEBUG
+ std::cout << "JDSSL::read(gnutls) " << tmpsize << std::endl;
+#endif
+#if GNUTLS_VERSION_NUMBER >= 0x029900
+ if( tmpsize == GNUTLS_E_PREMATURE_TERMINATION ){
+#else
+ if( tmpsize == GNUTLS_E_UNEXPECTED_PACKET_LENGTH ){
+#endif
+ tmpsize = 0;
+ m_terminated = true;
+ }
+ else if( tmpsize < 0 ) m_errmsg = "gnutls_record_recv failed";

return tmpsize;
}
---------- ここまで ----------
jd-2.8.9-150226.tgzを解凍し、フォルダjd-2.8.9-150226へ変更したパッチjd-2.8.9-150226-a150417.patchをコピー
$ cd /解凍した場所/jd-2.8.9-150226/
$ cat jd-2.8.9-150226-a150417.patch | patch -p1
以下、3.0と一緒