Construcción de un paquete rpm
Los paquetes de distribución de software que usan las distribuciones linux Red Hat y CentOS son en formato rpm. En debian y derivados, como ubuntu, los paquetes son en formato deb. Entre los objetivos a conocer para el RHCSA es necesario saber construir un paquete rpm.
Los paquetes rpm deben ser construidos en una estructura de directorios predeterminada:
|
Esta estructura y para hacernos el trabajo más simple se puede generar con el comando rpmdev-setuptree, las estructura se genera en la carpeta incial del usuario bajo la carpeta rpmbuild.
Para construir un paquete rpm necesitamos un fichero, .spec, que le indique a la aplicación rpmbuild que construir y como. Al instalar el paquete rpmdevtools, en la carpeta /etc/rpmdevtools/ se nos dejan varios ficheros plantilla y en nuestro caso usaremos el fichero spectemplate-minimal.spec. También se puede hacer uso del comando rpmdev-newspec, el cual genera el mismo fichero con el nombre newpackage.spec. El fichero .spec debe estar colocado en la carpeta SPECS.
Para generar el paquete rpm necesitamos basarnos en un fichero .tar con el contenido de nuestro paquete. El fichero se debe colocar en la carpeta SOURCES. Para este ejemplo he generado una carpeta que contiene lo siguiente:
./vsconf-personal:
total 8
-rwxr-xr-x. 1 root root 0 nov 9 18:31 configure
drwxr-xr-x. 3 root root 4096 nov 3 20:15 etc
drwxr-xr-x. 3 root root 4096 nov 9 09:23 opt
./vsconf-personal/etc:
total 4
drwxr-xr-x. 2 root root 4096 nov 9 09:22 vsftpd
./vsconf-personal/etc/vsftpd:
total 8
-rw-------. 1 root root 4617 nov 3 20:06 mi_vsftpd.conf
./vsconf-personal/opt:
total 4
-rw-r--r--. 1 root root 0 nov 9 09:23 fileone
-rw-r--r--. 1 root root 0 nov 9 09:23 filetwo
drwxr-xr-x. 2 root root 4096 nov 9 09:23 uno
./vsconf-personal/opt/uno:
total 0
-rw-r--r--. 1 root root 0 nov 9 09:23 Oneeee
-rw-r--r--. 1 root root 0 nov 9 09:23 Twoooo
Atención al fichero configure (Se usa para configurar un fuente antes de compilarlo, en nuestro caso no lo usaremos), vacío y con permisos de ejecución. La idea es que el fichero mi_vsftpd.conf se coloque en la carpeta /etc/vsftpd. En la carpeta /opt se generan dos ficheros (fileone y filetwo). Además se crea la carpeta uno con los fichero Oneeee y Twoooo en su interior. De esta estructura generamos un fichero vsconf-personal.tar
Tras renombrar el fichero newpackage.spec como vsconf-personal.spec que inicialmente tiene la siguiente información:
Name:
Version:
Release: 1%{?dist}
Summary:
Group:
License:
URL:
Source0:
BuildRequires:
Requires:
%description
%prep
%setup -q
%build
%configure
make %{?_smp_mflags}
%install
rm -rf $RPM_BUILD_ROOT
make install DESTDIR=$RPM_BUILD_ROOT
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc
%changelog
Editamos el fichero y lo dejamos de la siguiente manera:
Name: vsconf-personal
Version: 1.0
Release: 1%{?dist}
Summary: This is a summary test
License: GPL
Source0: vsconf-personal.tar
%description
Desc1
Desc2
Desc3
Desc4
%prep
#%setup -q
%setup -n vsconf-personal
#%build
#%configure
#make %{?_smp_mflags}
%install
rm -rf $RPM_BUILD_ROOT
#make install DESTDIR=$RPM_BUILD_ROOT
mkdir $RPM_BUILD_ROOT
cp -r * $RPM_BUILD_ROOT/
rm -f $RPM_BUILD_ROOT/configure
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc
#%dir /opt/uno
/etc/vsftpd/mi_vsftpd.conf
/opt/fileone
/opt/filetwo
/opt/uno/Oneeee
/opt/uno/Twoooo
%changelog
%setup -n vsconf-personal --> Con este cambio indicamos durante la construcción donde está el fichero .tar a usar.
Con las lineas mkdir $RPM_BUILD_ROOT y cp -r * $RPM_BUILD_ROOT/ generamos una carpeta y copiamos nuestros ficheros que luego se empaquetan en nuestro rpm. La linea rm -f $RPM_BUILD_ROOT/configure elimina el fichero configure del paquete.
%files --> Ponemos los ficheros que queremos que se copian al instalar el paquete rpm.
El paquete rpm se genera ejecutando el comando rpmbuild -bb vsconf-personal.spec. El resultado se deja en la carpeta rpmbuild/RPMS/x86_64/vsconf-personal-1.0-1.el6.x86_64.rpm . El parámetro -bb hace que se genere el instalador binario.
Comentarios
Publicar un comentario