From: "5.5" <5.5@...> Date: 2014-02-25T12:29:55+09:00 Subject: [ruby-list:49757] Re: Ruby 2.0 以降で自前 gem サーバーからインストールできない 5.5 です。 その後,もう少し分かりました。 まず,特定のウェブサーバーでしか起こらないことが分かりました。 具体的にはさくらインターネットの共用サーバーです。最近契約し た複数のサーバーで同じ状況でした。とくに変わった設定はしてい ないと思います。 もう一つ分かったのは,specs.4.8.gz を取得した際に Ruby 2.0 以上ではバイナリーで取れていないために,Gem.gunzip が失敗し ている,ということです。 以下のようなスクリプトを実行します。 uri=URI.parse("http://XXXXX.sakura.ne.jp/gemsource/specs.4.8.gz") data=Gem::RemoteFetcher.new.fetch_http uri p data.encoding Ruby 1.9.3 では,data が ASCII-8BIT であるのに対し,2.0 以 降では UTF-8 になっていました。バイト数も全然違いました。 ブラウザーから specs.4.8.gz をダウンロードしたときは,さくら のサーバーも他のサーバーも正常なファイルが得られました。 これ以上は調べられていません。 (14/02/24 23:12), 5.5 wrote: > 5.5 と申します。 > > 【概要】 > > 自作 gem をウェブサーバー上に置き,Gemfile に source 指定 > して bundle install する,というやり方が,Ruby 2.0 以降で > うまくいかなくなりました。 > > > 【詳細】 > > ローカルで > gem generate_index > を使って,gem サーバーとして必要なファイル群を生成しました。 > > これをウェブサーバーにアップロードします。 > > その URL を Gemfile に > > source "http://XXXXX.sakura.ne.jp/gemsource/" > > のように書きました。 > (ドメイン名は架空のものに差し替えてあります) > > この状態で > bundle install > すると,Ruby 1.9.3 ではうまくインストールできていたのですが, > Ruby 2.0 以降では,以下のようなエラーが出てインストールでき > ません。 > >> bundle install > Fetching source index from http://XXXXX.sakura.ne.jp/gemsource/ > Retrying source fetch due to error (2/3): Bundler::HTTPError Could not > fetch specs from http://XXXXX.sakura.ne.jp/gemsource/ > Retrying source fetch due to error (3/3): Bundler::HTTPError Could not > fetch specs from http://XXXXX.sakura.ne.jp/gemsource/ > Could not fetch specs from http://XXXXX.sakura.ne.jp/gemsource/ > > いくつかの Ruby で試してみたところ,インストールできたのは > 次のものでした: > > [OK] ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux] > [OK] ruby 1.9.3p484 (2013-11-22) [i386-mingw32] > > インストールできなかったのは以下のものでした: > > [NG] ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-linux] > [NG] ruby 2.0.0p353 (2013-11-22 revision 43784) [x86_64-linux] > [NG] ruby 2.0.0p353 (2013-11-22) [i386-mingw32] > [NG] ruby 2.1.0p0 (2013-12-25 revision 44422) [x86_64-linux] > [NG] ruby 2.1.1p76 (2014-02-24 revision 45161) [x86_64-darwin10.0] > > これを見ると,プラットフォームに関係なく 2.0.0 以降でできなく > なったように見えます。 > > > RubyGems と Bundler のバージョンは以下のとおりです: > > RubyGems 2.2.2 > Bundler version 1.5.3 > > > なお,ウェブサーバーのログを見ると,インストールに成功する > 場合も失敗する場合も,存在しない > > http://XXXXX.sakura.ne.jp/gemsource/api/ > > にアクセスしているみたいです。 > -- 5.5@moji.gr.jp