5.7. RubyGems 패키지
이 섹션에서는 RubyGems 패키지가 무엇인지, 그리고 RPM으로 다시 패키징하는 방법에 대해 설명합니다.
5.7.1. RubyGems의 정의
Ruby는 동적, 해석, 반사, 객체 지향, 일반 목적의 프로그래밍 언어입니다.
Ruby로 작성된 프로그램은 일반적으로 특정 Ruby 패키징 형식을 제공하는 RubyGems 프로젝트를 사용하여 패키징됩니다.
RubyGems에서 만든 패키지는 gems라고 하며 RPM으로도 다시 패키징할 수 있습니다.
이 문서는 gem
접두사와 함께 RubyGems 개념과 관련된 용어(예: .gemspec)는 gem 사양에
사용되며 RPM 관련 용어는 정규화되지 않습니다.
5.7.2. RubyGems의 RPM 관련 방법
RubyGems는 Ruby의 자체 패키징 형식을 나타냅니다. 그러나 RubyGems에는 RPM에 필요한 메타데이터가 포함되어 있으며 RubyGems에서 RPM으로 변환할 수 있습니다.
Ruby Packaging guidelines 에 따르면 RubyGems 패키지를 RPM으로 다시 패키징할 수 있습니다.
- 이러한 RPM은 나머지 배포에 적합합니다.
- 최종 사용자는 적절한 RPM 패키지 gem을 설치하여 gem의 종속성을 충족할 수 있습니다.
RubyGems는 사양
파일, 패키지 이름, 종속성 및 기타 항목과 같은 RPM과 유사한 용어를 사용합니다.
나머지 RHEL RPM 배포에 적합하려면 RubyGems에서 생성한 패키지는 아래 나열된 규칙을 따라야 합니다.
gems의 이름은 다음 패턴을 따라야 합니다.
rubygem-%{gem_name}
shebang 라인을 구현하려면 다음 문자열을 사용해야 합니다.
#!/usr/bin/ruby
5.7.3. RubyGems 패키지에서 RPM 패키지 생성
RubyGems 패키지에 대한 소스 RPM을 만들려면 다음 파일이 필요합니다.
- gem 파일
-
RPM
사양
파일
다음 섹션에서는 RubyGems에서 만든 패키지에서 RPM 패키지를 만드는 방법에 대해 설명합니다.
5.7.3.1. RubyGems 사양 파일 규칙
RubyGems 사양
파일은 다음 규칙을 충족해야 합니다.
-
gem의 사양의 이름인
%{gem_name}
를 포함합니다. - 패키지 소스는 릴리스된 gem 아카이브에 대한 전체 URL이어야 합니다. 패키지 버전은 gem의 버전이어야 합니다.
빌드에 필요한 매크로를 가져올 수 있도록 다음과 같이 정의된 지시문인
BuildRequires
가 포함되어 있습니다.BuildRequires:rubygems-devel
-
RubyGems
Requires
또는Provides
가 자동으로 생성되기 때문에 포함되어 있지 않습니다. Ruby 버전 호환성을 명시적으로 지정하지 않으려면 다음과 같이 정의된
BuildRequires:
지시문을 포함하지 않습니다.Requires: ruby(release)
RubyGems에 자동으로 생성된 종속성(
필수: ruby(rubygems))
이면 충분합니다.
5.7.3.2. RubyGems 매크로
다음 표에는 RubyGems에서 만든 패키지에 유용한 매크로가 나열되어 있습니다. 이러한 매크로는 rubygems-devel
패키지에서 제공합니다.
매크로 이름 | 확장 경로 | 사용법 |
---|---|---|
%{gem_dir} | /usr/share/gems | gem 구조의 최상위 디렉터리입니다. |
%{gem_instdir} | %{gem_dir}/gems/%{gem_name}-%{version} | gem의 실제 콘텐츠가 있는 디렉터리입니다. |
%{gem_libdir} | %{gem_instdir}/lib | gem의 라이브러리 디렉터리입니다. |
%{gem_cache} | %{gem_dir}/cache/%{gem_name}-%{version}.gem | 캐시된 gem. |
%{gem_spec} | %{gem_dir}/specifications/%{gem_name}-%{version}.gemspec | gem 사양 파일입니다. |
%{gem_docdir} | %{gem_dir}/doc/%{gem_name}-%{version} | gem의 RDoc 문서입니다. |
%{gem_extdir_mri} | %{_libdir}/gems/ruby/%{gem_name}-%{version} | gem 확장을 위한 디렉터리입니다. |
5.7.3.3. RubyGems 사양 파일 예
특정 섹션에 대한 설명과 함께 gem을 빌드하는 사양
파일의 예는 다음과 같습니다.
예제 RubyGems 사양 파일
%prep %setup -q -n %{gem_name}-%{version} # Modify the gemspec if necessary # Also apply patches to code if necessary %patch0 -p1 %build # Create the gem as gem install only works on a gem file gem build ../%{gem_name}-%{version}.gemspec # %%gem_install compiles any C extensions and installs the gem into ./%%gem_dir # by default, so that we can move it into the buildroot in %%install %gem_install %install mkdir -p %{buildroot}%{gem_dir} cp -a ./%{gem_dir}/* %{buildroot}%{gem_dir}/ # If there were programs installed: mkdir -p %{buildroot}%{_bindir} cp -a ./%{_bindir}/* %{buildroot}%{_bindir} # If there are C extensions, copy them to the extdir. mkdir -p %{buildroot}%{gem_extdir_mri} cp -a .%{gem_extdir_mri}/{gem.build_complete,*.so} %{buildroot}%{gem_extdir_mri}/
다음 표에서는 RubyGems 사양
파일의 특정 항목에 대한 세부 사항을 설명합니다.
directive | RubyGems 세부 정보 |
---|---|
%Prep |
RPM은 gem 아카이브의 직접 압축을 풀 수 있으므로 |
%build |
이 지시문에는 소프트웨어를 머신 코드로 빌드하는 명령 또는 일련의 명령이 포함되어 있습니다.
|
%install |
설치는 |
추가 리소스
5.7.3.4. gem2rpm을 사용하여 RubyGems 패키지를 RPM 사양 파일로 변환
gem2rpm
유틸리티는 RubyGems 패키지를 RPM 사양
파일로 변환합니다.
다음 섹션에서는 다음 방법을 설명합니다.
-
gem2rpm
유틸리티 설치 -
모든
gem2rpm
옵션 표시 -
gem2rpm
을 사용하여 RubyGems 패키지를 RPM사양
파일로 변환 -
gem2rpm
템플릿 편집
5.7.3.4.1. gem2rpm 설치
다음 절차에서는 gem2rpm
유틸리티를 설치하는 방법을 설명합니다.
절차
-
RubyGems.org 에서
gem2rpm
을 설치하려면 다음을 실행합니다.
$ gem install gem2rpm
5.7.3.4.2. gem2rpm의 모든 옵션 표시
다음 절차에서는 gem2rpm
유틸리티의 모든 옵션을 표시하는 방법을 설명합니다.
절차
gem2rpm
의 모든 옵션을 보려면 다음을 실행합니다.$ gem2rpm --help
5.7.3.4.3. gem2rpm을 사용하여 RubyGems 패키지를 RPM 사양 파일로 변환
다음 절차에서는 gem2rpm
유틸리티를 사용하여 RubyGems 패키지를 RPM 사양
파일로 변환하는 방법을 설명합니다.
절차
최신 버전에서 gem을 다운로드하고 이 gem에 대한 RPM
사양
파일을 생성합니다.$ gem2rpm --fetch <gem_name> > <gem_name>.spec
설명된 절차에서는 gem의 메타데이터에 제공된 정보를 기반으로 RPM 사양
파일을 생성합니다. 그러나 gem은 라이센스 및 변경 로그와 같은 RPM에서 일반적으로 제공되는 몇 가지 중요한 정보를 놓치고 있습니다. 따라서 생성된 사양
파일을 편집해야 합니다.
5.7.3.4.4. gem2rpm 템플릿
gem2rpm
템플릿은 다음 표에 나열된 변수를 포함하는 표준 임베디드 Ruby(ERB) 파일입니다.
Variable | 설명 |
---|---|
패키지 |
gem의 |
spec |
gem의 |
config |
사양 템플릿 도우미에 사용되는 기본 매크로 또는 규칙을 재정의할 수 있는 |
runtime_dependencies |
|
development_dependencies |
|
테스트 |
|
파일 |
|
main_files |
|
doc_files |
|
형식 |
gem의 |
5.7.3.4.5. 사용 가능한 gem2rpm 템플릿 나열
다음 절차에서는 사용 가능한 모든 gem2rpm
템플릿을 나열하도록 설명합니다.
절차
사용 가능한 모든 템플릿을 보려면 다음을 실행합니다.
$ gem2rpm --templates
5.7.3.4.6. gem2rpm 템플릿 편집
생성된 사양 파일을 편집하는 대신 RPM 사양
파일이 생성되는 템플릿을 편집할 수 있습니다.
gem2rpm
템플릿을 편집하려면 다음 절차를 사용하십시오.
절차
기본 템플릿을 저장합니다.
$ gem2rpm -T > rubygem-<gem_name>.spec.template
- 필요에 따라 템플릿을 편집합니다.
편집된 템플릿을 사용하여
사양
파일을 생성합니다.$ gem2rpm -t rubygem-<gem_name>.spec.template <gem_name>-<latest_version.gem > <gem_name>-GEM.spec
이제 RPM 빌드에 설명된 대로 편집된 템플릿을 사용하여 RPM 패키지를 빌드할 수 있습니다.