t-nissieの日記: 【電脳】Windows 10にgnupackでインストールしたCygwinのRubyをRuby 2.3にしてみた【危険】
Windows 10にgnupackでインストールしたCygwinのRubyをRuby 2.3にしてみた。
ちゃんと動いているRubyを消してまでやるべきことではなかった。
cannot load such file -- win32/resolv (LoadError) を回避したり、面倒。
LANG=C apt-cyg show | grep ruby
LANG=C apt-cyg remove ruby rubygems ruby-io-console ruby-json ruby-minitest4 ruby-psych ruby-rake ruby-rdoc
LANG=C apt-cyg install libyaml-devel zlib-devel openssl-devel
LANG=C apt-cyg install libreadline-devel libxml2-devel
LANG=C apt-cyg install libxslt-devel libmysqlclient-devel libgmp-devel
LANG=C apt-cyg install libffi-devel libgdbm-devel xorg-x11-devel tcl-devel tcl-tk-devel
wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.xz
sha1sum ruby-2.3.0.tar.xz | grep 96e620e38af351c8da63e40cfe217ec79f912ba1
tar xf ruby-2.3.0.tar.xz
mkdir Shinobi
cd Shinobi/
../configure
make
make install
gem install ulmul
gem install ulmul では cannot load such file -- win32/resolv (LoadError) という
エラーが出たので、/usr/local/lib/ruby/2.3.0/resolv.rb を以下のように編集して回避した。
win32云々のエラーが出る場合には、このように適当なファイルからcygwinの項を削ればうまくゆく場合があるようだ。
Cygwinが十分UNIXに近くなっているからか。(Cygwinのパッケージ ruby-2.2.3-1-src.tar.xz の中のパッチを参考にした。)
$ gem install ulmul
/usr/local/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- win32/resolv (LoadError)
from /usr/local/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /usr/local/lib/ruby/2.3.0/resolv.rb:971:in `default_config_hash'
:
--- /usr/local/lib/ruby/2.3.0/resolv.rb~ 2015-11-10 20:48:14.000000000 +0900
+++ /usr/local/lib/ruby/2.3.0/resolv.rb 2016-01-11 13:11:03.461135400 +0900
@@ -168,7 +168,7 @@
class Hosts
begin
- raise LoadError unless /mswin|mingw|cygwin/ =~ RUBY_PLATFORM
+ raise LoadError unless /mswin|mingw/ =~ RUBY_PLATFORM
require 'win32/resolv'
DefaultFileName = Win32::Resolv.get_hosts_path
rescue LoadError
@@ -967,7 +967,7 @@
if File.exist? filename
config_hash = Config.parse_resolv_conf(filename)
else
- if /mswin|cygwin|mingw|bccwin/ =~ RUBY_PLATFORM
+ if /mswin|mingw|bccwin/ =~ RUBY_PLATFORM
require 'win32/resolv'
search, nameserver = Win32::Resolv.get_resolv_info
config_hash = {}
また、apt-cyg install github-markdownなど、
拡張ライブラリのコンパイルが必要なgemのインストールが
unable to remapというエラーでうまくいかない
# gem install github-markdown
Building native extensions. This could take a while...
0 [main] ruby 5812 child_info_fork::abort: address space needed by 'digest.so' (0x27E0000) is already occupied
1 [main] ruby 5848 child_info_fork::abort: unable to remap digest.so to same address as parent (0x27E0000) - try running rebaseall
1 [main] ruby 5840 child_info_fork::abort: unable to remap openssl.so to same address as parent (0x2A60000) - try running rebaseall
0 [main] ruby 5284 child_info_fork::abort: unable to remap digest.so to same address as parent (0x27E0000) - try running rebaseall
のような場合は、Cygwinで"fatal error - unable to remap"と言われたに書いてある通り、
ashを直接ダブルクリックして、開いたコマンドプロンプトから
/usr/bin/find /usr/local -name '*.so' > $TMP/ruby-so.lst
/bin/rebaseall -T $TMP/ruby-so.lst -v
とする。
【電脳】Windows 10にgnupackでインストールしたCygwinのRubyをRuby 2.3にしてみた【危険】 More ログイン