Esta sección proporciona un archivo SPEC de ejemplo para construir gemas junto con una explicación de sus secciones particulares.
Un ejemplo de archivo SPEC de 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}/
%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}/
Copy to ClipboardCopied!Toggle word wrapToggle overflow
En la siguiente tabla se explican los elementos específicos de un archivo SPEC de RubyGems:
Expand
Tabla 4.4. Especificaciones de las directivas SPEC de RubyGems
Directiva SPEC
Especificaciones de RubyGems
%prep
RPM puede desempaquetar directamente archivos de gemas, por lo que puede ejecutar la comamnd gem unpack para extraer el código fuente de la gema. La macro %setup -n %{gem_name}-%{version} proporciona el directorio en el que se ha desempaquetado la gema. En el mismo nivel de directorio, se crea automáticamente el archivo %{gem_name}-%{version}.gemspec, que puede utilizarse para reconstruir la gema más tarde, para modificar el .gemspec, o para aplicar parches al código.
%build
Esta directiva incluye comandos o series de comandos para construir el software en código máquina. La macro %gem_install opera sólo en archivos gem, y la gema se recrea con la siguiente construcción de gem. El archivo gem que se crea es utilizado por %gem_install para construir e instalar el código en el directorio temporal, que es ./%{gem_dir} por defecto. La macro %gem_install construye e instala el código en un solo paso. Antes de ser instalado, las fuentes construidas se colocan en un directorio temporal que se crea automáticamente.
La macro %gem_install acepta dos opciones adicionales: -n <gem_file>, que permite anular la gema utilizada para la instalación, y -d <install_dir>, que podría anular el destino de instalación de la gema; no se recomienda utilizar esta opción.
La macro %gem_install no debe utilizarse para instalar en el %{buildroot}.
%instalación
La instalación se realiza en la jerarquía %{buildroot}. Puedes crear los directorios que necesites y luego copiar lo que se instaló en los directorios temporales en la jerarquía de %{buildroot}. Si esta gema crea objetos compartidos, se mueven a la ruta específica de la arquitectura %{gem_extdir_mri}.
Ayudamos a los usuarios de Red Hat a innovar y alcanzar sus objetivos con nuestros productos y servicios con contenido en el que pueden confiar. Explore nuestras recientes actualizaciones.
Hacer que el código abierto sea más inclusivo
Red Hat se compromete a reemplazar el lenguaje problemático en nuestro código, documentación y propiedades web. Para más detalles, consulte el Blog de Red Hat.
Acerca de Red Hat
Ofrecemos soluciones reforzadas que facilitan a las empresas trabajar en plataformas y entornos, desde el centro de datos central hasta el perímetro de la red.