rbenv보다 서버에 Ruby 설치가 더 간단합니다.

6612 단어 itamaeCentOSRuby

거치다


설정 관리 도구(chef, Itamae 등)로 서버(CentOS)에서 루비 환경을 보완하고 싶지만 clonerbenv의 메모리 라이브러리, gcc와 기타 각종 의존 모듈을 설치한 레시피를 써야 하기 때문에 매우 번거롭다.
RPM으로 넣으면 편할 것 같다는 기사를 몇 편 읽었기 때문에 해보았습니다.

단계


게시된 스펙의 저장소 사용


스펙이 공개되었기 때문에 포크가 클론을 만든다.hansode/ruby-2.1.x-rpm
fork의 이유는 이를 모형으로 만들어서 루비의 새로운 버전의 스펙을 쓸 수 있거나 GitHub에서 위탁 관리할 수 있는 rpm를 만들 수 있기 때문이다.
clone 이후 Vagrant에서 CentOS6 환경(6.5)을 구축합니다.
아래의 디렉터리로 구성되어야 합니다.
.
├── README.md
├── Vagrantfile
└── ruby21x.spec

ruby21x.스펙 다시 쓰기


Ruby2.1.5는 필요 없습니다. Ruby2.2.2를 설치하고 싶어서 스펙을 고쳤습니다.
2.2.2라서 파일 이름도 바뀌었어요.
% git diff
diff --git a/ruby22x.spec b/ruby22x.spec
index 190672d..4d1d8d1 100644
--- a/ruby22x.spec
+++ b/ruby22x.spec
@@ -1,5 +1,5 @@
-%define rubyver         2.1.5
-%define rubyabi         2.1
+%define rubyver         2.2.2
+%define rubyabi         2.2

 Name:           ruby
 Version:        %{rubyver}
@@ -64,6 +64,9 @@ rm -rf $RPM_BUILD_ROOT
 %{_libdir}/*

 %changelog
+* Wed Jul 22 2015 Yukiyan <[email protected]> - 2.2.2
+- Update ruby version to 2.2.2
+
 * Tue Apr 14 2015 Johnson Earls <[email protected]> - 2.1.5-2
 - Fix Obsoletes header lines to allow for ruby package updates

RPM 구축

$ vagrant ssh
$ mkdir -p ~/rpmbuild/{BUILD,BUILDROOT,RPMS,SOURCES,SPECS,SRPMS}
$ cd ~/rpmbuild/SOURCES && curl -LO http://cache.ruby-lang.org/pub/ruby/2.2/ruby-2.2.2.tar.gz
$ cp /vagrant/ruby22x.spec ~/rpmbuild/SPECS
$ sudo yum update -y
$ sudo yum install -y rpm-build
$ sudo yum install -y readline-devel ncurses-devel gdbm-devel glibc-devel gcc openssl-devel libyaml-devel libffi-devel zlib-devel tcl-devel db4-devel byacc
$ rpmbuild -ba ~/rpmbuild/SPECS/ruby22x.spec
書き込み完了: /home/vagrant/rpmbuild/SRPMS/ruby-2.2.2-2.el6.src.rpm
書き込み完了: /home/vagrant/rpmbuild/RPMS/x86_64/ruby-2.2.2-2.el6.x86_64.rpm

GitHub Release RPM으로


가상 시스템에서 구축된 모든 RPM을 방출하기 위해 일련의 변경 사항을 제출하고 push합니다.
GitHub의 Release 방법은 직관적이고 간단하므로 자세한 설명은 하지 않고 아래를 참조하면 됩니다.
GitHub 게시 기능 사용 - Qiita
발표할 수 있다면 이렇게 될 것이다.

이번에 제작된 RPM을 사용하여 Itame에서 Ruby 환경을 구축합니다.


Itamae의 사용 방법은 매우 간단하니 아래의 자료를 읽으면 바로 이해할 수 있을 것이다.
  • Home · itamae-kitchen/itamae Wiki
  • Itamae-Infra as Code 현황 확인회//Speaker Deck
  • 루비를 설치할 가상 머신을 준비하고 itame를 실행합니다.$ itamae ssh -h sample_ruby --vagrant --node-json node/node.json recipes/ruby/default.rbrecipes/ruby/default.rb
    version  = '2.2.2'
    ruby_rpm = "ruby-#{version}-2.el6.x86_64.rpm"
    
    package "https://github.com/yukiyan/ruby-rpm/releases/download/#{version}/#{ruby_rpm}" do
      not_if "rpm -q ruby-#{version}"
    end
    
    gem_package 'bundler'
    
    node/node.json
    {
      "ruby": {
        "version": "2.2.2"
      }
    }
    
    
    spec/sample_ruby/ruby_spec.rb
    require 'spec_helper'
    
    describe package 'ruby' do
      it { should be_installed.with_version '2.2.2' }
    end
    
    describe package 'bundler' do
      it { should be_installed.by('gem') }
    end
    
    
    의식이 높기 때문에 잘 썼다Serverspec.
    테스트를 통과하여 루비 환경을 순조롭게 완성하였습니다.
    % rake
    
    Package "ruby"
      should be installed
    
    Package "bundler"
      should be installed
    
    Finished in 0.75034 seconds (files took 0.27158 seconds to load)
    2 examples, 0 failures
    

    참고 자료

  • 최신 루비를 RPM으로 넣습니다.
  • feedforce/ruby-rpm
  • 좋은 웹페이지 즐겨찾기