Ruby 2.0.0-p0 설치 (Mac OS X 10.8.2)

Ruby 2.0.0-p0 설치 (Mac OS X 10.8.2)

2022-10-05 last update

11 minutes reading bundler 루비

0. 환경 정리


brew uninstall openssl
brew uninstall curl-ca-bundle
brew uninstall readline

1. brew 업데이트


brew update

2. ruby-build 업그레이드


brew upgrade ruby-build

3. 설치 가능 목록 표시 확인


rbenv install -l
----------
  2.0.0-p0
----------

4. Ruby 설치



참고 : Install Ruby 2.0.0-p0 /w OS X (Using Rbenv and Homebrew) #Ruby - Qiita

OpenSSL: 설치


  • 설치
  • brew install openssl
    ----------
    ==> Downloading http://openssl.org/source/openssl-1.0.1e.tar.gz
    Already downloaded: /Library/Caches/Homebrew/openssl-1.0.1e.tar.gz
    ==> perl ./Configure --prefix=/usr/local/Cellar/openssl/1.0.1e --openssldir=/usr/local/etc/openssl zlib-dynamic shared d
    ==> make
    ==> make test
    ==> make install MANDIR=/usr/local/Cellar/openssl/1.0.1e/share/man MANSUFFIX=ssl
    ==> Caveats
    To install updated CA certs from Mozilla.org:
    
        brew install curl-ca-bundle
    
    This formula is keg-only: so it was not symlinked into /usr/local.
    
    Mac OS X already provides this software and installing another version in
    parallel can cause all kinds of trouble.
    
    The OpenSSL provided by OS X is too old for some software.
    
    Generally there are no consequences of this for you. If you build your
    own software and it requires this formula, you'll need to add to your
    build variables:
    
        LDFLAGS:  -L/usr/local/opt/openssl/lib
        CPPFLAGS: -I/usr/local/opt/openssl/include
    
    ==> Summary
      /usr/local/Cellar/openssl/1.0.1e: 429 files, 15M, built in 3.7 minutes
    ----------
    

    curl-ca-bundle 설치


  • 설치
  • brew install curl-ca-bundle
    ----------
    ==> Downloading https://downloads.sourceforge.net/project/machomebrew/mirror/curl-ca-bundle-1.87.tar.bz2
    Already downloaded: /Library/Caches/Homebrew/curl-ca-bundle-1.87.tar.bz2
      /usr/local/Cellar/curl-ca-bundle/1.87: 2 files, 252K, built in 2 seconds
    ----------
    
  • 인증서 복사
  • cp /usr/local/Cellar/curl-ca-bundle/1.87/share/ca-bundle.crt /usr/local/etc/openssl/cert.pem
    

    Readline: 설치


  • 설치
  • brew install readline
    ----------
    ==> Downloading http://ftpmirror.gnu.org/readline/readline-6.2.tar.gz
    Already downloaded: /Library/Caches/Homebrew/readline-6.2.4.tar.gz
    ==> Patching
    patching file callback.c
    patching file input.c
    patching file patchlevel
    patching file support/shobj-conf
    patching file vi_mode.c
    ==> ./configure --prefix=/usr/local/Cellar/readline/6.2.4 --mandir=/usr/local/Cellar/readline/6.2.4/share/man --infodir=
    ==> make install
    ==> Caveats
    This formula is keg-only: so it was not symlinked into /usr/local.
    
    OS X provides the BSD libedit library, which shadows libreadline.
    In order to prevent conflicts when programs look for libreadline we are
    defaulting this GNU Readline installation to keg-only.
    
    Generally there are no consequences of this for you. If you build your
    own software and it requires this formula, you'll need to add to your
    build variables:
    
        LDFLAGS:  -L/usr/local/opt/readline/lib
        CPPFLAGS: -I/usr/local/opt/readline/include
    
    ==> Summary
      /usr/local/Cellar/readline/6.2.4: 31 files, 1.6M, built in 17 seconds
    ----------
    
  • 업그레이드
  • brew upgrade readline
    

    Ruby 2.0.0-p0 설치


    rbenv install 2.0.0-p0
    ----------
    Downloading openssl-1.0.1e.tar.gz...
    -> https://www.openssl.org/source/openssl-1.0.1e.tar.gz
    Installing openssl-1.0.1e...
    Installed openssl-1.0.1e to /Users/shu/.rbenv/versions/2.0.0-p0
    
    Downloading ruby-2.0.0-p0.tar.gz...
    -> http://ftp.ruby-lang.org/pub/ruby/2.0/ruby-2.0.0-p0.tar.gz
    Installing ruby-2.0.0-p0...
    Installed ruby-2.0.0-p0 to /Users/shu/.rbenv/versions/2.0.0-p0
    ----------
    

    5. 기본 사용 설정


    rbenv global 2.0.0-p0
    ruby -v
    ----------
    ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin12.2.1]
    ----------
    

    6. 버전 확인


    rbenv versions
    ----------
      system
      1.9.3-p327
      1.9.3-p385
      1.9.3-p392
    * 2.0.0-p0 (set by /Users/shu/.rbenv/version)
    ----------
    
    rbenv version
    ----------
    2.0.0-p0 (set by /Users/shu/.rbenv/version)
    ----------
    

    7. bundler 설치



    ※2013/02/28:bundler1.3.0이 릴리스 되었기 때문에 pre/버전 지정 불필요
    gem i bundler
    ----------
    Fetching: bundler-1.3.0.pre.gem (100%)
    Successfully installed bundler-1.3.0.pre
    Done installing documentation for bundler (0 sec).
    1 gem installed
    ----------
    
    gem list bundler
    ----------
    *** LOCAL GEMS ***
    
    bundler (1.3.0.pre)
    ----------
    

    오류 해결


    gem i bundler
    ----------
    ERROR:  Your gem push credentials file located at:
    
        /Users/shu/.gem/credentials
    
    has file permissions of 0644 but 0600 is required.
    
    You should reset your credentials at:
    
        https://rubygems.org/profile/edit
    
    if you believe they were disclosed to a third party.
    ----------
    


    chmod 600 /Users/shu/.gem/credentials
    

    8. 설치한 Ruby나 Gem의 패스를 통과한다


    rbenv rehash
    

    9. 각 Rails 앱에서 Gem 설치



    Gemfile
    source 'https://rubygems.org'
    ruby "2.0.0"
    
    cd RAILS_ROOT
    bundle install
    


  • "bundler-1.3.0.pre.8"이라면 bundle install 오류
  • bundle install
    ----------
    Unfortunately, a fatal error has occurred. Please see the Bundler 
    troubleshooting documentation at http://bit.ly/bundler-issues. Thanks!
    
    /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/net/http.rb:917:in `connect': SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/net/http.rb:917:in `block in connect'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/timeout.rb:51:in `timeout'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/net/http.rb:917:in `connect'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/net/http.rb:861:in `do_start'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/2.0.0/net/http.rb:856:in `start'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/vendor/net/http/persistent.rb:628:in `start'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/vendor/net/http/persistent.rb:570:in `connection_for'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/vendor/net/http/persistent.rb:930:in `request'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/fetcher.rb:169:in `fetch'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/fetcher.rb:151:in `use_api'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/source/rubygems.rb:223:in `block in remote_specs'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/source/rubygems.rb:223:in `select'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/source/rubygems.rb:223:in `remote_specs'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/source/rubygems.rb:162:in `fetch_specs'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/source/rubygems.rb:66:in `specs'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/lazy_specification.rb:52:in `__materialize__'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/spec_set.rb:86:in `block in materialize'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/spec_set.rb:83:in `map!'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/spec_set.rb:83:in `materialize'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/definition.rb:114:in `specs'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/definition.rb:109:in `resolve_remotely!'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/installer.rb:83:in `run'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/installer.rb:14:in `install'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/cli.rb:247:in `install'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/vendor/thor/task.rb:27:in `run'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/vendor/thor/invocation.rb:120:in `invoke_task'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/vendor/thor.rb:344:in `dispatch'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/vendor/thor/base.rb:434:in `start'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/bin/bundle:20:in `block in <top (required)>'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/lib/bundler/friendly_errors.rb:4:in `with_friendly_errors'
        from /Users/shu/.rbenv/versions/2.0.0-p0/lib/ruby/gems/2.0.0/gems/bundler-1.3.0.pre.8/bin/bundle:20:in `<top (required)>'
        from /Users/shu/.rbenv/versions/2.0.0-p0/bin/bundle:23:in `load'
        from /Users/shu/.rbenv/versions/2.0.0-p0/bin/bundle:23:in `<main>'
    ----------
    

  • Heroku로 올리면 「ruby: symbol lookup error: 」에러
  • 아마 Thin => eventmachine이 Ruby2.0 미대응이기 때문에. .

  • Feb 24 22:22:27 playcast-project app/web.1:  >> Thin web server (v1.5.0 codename Knife) 
    Feb 24 22:22:27 playcast-project app/web.1:  >> Maximum connections set to 1024 
    Feb 24 22:22:27 playcast-project app/web.1:  >> Listening on 0.0.0.0:48969, CTRL+C to stop 
    Feb 24 22:22:27 playcast-project app/web.1:  ruby: symbol lookup error: /app/vendor/bundle/ruby/2.0.0/gems/eventmachine-1.0.0/lib/rubyeventmachine.so: undefined symbol: rb_enable_interrupt 
    



    Puma라면 Ruby2.0.0-p0+Heroku에서도 움직였습니다.
  • Ruby2.0.0 + Rails3.2.12 + Puma + Heroku #Ruby #Rails #puma - Qiita