Creacion de un paquete rpm a partir del src.rpm
Antes que nada deberiamos instalar el grupo correspondiente para Desarrollo:
sudo yum groupinstall “Development Tools”
La primera estructura que deberiamos crear es la siguiente :
mkdir $HOME/rpmbuild ;for i in BUILD BUILDROOT RPMS SOURCES SPECS SRPMS tmp; do echo "Creando el directorio $HOME/rpmbuild/$i " ; mkdir $HOME/rpmbuild/$i; done
Nota: hacerlo como usuario normal.
Generamos nuestro macro:
vi $HOME/rpmbuild/.rpmmacro
#%_topdir /home/adrian/rpmbuild
%{_topdir} %{getenv:HOME}/rpmbuild
%_builddir %{_topdir}/BUILD
%_rpmdir %{_topdir}/RPMS
%_sourcedir %{_topdir}/SOURCES
%_specdir %{_topdir}/SPECS
%_srcrpmdir %{_topdir}/SRPMS
%_buildrootdir %{_topdir}/BUILDROOT
%_tmppath %{_topdir}/tmp
%packager Rino Rondan <villadalmine@fedoraproject.org>
%vendor Rino Rondan <villadalmine@fedoraproject.org>
En el archivo creado vamos a poner informacion util a la hora de la creacion de nuestros paquetes.
Luego nos bajamos algun paquete en este caso el siguiente
wget http://alvesadrian.fedorapeople.org/jupiter-0.1.4+svn04112012-1.fc16.src.rpm -O $HOME/rpmbuild/SOURCES/jupiter-0.1.4+svn04112012-1.fc16.src.rpm
Una vez que bajamos el src.rpm procedemos a instalarlo.
yum install HOME/rpmbuild/SOURCES/jupiter-0.1.4+svn04112012-1.fc16.src.rpm
Luego si hacemos un ls a :
ls -l $HOME/rpmbuild/SPECS
Vamos a ver que tenemos un archivo que se llama jupiter.spec donde tenemos justamente toda la info que vamos a utilizar para crear el paquete. Por ahora es necesario que entendamos como funciona la creacion luego mas adelante y con mas practica habra tiempo para chequear cada punto de este importante archivo.
Ahora con este paso realizado podemos crear el paquetes vamos a ver tres formas.
rpmbuild -b[asb] paquete.spec
Con la opcion a nos genera los archivos correspondientes en SRPMS y RPMS
Con la opcion b nos genera los archivos correspondientes en RPMS
Con la opcion s nos genera los archivos correspondientes en SRPMS
Procedamos a ver cada caso en particular.
cd $HOME/rpmbuild/SPECS
[restauracion@...crond1/rpmbuild/SPECS $] rpmbuild -ba jupiter.spec
Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.89AZcO
+ umask 022
+ cd /home/crond1/rpmbuild/BUILD
+ LANG=C
+ export LANG
+ unset DISPLAY
+ cd /home/crond1/rpmbuild/BUILD
+ rm -rf jupiter-0.1.4+svn04112012
+ /usr/bin/gzip -dc /home/crond1/rpmbuild/SOURCES/jupiter-0.1.4+svn04112012.tar.gz
+ /bin/tar -xf -
+ STATUS=0
+ '[' 0 -ne 0 ']'
+ cd jupiter-0.1.4+svn04112012
+ /bin/chmod -Rf a+rX,u+w,g-w,o-w .
+ exit 0
Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.z6HrH1
+ umask 022
+ cd /home/crond1/rpmbuild/BUILD
+ cd jupiter-0.1.4+svn04112012
+ LANG=C
+ export LANG
+ unset DISPLAY
+ exit 0
Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.IXSAcf
+ umask 022
+ cd /home/crond1/rpmbuild/BUILD
+ '[' /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64 '!=' / ']'
+ rm -rf /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64
++ dirname /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64
+ mkdir -p /home/crond1/rpmbuild/BUILDROOT
+ mkdir /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64
+ cd jupiter-0.1.4+svn04112012
+ LANG=C
+ export LANG
+ unset DISPLAY
+ rm -rf /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64
+ install -d /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/etc/pm /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/etc/xdg /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/etc/pm/power.d /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/etc/xdg/autostart
+ install -d /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/share/applications /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/share/pixmaps
+ install -d /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/var/jupiter
+ install -d /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/bin
+ install -d /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/lib /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/lib/jupiter /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/lib/jupiter/scripts /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/lib/jupiter/kernel
+ install pm/power.d/00-jupiter-cpu /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/etc/pm/power.d/
+ install xdg/autostart/jupiter-startup.desktop xdg/autostart/jupiter.desktop /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/etc/xdg/autostart/
+ install usr/share/applications/jupiter.desktop /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/share/applications/
+ install usr/share/pixmaps/bluetooth.png usr/share/pixmaps/bolt1.png usr/share/pixmaps/bolt2.png usr/share/pixmaps/bolt3.png usr/share/pixmaps/bolt4.png usr/share/pixmaps/camera-web.png usr/share/pixmaps/devices.png usr/share/pixmaps/display.png usr/share/pixmaps/gnome-dev-wavelan.png usr/share/pixmaps/input-tablet.png usr/share/pixmaps/jupiter.png usr/share/pixmaps/ondemand.png usr/share/pixmaps/overclock.png usr/share/pixmaps/performance.png usr/share/pixmaps/powersave.png usr/share/pixmaps/resolution.png usr/share/pixmaps/rotate.png /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/share/pixmaps/
+ install usr/lib/jupiter/scripts/bluetooth usr/lib/jupiter/scripts/cpu-control usr/lib/jupiter/scripts/jupiter usr/lib/jupiter/scripts/notify usr/lib/jupiter/scripts/resolutions usr/lib/jupiter/scripts/rotate usr/lib/jupiter/scripts/state usr/lib/jupiter/scripts/touchpad usr/lib/jupiter/scripts/vga-out usr/lib/jupiter/scripts/wifi /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/lib/jupiter/scripts/
+ install usr/lib/jupiter/kernel/battery usr/lib/jupiter/kernel/power /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/lib/jupiter/kernel/
+ install usr/bin/jupiter /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64/usr/bin/
+ /usr/lib/rpm/find-debuginfo.sh --strict-build-id /home/crond1/rpmbuild/BUILD/jupiter-0.1.4+svn04112012
find: `debug': No such file or directory
+ /usr/lib/rpm/check-buildroot
+ /usr/lib/rpm/redhat/brp-compress
+ /usr/lib/rpm/redhat/brp-strip-static-archive /usr/bin/strip
+ /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1
+ /usr/lib/rpm/redhat/brp-python-hardlink
+ /usr/lib/rpm/redhat/brp-java-repack-jars
Processing files: jupiter-0.1.4+svn04112012-1.fc16.noarch
warning: File listed twice: /etc/pm/power.d
warning: File listed twice: /etc/pm/power.d/00-jupiter-cpu
warning: File listed twice: /usr/lib/jupiter/kernel
warning: File listed twice: /usr/lib/jupiter/scripts
warning: File listed twice: /var/jupiter
Requires(interp): /bin/sh /bin/sh
Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1
Requires(post): /bin/sh
Requires(preun): /bin/sh
Requires: /bin/bash /bin/sh /usr/bin/env
Checking for unpackaged file(s): /usr/lib/rpm/check-files /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64
Wrote: /home/crond1/rpmbuild/SRPMS/jupiter-0.1.4+svn04112012-1.fc16.src.rpm
Wrote: /home/crond1/rpmbuild/RPMS/noarch/jupiter-0.1.4+svn04112012-1.fc16.noarch.rpm
Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.tfcrM4
+ umask 022
+ cd /home/crond1/rpmbuild/BUILD
+ cd jupiter-0.1.4+svn04112012
+ /bin/rm -rf /home/crond1/rpmbuild/BUILDROOT/jupiter-0.1.4+svn04112012-1.fc16.x86_64
+ exit 0
[02:31:17]
[restauracion@...crond1/rpmbuild/SPECS $]
Es bueno entender toda la salida porque nos va a facilitar muchas cosas pero siempre debemos instalar los paquetes para probarlo como corresponde.
Miremos el contenido de los directorios que se modificaron al crear el paquete:
Aca podemos ver que en el directorio SRPMS nos deja el paquete fuente, por cada paquete que creamos vamos a tener el fuente que genere aqui.
[restauracion@...crond1/rpmbuild/SPECS $] ls $HOME/rpmbuild/SRPMS
jupiter-0.1.4+svn04112012-1.fc16.src.rpm
En el siguiente directorio podemos ver que tenemos el paquete para la arquitecutra correspondiente, en este caso al ser un paquete de python no utiliza una arquitectura en particular porque utiliza la maquina virtual de python.
[restauracion@...crond1/rpmbuild/SPECS $] ls $HOME/rpmbuild/RPMS
noarch
Una vez adentro del directorio noarch encontramos el binario del paquete listo para instalar.
[restauracion@~$] ls $HOME/rpmbuild/RPMS/noarch
jupiter-0.1.4+svn04112012-1.fc16.noarch.rpm
Vamos a borrar los archivos creados para probar con la siguiente opcion:
[restauracion@...crond1/rpmbuild/SPECS $] rm -rf $HOME/rpmbuild/RPMS/
[03:16:42]
[restauracion@...crond1/rpmbuild/SPECS $] rm -rf $HOME/rpmbuild/SRPMS/
Al borrar nuestros viejos paquetes generamos damos pie para generarlo devuelta con esta opcion:
[restauracion@...crond1/rpmbuild/SPECS $] rpmbuild -bs jupiter.spec
Wrote: /home/crond1/rpmbuild/SRPMS/jupiter-0.1.4+svn04112012-1.fc16.src.rpm
Luego procedemos a chequear y vemos que en este directorio seguimos teniendo los fuentes creados mediante la creacion del paquete.
[restauracion@...crond1/rpmbuild/SPECS $] ls $HOME/rpmbuild/SRPMS
jupiter-0.1.4+svn04112012-1.fc16.src.rpm
En este directorio no tenemos nada dado que al elegir la opcion -bs solo crea los sources.
[restauracion@...crond1/rpmbuild/SPECS $] ls $HOME/rpmbuild/RPMS
[03:38:55]
[restauracion@...crond1/rpmbuild/SPECS $]
Vamos a borrar el paquete que generamos para probar la ultima opcion:
restauracion@...crond1/rpmbuild/SPECS $] rm -r $HOME/rpmbuild/SRPMS/
[03:54:39]
Generamos devuelta el paquete pero esta vez con la opcion -bb.
[restauracion@...crond1/rpmbuild/SPECS $] rpmbuild -bb jupiter.spec
Como vemos al utilizar la opcion anterior no estoy generando los sources .
[restauracion@...crond1/rpmbuild/SPECS $] ls -l $HOME/rpmbuild/SRPMS
total 0
[03:57:20]
Luego listamos el directorio RPMS para ver que ahora si tenemos los binarios correspondientes.
[restauracion@...crond1/rpmbuild/SPECS $] ls -l $HOME/rpmbuild/RPMS
total 4
drwxr-xr-x 2 crond1 crond1 4096 Apr 29 03:54 noarch
[03:57:25]
[restauracion@...crond1/rpmbuild/SPECS $] ls -l $HOME/rpmbuild/RPMS/noarch
total 48
-rw-rw-r-- 1 crond1 crond1 45181 Apr 29 03:54 jupiter-0.1.4+svn04112012-1.fc16.noarch.rpm
[03:57:29]
[restauracion@...crond1/rpmbuild/SPECS $]
Ahora vamos a realizar la instalacion del paquete creado.
[restauracion@...crond1/rpmbuild/SPECS $] sudo yum install $HOME/rpmbuild/RPMS/noarch/jupiter-0.1.4+svn04112012-1.fc16.noarch.rpm
Loaded plugins: fastestmirror, ibm-repository, langpacks, presto, refresh-packagekit, tidy-cache
Examining /home/crond1/rpmbuild/RPMS/noarch/jupiter-0.1.4+svn04112012-1.fc16.noarch.rpm: jupiter-0.1.4+svn04112012-1.fc16.noarch
Marking /home/crond1/rpmbuild/RPMS/noarch/jupiter-0.1.4+svn04112012-1.fc16.noarch.rpm to be installed
Resolving Dependencies
--> Running transaction check
---> Package jupiter.noarch 0:0.1.4+svn04112012-1.fc16 will be installed
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================================================================================================================================================================
Package Arch Version Repository Size
==========================================================================================================================================================================================================
Installing:
jupiter noarch 0.1.4+svn04112012-1.fc16 /jupiter-0.1.4+svn04112012-1.fc16.noarch 68 k
Transaction Summary
==========================================================================================================================================================================================================
Install 1 Package
Total size: 68 k
Installed size: 68 k
Is this ok [y/N]: y
Downloading Packages:
Running Transaction Check
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : jupiter-0.1.4+svn04112012-1.fc16.noarch 1/1
warning: group jupiter does not exist - using root
Adding Jupiter group
Adding users to Jupiter group: crond1
Adding jupiter to sudoers
Altering sudo tty permissions
Setting permissions..
Verifying : jupiter-0.1.4+svn04112012-1.fc16.noarch 1/1
Installed:
jupiter.noarch 0:0.1.4+svn04112012-1.fc16
Complete!
[04:10:27]
[restauracion@/home/crond1/rpmbuild/SPECS $]
Podemos ver que contiene:
[restauracion@/home/crond1/rpmbuild/SPECS $] rpm -ql jupiter
/etc/pm/power.d
/etc/pm/power.d/00-jupiter-cpu
/etc/xdg/autostart/jupiter-startup.desktop
/etc/xdg/autostart/jupiter.desktop
/usr/bin/jupiter
/usr/lib/jupiter/kernel
/usr/lib/jupiter/kernel/battery
/usr/lib/jupiter/kernel/power
/usr/lib/jupiter/scripts
/usr/lib/jupiter/scripts/bluetooth
/usr/lib/jupiter/scripts/cpu-control
/usr/lib/jupiter/scripts/jupiter
/usr/lib/jupiter/scripts/notify
/usr/lib/jupiter/scripts/resolutions
/usr/lib/jupiter/scripts/rotate
/usr/lib/jupiter/scripts/state
/usr/lib/jupiter/scripts/touchpad
/usr/lib/jupiter/scripts/vga-out
/usr/lib/jupiter/scripts/wifi
/usr/share/applications/jupiter.desktop
/usr/share/pixmaps/bluetooth.png
/usr/share/pixmaps/bolt1.png
/usr/share/pixmaps/bolt2.png
/usr/share/pixmaps/bolt3.png
/usr/share/pixmaps/bolt4.png
/usr/share/pixmaps/camera-web.png
/usr/share/pixmaps/devices.png
/usr/share/pixmaps/display.png
/usr/share/pixmaps/gnome-dev-wavelan.png
/usr/share/pixmaps/input-tablet.png
/usr/share/pixmaps/jupiter.png
/usr/share/pixmaps/ondemand.png
/usr/share/pixmaps/overclock.png
/usr/share/pixmaps/performance.png
/usr/share/pixmaps/powersave.png
/usr/share/pixmaps/resolution.png
/usr/share/pixmaps/rotate.png
/var/jupiter
[04:10:54]
[restauracion@/home/crond1/rpmbuild/SPECS $]
Mas informacion:
[restauracion@/home/crond1/rpmbuild/SPECS $] rpm -qi jupiter
Name : jupiter
Version : 0.1.4+svn04112012
Release : 1.fc16
Architecture: noarch
Install Date: Sun 29 Apr 2012 04:10:23 AM ART
Group : X11/Applications
Size : 69714
License : GPL
Signature : (none)
Source RPM : jupiter-0.1.4+svn04112012-1.fc16.src.rpm
Build Date : Sun 29 Apr 2012 03:54:48 AM ART
Build Host : restauracion
Relocations : (not relocatable)
URL : http://www.jupiterapplet.org/
Summary : Jupiter Control System for Computers
Description :
Hardware Control Interface for Computers
[04:11:20]
[restauracion@/home/crond1/rpmbuild/SPECS $]
Ahora vamos a ver como funciona dado que es primordial hacer esto porque debemos testear que funcione bien:
En la imagen de la izquierda tenemos los dos iconos significativos de Jupiter que nos va a gestionar el ahorro de energia, el primero es una notify de alerta que nos avisa que esta en modo de alto perfomance de ahorro de energia, el siguiete al hacerle click tenemos la configuracion de este. Luego a la derecha informacion acerca del programa.
Deberiamos poder probar si no tenemos problemas al eliminar el paquete :
[restauracion@/home/crond1/rpmbuild/RPMS/noarch $] sudo yum remove jupiter
Loaded plugins: fastestmirror, ibm-repository, langpacks, presto, refresh-packagekit, tidy-cache
Resolving Dependencies
--> Running transaction check
---> Package jupiter.noarch 0:0.1.4+svn04112012-1.fc16 will be erased
--> Finished Dependency Resolution
Dependencies Resolved
==========================================================================================================================================================================================================
Package Arch Version Repository Size
==========================================================================================================================================================================================================
Removing:
jupiter noarch 0.1.4+svn04112012-1.fc16 @/jupiter-0.1.4+svn04112012-1.fc16.noarch 68 k
Transaction Summary
==========================================================================================================================================================================================================
Remove 1 Package
Installed size: 68 k
Is this ok [y/N]: y
Downloading Packages:
Running Transaction Check
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Erasing : jupiter-0.1.4+svn04112012-1.fc16.noarch 1/1
Verifying : jupiter-0.1.4+svn04112012-1.fc16.noarch 1/1
Removed:
jupiter.noarch 0:0.1.4+svn04112012-1.fc16
Complete!
[04:31:43]
[restauracion@/home/crond1/rpmbuild/RPMS/noarch $]
Chequeamos si esta :
[restauracion@/home/crond1/rpmbuild $] rpm -qa |grep jupiter
[04:33:08]
[restauracion@/home/crond1/rpmbuild $]
Si ahora utilizamos un archivo test que contiene la salida del comando rpm -ql jupiter que ejecutamos antes de removerlo, vamos a tener las rutas que se instalaron.
[restauracion@/home/crond1/rpmbuild $] cat test | xargs ls -l
ls: cannot access /etc/pm/power.d/00-jupiter-cpu: No such file or directory
ls: cannot access /etc/xdg/autostart/jupiter-startup.desktop: No such file or directory
ls: cannot access /etc/xdg/autostart/jupiter.desktop: No such file or directory
ls: cannot access /usr/bin/jupiter: No such file or directory
ls: cannot access /usr/lib/jupiter/kernel: No such file or directory
ls: cannot access /usr/lib/jupiter/kernel/battery: No such file or directory
ls: cannot access /usr/lib/jupiter/kernel/power: No such file or directory
ls: cannot access /usr/lib/jupiter/scripts: No such file or directory
ls: cannot access /usr/lib/jupiter/scripts/bluetooth: No such file or directory
ls: cannot access /usr/lib/jupiter/scripts/cpu-control: No such file or directory
ls: cannot access /usr/lib/jupiter/scripts/jupiter: No such file or directory
ls: cannot access /usr/lib/jupiter/scripts/notify: No such file or directory
ls: cannot access /usr/lib/jupiter/scripts/resolutions: No such file or directory
ls: cannot access /usr/lib/jupiter/scripts/rotate: No such file or directory
ls: cannot access /usr/lib/jupiter/scripts/state: No such file or directory
ls: cannot access /usr/lib/jupiter/scripts/touchpad: No such file or directory
ls: cannot access /usr/lib/jupiter/scripts/vga-out: No such file or directory
ls: cannot access /usr/lib/jupiter/scripts/wifi: No such file or directory
ls: cannot access /usr/share/applications/jupiter.desktop: No such file or directory
ls: cannot access /usr/share/pixmaps/bluetooth.png: No such file or directory
ls: cannot access /usr/share/pixmaps/bolt1.png: No such file or directory
ls: cannot access /usr/share/pixmaps/bolt2.png: No such file or directory
ls: cannot access /usr/share/pixmaps/bolt3.png: No such file or directory
ls: cannot access /usr/share/pixmaps/bolt4.png: No such file or directory
ls: cannot access /usr/share/pixmaps/camera-web.png: No such file or directory
ls: cannot access /usr/share/pixmaps/devices.png: No such file or directory
ls: cannot access /usr/share/pixmaps/display.png: No such file or directory
ls: cannot access /usr/share/pixmaps/gnome-dev-wavelan.png: No such file or directory
ls: cannot access /usr/share/pixmaps/input-tablet.png: No such file or directory
ls: cannot access /usr/share/pixmaps/jupiter.png: No such file or directory
ls: cannot access /usr/share/pixmaps/ondemand.png: No such file or directory
ls: cannot access /usr/share/pixmaps/overclock.png: No such file or directory
ls: cannot access /usr/share/pixmaps/performance.png: No such file or directory
ls: cannot access /usr/share/pixmaps/powersave.png: No such file or directory
ls: cannot access /usr/share/pixmaps/resolution.png: No such file or directory
ls: cannot access /usr/share/pixmaps/rotate.png: No such file or directory
/etc/pm/power.d:
total 0
/var/jupiter:
total 20
-rwxrwxr-x 1 root jupiter 43 Apr 29 04:14 available_resolutions
-rw-r--r-- 1 root root 6 Apr 29 04:14 cpu_mode
-rw-r--r-- 1 root root 6 Apr 29 04:14 power
-rw-r--r-- 1 root root 9 Apr 29 04:14 rotation_saved
-rw-r--r-- 1 root root 6 Apr 29 04:14 vga_saved
[04:33:50]
Vemos que el directorio /var/jupiter quedo y contiene archivos creados porque lo ejecutamos una vez.
Como vemos nos queda la pregunta , ¿ Esta bien que no borre esos archivos ?, la vamos a dejar pendiente para un proximo post cuando hablemos mas sobre el tema.
Por ahora lo mejor es bajarse otros paquetes src.rpm y probar generar el paquete.
Ya tenemos nuestra estructura de directorio ahora tan solo basta bajar otro src.rpm y colocarlo en $HOME/rmpbuild/SOURCES/.
El paquete generado tambien lo pueden bajar de aca tambien.
Prueben hacer lo mismo pero con este paquete que fue empaquetado por la misma persona del primer ejemplo.[1]
http://alvesadrian.fedorapeople.org/encuentro-0.5-7.fc16.src.rpm
Ahora si quisieramos bajar algun paquete src deberiamos habilitar el repo correspondiente de sources.
Editamos el archivo /etc/yum.repos.d/fedora.repo y donde dice enabled=0 lo cambiamos por 1.
[root@restauracion yum.repos.d]# yum --disablerepo=\* --enablerepo=fedora-source repolist
Loaded plugins: fastestmirror, ibm-repository, langpacks, presto, refresh-packagekit, tidy-cache
Loading mirror speeds from cached hostfile
* fedora-source: fedora.mirrorcatalogs.com
repo id repo name status
fedora-source Fedora 16 - Source 0
repolist: 0
[root@restauracion yum.repos.d]#
Luego procedemos a bajar un paquete en especial.
[root@restauracion yum.repos.d]# yum --disablerepo=\* --enablerepo=fedora-source search wget
Loaded plugins: fastestmirror, ibm-repository, langpacks, presto, refresh-packagekit, tidy-cache
Loading mirror speeds from cached hostfile
* fedora-source: fedora.mirrorcatalogs.com
=========================================================================================== N/S Matched: wget ============================================================================================
wget.x86_64 : A utility for retrieving files using the HTTP or FTP protocols
Name and summary matches only, use "search all" for everything.
[root@restauracion yum.repos.d]#
Procedemos a bajar el fuente:
[restauracion@/home/crond1/rpmbuild/SOURCES $] yumdownloader –source wget
Loaded plugins: fastestmirror, ibm-repository, langpacks, presto, refresh-packagekit
Loading mirror speeds from cached hostfile
* fedora: mirror.metrocast.net
* fedora-source: mirror.metrocast.net
* updates: mirror.cc.vt.edu
Enabling updates-source repository
updates-source/metalink | 12 kB 00:00
updates-source | 3.3 kB 00:00
updates-source/primary_db | 1.0 MB 00:01
Enabling rpmfusion-nonfree-updates-source repository
rpmfusion-nonfree-updates-source | 2.7 kB 00:00
rpmfusion-nonfree-updates-source/primary_db | 26 kB 00:00
Enabling rpmfusion-nonfree-source repository
rpmfusion-nonfree-source | 2.7 kB 00:00
rpmfusion-nonfree-source/primary_db | 33 kB 00:00
Enabling rpmfusion-free-updates-source repository
rpmfusion-free-updates-source | 2.7 kB 00:00
rpmfusion-free-updates-source/primary_db | 69 kB 00:00
wget-1.12-4.fc16.src.rpm | 1.6 MB 00:02
[05:05:08]
[restauracion@/home/crond1/rpmbuild/SOURCES $]
Luego procedemos a instalar el paquete (dentro de $HOME/rmpbuild/SOURCES):
rpm -ivh wget-1.12-4.fc16.src.rpm
rpm -Uvh wget-1.12-4.fc16.src.rpm
yum install wget-1.12-4.fc16.src.rpm
Luego nos vamos al directorio $HOME/rpmbuild/SPECS :
[restauracion@/home/crond1/rpmbuild/SPECS $] ls
jupiter.spec wget.spec
[05:08:14]
[restauracion@/home/crond1/rpmbuild/SPECS $]
Ahora generamos el paquete instalador .
[restauracion@/home/crond1/rpmbuild/SPECS $] rpmbuild -bb wget.spec
error: Failed build dependencies:
openssl-devel is needed by wget-1.12-4.fc16.x86_64
[05:10:17]
[restauracion@/home/crond1/rpmbuild/SPECS $]
Como veran no cumplio con los requerimientos por lo cual se necesita esa libreria para poder empaquetarlo, procedamos a instalarla.
sudo yum install openssl-devel
Luego de instalarla ahora si probemos generar el a paquete:
[restauracion@/home/crond1/rpmbuild/SPECS $] rpmbuild -bb wget.spec
[restauracion@/home/crond1/rpmbuild/SPECS $] ls -l ../RPMS/
total 8
drwxr-xr-x 2 crond1 crond1 4096 Apr 29 03:54 noarch
drwxr-xr-x 2 crond1 crond1 4096 Apr 29 05:13 x86_64
[restauracion@/home/crond1/rpmbuild/SPECS $] ls -l ../RPMS/x86_64/wget-
wget-1.12-4.fc16.x86_64.rpm wget-debuginfo-1.12-4.fc16.x86_64.rpm
[05:13:56]
[restauracion@/home/crond1/rpmbuild/SPECS $] ls -l ../RPMS/x86_64/wget-*
-rw-rw-r-- 1 crond1 crond1 487649 Apr 29 05:12 ../RPMS/x86_64/wget-1.12-4.fc16.x86_64.rpm
-rw-rw-r-- 1 crond1 crond1 599325 Apr 29 05:13 ../RPMS/x86_64/wget-debuginfo-1.12-4.fc16.x86_64.rpm
[05:14:06]
[restauracion@/home/crond1/rpmbuild/SPECS $]
La salida sera u poco grande pero tuvimos el resultado esperado, tenemos nuestro paquete binario listo para instalar.
Ahora pueden empezar a probar a bajarse paquetes src.rpm y empezar a crear sus propios paquetes ademas tambien pueden mirar los spec files para ir enteniendo un poco mas acerca de ellos.
Queria terminar este post agradeciendo a Adrian Alves que es developer para Fedora y gracias a el este post pudo ser escrito con la idea de plasmar todos los conocimeintos que voy adquiriendo de su enseñanza.
Espero que como me paso a mi esto les abra las puertas a un mundo nuevo….
[1]http://alvesadrian.fedorapeople.org/ https://fedoraproject.org/wiki/User:Alvesadrian

The Creacion de un paquete rpm a partir del src.rpm by ITRestauracion, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported License.
