Construí por primera vez un paquete RPM. Este RPM es una aplicación de interfaz de usuario empaquetada y la instalación solo necesita mover los archivos de la aplicación y reiniciar nginx. Este es mi archivo de especificaciones:
Name: my-portal-app
Version: 2.1
Release: 1%{?dist}
Summary: Descripcion
License: No-license
URL: nourl
Source0: my-portal-app-2.1.tar.gz
%description
My app install
%prep
%setup -q
%build
#%configure
#make %{?_smp_mflags}
%install
#rm -rf $RPM_BUILD_ROOT
cp -r ./* /var/www/myapp
service nginx restart
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc
%changelog
Todo está bien cuando ejecuto rpmbuild -ba, salgo 0 y se calcula la secuencia% de instalación (copio archivos y reinicio nginx). Ok, rpmbuild genera el RPM (en rpmbuild/RPMS) y el SRPM en (rpmbuild/SRPMS).
Pero, si lo entiendo bien, cuando instalo mi SRPM con rpm -ivh name.rpmse debe ejecutar la secuencia %install¿Estoy en lo cierto? Si lo soy, la secuencia no se está ejecutando (no copio archivos a /var/www/myapp y no reinicio nginx). Ejecutando las RPM igual.
El contenido del SRPM es correcto, todos los archivos están dentro. Y el RPM está vacío.
Respuesta1
Como dijiste, %install
la sección es para configurar las oraciones iniciales de compilación de RPM que necesitarás configurar.
Para lograr tu objetivo debes usar %post
la sección, en ella puedes definir la ejecución de tu propio .sh (por ejemplo) o puedes establecer una por una las oraciones que necesites, por ejemplo:
sudo service restart nginx
Para el tema del RPM vacío, es porque %files
la sección no se llenó correctamente, los binarios movidos al RPM están relacionados con el contenido de esa sección (%files)
Respuesta2
Ok, me equivoqué... como estodocdice:
La sección %install no se ejecuta cuando el usuario final instala el paquete binario RPM, sino que solo se ejecuta al crear un paquete.