rbenv보다 서버에 Ruby 설치가 더 간단합니다.
거치다
설정 관리 도구(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의 사용 방법은 매우 간단하니 아래의 자료를 읽으면 바로 이해할 수 있을 것이다.
$ itamae ssh -h sample_ruby --vagrant --node-json node/node.json recipes/ruby/default.rb
recipes/ruby/default.rbversion = '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.rbrequire '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
참고 자료
Reference
이 문제에 관하여(rbenv보다 서버에 Ruby 설치가 더 간단합니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yukiyan/items/5917d2e166512065ae18텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)