Closed ngram closed 8 years ago
認証Proxy環境下でインストールに失敗するので、それを修正するのが目標です。
下記のREADMEを読んでインストール作業 https://github.com/ranguba/rroonga
Fetching: rroonga-6.0.0.gem (100%)
ERROR: Error installing rroonga:
The 'rroonga' native gem requires installed build tools.
Please update your PATH to include build tools or download the DevKit
from 'http://rubyinstaller.org/downloads' and follow the instructions
at 'http://github.com/oneclick/rubyinstaller/wiki/Development-Kit'
C:\Users\ngram>ruby -v
ruby 2.1.5p273 (2014-11-13 revision 48405) [i386-mingw32]
バイナリは以下のものを利用 DevKit-mingw64-64-4.7.2-20130224-1432-sfx
C:\bin\Ruby21-DevKit>ruby dk.rb init
[INFO] found RubyInstaller v2.1.5 at C:/bin/Ruby21
Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.
C:\bin\Ruby21-DevKit>ruby dk.rb install
[INFO] Updating convenience notice gem override for 'C:/bin/Ruby21'
[INFO] Installing 'C:/bin/Ruby21/lib/ruby/site_ruby/devkit.rb'
C:\bin\Ruby21-DevKit>gem install rroonga
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
ERROR: Error installing rroonga:
ERROR: Failed to build gem native extension.
C:/bin/Ruby21/bin/ruby.exe extconf.rb
checking for GCC... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/bin/Ruby21/bin/ruby
C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:456:in `try_do': The compiler failed to gen
erate an executable file. (RuntimeError)
You have to install development tools first.
from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:571:in `block in try_compile'
from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:524:in `with_werror'
from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:571:in `try_compile'
from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:811:in `macro_defined?'
from extconf.rb:39:in `block in <main>'
from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:918:in `block in checking_for'
from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:351:in `block (2 levels) in po
stpone'
from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:321:in `open'
from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:351:in `block in postpone'
from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:321:in `open'
from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:347:in `postpone'
from C:/bin/Ruby21/lib/ruby/2.1.0/mkmf.rb:917:in `checking_for'
from extconf.rb:38:in `<main>'
extconf failed, exit code 1
Gem files will remain installed in C:/bin/Ruby21/lib/ruby/gems/2.1.0/gems/rroong
a-6.0.0 for inspection.
Results logged to C:/bin/Ruby21/lib/ruby/gems/2.1.0/extensions/x86-mingw32/2.1.0
/rroonga-6.0.0/gem_make.out
C:\bin\Ruby21-Devkit32>ruby dk.rb init
[INFO] found RubyInstaller v2.1.5 at C:/bin/Ruby21
Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.
C:\bin\Ruby21-Devkit32>ruby dk.rb install
[INFO] Skipping existing gem override for 'C:/bin/Ruby21'
[WARN] Skipping existing DevKit helper library for 'C:/bin/Ruby21'
C:\bin\Ruby21-Devkit32>ruby dk.rb init
[INFO] found RubyInstaller v2.1.5 at C:/bin/Ruby21
Initialization complete! Please review and modify the auto-generated
'config.yml' file to ensure it contains the root directories to all
of the installed Rubies you want enhanced by the DevKit.
C:\bin\Ruby21-Devkit32>ruby dk.rb install
[INFO] Skipping existing gem override for 'C:/bin/Ruby21'
[INFO] Installing 'C:/bin/Ruby21/lib/ruby/site_ruby/devkit.rb'
C:\bin\Ruby21-Devkit32>gem install rroonga
Temporarily enhancing PATH to include DevKit...
Building native extensions. This could take a while...
Successfully installed rroonga-6.0.0
Parsing documentation for rroonga-6.0.0
Installing ri documentation for rroonga-6.0.0
Done installing documentation for rroonga after 9 seconds
1 gem installed
あれ!? gem install rroonga
とするとバイナリーがインストールできるはずなんですけど。。。!
あれ!? gem install rroonga とするとバイナリーがインストールできるはずなんですけど。。。!
Windowsで認証Proxyを通じてインストールする場合に、うまくいかないはずです。 これから実際にWindows上で再現できる環境を作成します。
なるほど!
irb(main):001:0> require 'groonga'
=> true
irb(main):002:0> Groonga::Database.create(:path => "./test.db")
=> #<Groonga::Database id: <nil>, name: (anonymous), path: <./test.db>, domain:(nil), range: (nil), flags: <>>
irb(main):003:0> Groonga::Schema.create_table("Items", :type => :hash)
=> [#<Groonga::Schema::TableDefinition:0x279d080 @name="Items", @definitions=[], @options={:context=>#<Groonga::Context encoding: <:utf8>, database: <#<Groonga::Database id: <nil>, name: (anonymous), path: <./test.db>, domain: (nil), range: (nil), flags: <>>>>, :type=>:hash}, @table_type=Groonga::Hash>]
irb(main):004:0> items = Groonga["Items"]
=> #<Groonga::Hash id: <256>, name: <Items>, path: <./test.db.0000100>, domain:<ShortText>, range: (nil), flags: <>, size: <0>, encoding: <:utf8>, default_tokenizer: (nil), token_filters: [], normalizer: (nil)>
irb(main):005:0> items.size
=> 0
irb(main):006:0> items.add("http://en.wikipedia.org/wiki/Ruby")
=> #<Groonga::Record:0x28263c0 @table=#<Groonga::Hash id: <256>, name: <Items>,path: <./test.db.0000100>, domain: <ShortText>, range: (nil), flags: <>, size: <1>, encoding: <:utf8>, default_tokenizer: (nil), token_filters: [], normalizer:(nil)>, @id=1, @added=true, attributes: {"_id"=>1, "_key"=>"http://en.wikipedia.org/wiki/Ruby"}>
irb(main):007:0> items.size
=> 1
irb(main):008:0>
C:\bin\Ruby21-Devkit32>gem uninstall rroonga
Remove executables:
groonga-database-inspect, grndump, grntest-log-analyze, groonga-index-dump
in addition to the gem? [Yn] n
Executables and scripts will remain installed.
Successfully uninstalled rroonga-6.0.0
groongaのフォルダが以下に残っていたので念のため削除
C:\bin\Ruby21\lib\ruby\gems\2.1.0\gems
ソースコード
require 'webrick'
require 'webrick/httpproxy'
require 'uri'
# 認証Procを作成
auth_proc = Proc.new(){|req,res|
WEBrick::HTTPAuth.proxy_basic_auth(req,res,'proxy') do |user,pass|
user == 'test' and pass == 'testpass' #この部分で認証。
end
}
# プロキシサーバオブジェクトを作る
s = WEBrick::HTTPProxyServer.new({
:BindAddress => 'xxx,xxx,xxx,xxx',
:Port => 8080,
:ProxyAuthProc => auth_proc
})
# SIGINT を捕捉する。
Signal.trap('INT') do
# 捕捉した場合、シャットダウンする。
s.shutdown
end
# サーバを起動する。
s.start
認証なしの場合
C:\Users\ngram>set http_proxy=http://192.168.22.128:8080
C:\Users\ngram>gem install rroonga --verbose
...
97% [143/146] lib/groonga/statistic-measurer.rb
98% [144/146] lib/groonga/sub-records.rb
99% [145/146] lib/groonga/table.rb
100% [146/146] lib/rroonga.rb
Installing ri documentation for rroonga-6.0.0
Done installing documentation for rroonga after 10 seconds
1 gem installed
認証ありの場合
C:\Users\ngram>set http_proxy=http://test:testpass@192.168.22.128:8080
C:\Users\ngram>gem install rroonga --verbose
...
Building native extensions. This could take a while...
C:/bin/Ruby21/bin/ruby.exe extconf.rb
checking for GCC... yes
checking for Win32 OS... yes
downloading http://packages.groonga.org/windows/groonga/groonga-6.0.0-x86.zip...
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers. Check the mkmf.log file for more details. You may
need configuration options.
Provided configuration options:
--with-opt-dir
--without-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=C:/bin/Ruby21/bin/ruby
C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:353:in `open_http': 407 Proxy Authentic
ation Required (OpenURI::HTTPError)
from C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:724:in `buffer_open'
from C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:210:in `block in open_loop
'
from C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:208:in `catch'
from C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:208:in `open_loop'
from C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:149:in `open_uri'
from C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:704:in `open'
from C:/bin/Ruby21/lib/ruby/2.1.0/open-uri.rb:34:in `open'
from extconf.rb:86:in `download'
from extconf.rb:118:in `extract_groonga_win32_binary'
from extconf.rb:71:in `block in install_groonga_locally'
from extconf.rb:69:in `chdir'
from extconf.rb:69:in `install_groonga_locally'
from extconf.rb:264:in `install_local_groonga'
from extconf.rb:274:in `<main>'
ERROR: Error installing rroonga:
ERROR: Failed to build gem native extension.
Building has failed. See above output for more information on the failure.
extconf failed, exit code 1
Gem files will remain installed in C:/bin/Ruby21/lib/ruby/gems/2.1.0/gems/rroong
a-6.0.0 for inspection.
Results logged to C:/bin/Ruby21/lib/ruby/gems/2.1.0/extensions/x86-mingw32/2.1.0
/rroonga-6.0.0/gem_make.out
yard, rake-compiler, packnga
# ranguba/rroongaをforkしてclone
% git clone git@github.com:ngram/rroonga.git
% gem build rroonga.gemspec
PRまでは行かないようなので、とりあえずIssueを立てることに。
おつかれさまでした!参加した感想をブログとかにまとめてくれるとOSS Gateワークショップの普及につながってうれしいです! (次回からはフィードバックしたメンターの人にその場でcloseしてもらうようにしよう。おつかれ!とか言いながら。)
作業ログは、参加者が、このワークショップを通して得るものをより増やすために重要になります。なぜなら作業ログがメンターからのフィードバックをより充実させるからです。
作業ログを元にメンターと「ふりかえり」をするタイミングがあります。「ふりかえり」では次のことをします。
メンターは次のようなフィードバックをします。これは、参加者とは違う視点から参加者の行動を観察することおよびメンターの経験があるからできることです。(「ふりかえり」の前にこんなフィードバックをよろしくお願いします!とお願いすると効果が高まるので実践してみましょう。)
このように、参加者の作業をメンター視点で一緒に整理し、参加者の今後の行動に活かす活動がここでいう「ふりかえり」です。そのため、「参加者にとって」ログに残すべきかどうか、という視点ではなく、「とりあえずログに残す」という視点でログを残してください。これは、参加者が重要だと判断しなくてもメンターの視点から見たら大事なこともあるからです。
ログに残すときは次のようなときです。
ログに残すことは次のことです。「備考」以外は作業の邪魔にならないように一言でよいです。備考は作業に役立つので必要な分だけ書いてください。
ログはコメントとして追記していってください。テンプレートは次の通りです。
例1(備考なし):
例2:
必要なファイルが足りないのかなぁ。