Your SlideShare is downloading. ×
Rpm - Gestor de Paquetes Linux
Rpm - Gestor de Paquetes Linux
Rpm - Gestor de Paquetes Linux
Rpm - Gestor de Paquetes Linux
Rpm - Gestor de Paquetes Linux
Rpm - Gestor de Paquetes Linux
Rpm - Gestor de Paquetes Linux
Rpm - Gestor de Paquetes Linux
Rpm - Gestor de Paquetes Linux
Rpm - Gestor de Paquetes Linux
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Rpm - Gestor de Paquetes Linux

321

Published on

Empaquetando …

Empaquetando
nuestras aplicaciones
para distribuirlas

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
321
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Empaquetandonuestras aplicacionespara distribuirlasHoy en día son muchas las personas que se dedican al desarrollo de software,pudiendo ser el desarrollo de aplicaciones completas tanto para escritorio como paraWeb, o de simples aditamentos o extenciones a una ya desarrollada; éstas personas seven en la imperiosa necesidad de contar con un medio que les permita distribuir éstasaplicaciones, dentro sus entornos, o hacerlos públicos en Internet para beneficio oconocimiento de otros usuarios.El empaquetar una aplicación representa una de las mejores y más recomendadasformas de distribuir una aplicación a usuarios de cierto entorno, o ponerla a disposiciónen algún repositorio disponible en Internet. proceso tenga la facilidad de realizarse de forma automática, considerando además sus posibles actualizaciones, parchado de bugs, mantención y acceso a los desarrolladores de la misma. El proceso de empaquetado no es un proceso tan complicado como parece, pero tiene ciertas variantes dependiendo principalmente de la distribución a la cual esta destinada la aplicación. Los paquetes creados consideran básicamente cierta información común (las fuentes, laIntroducción arquitectura, la descripción, lasMuchos cuando empezamos a desarrollar dependencias, los requisitos, etc), éstanuestras primeras aplicaciones, para información es contemplada en uno o dosponerlas en producción o a disposición de archivos de especificación y/o control enotros usuarios, generalmente nos limitamos a ambos casos; archivos que son la principalrealizar una simple copia de los programas y fuente de descripción y especificación paraarchivos en las máquinas destino; futuras regeneraciones del paquete en si.representando todo ésto un proceso Una de las mayores facilidades que provee ellaborioso y muchas veces complicado, ya empaquetado de aplicaciones es: su fácilque representa que en muchos casos distribución, actualización y parchado detengamos que instalar ciertos programas o bugs en algunos casos, tareas, que a lalibrerías que hacen falta para que nuestra postre se realizan de forma automática, conaplicación funcione correctamente y más aún tan solo poner a disposición los nuevoscuando el software instalado en cada PC paquetes o parches según corresponda.varia de una a otra.Para evitar todo este proceso tedioso, es Elementos de un proceso derecomendable empaquetar nuestrasaplicaciones, para que el proceso de empaquetadodistribución sea transparente para los Son varios los elementos que se debenusuarios destino, y sobre todo que este considerar al momento de empaquetar una
  • 2. aplicación, entre los más comunes podemos Característicasdenotar: ✔ RPM está diseñado para disponer de ✔ La arquitectura destino del paquete potentes parámetros de consulta. ✔ El empaquetado de fuentes o binarios Usted puede hacer búsquedas de paquetes a lo largo de toda la base de ✔ La distribución destino datos o sólo de ciertos ficheros. ✔ Información del paquete, expresada También puede encontrar fácilmente a mediante directivas (descripción, qué paquete pertenece un fichero y dependencias, etc.) de dónde proviene. Los ficheros RPM ✔ Firma digital del paquete, para en sí mismos son archivos comprimidos, pero puede consultar garantizar la autenticidad del mismo paquetes independientes fácil yEn su generalidad esta información es rápidamente, gracias a una cabeceracontemplada en los archivos destinados a binaria a medida añadida al paqueteespecificar y/o controlar el proceso de con toda la información que puedeempaquetado en si. necesitar, almacenada sin comprimir. Esto permite consultas rápidas.Formatos de empaquetado y ✔ Otra poderosa característica es la habilidad de verificar paquetes. Sidistribución está preocupado por haber borradoPor lo general cada distribución tiene su algún fichero importante, sólo tienepropia forma de empaquetar sus que verificar el paquete. Quedaráaplicaciones; pero hoy en día existen dos cumplidamente informado degrandes familias que han impuesto cualquier anomalía. Si ésto ocurriera,supremacía en este tema como son: podrá reinstalar el paquete si lo considera necesario. Cualquier fichero ✔ RMP (Redhat Package Manager) de de configuración que usted tenga la familia de RedHat (RHEL, Fedora, quedará a salvo. CentOS), Mandriva, Suse ✔ Deb de la familia de Debian (Debian, Ubuntu, y derivados). Requisitos Al momento de empaquetar una aplicación, se precisa tener instalados los siguientesRPM paquetes:RPM es el gestor de paquetes de Red Hat ✔ rpm-build(Red Hat Package Manager). Aunqueaparece Red Hat en su nombre, la intención ✔ rpm-develes que sea un sistema de empaquetado ✔ gnupgabierto y disponible para el uso decualquiera. Permite a los usuarios tomar el ✔ installcódigo fuente (source code) y empaquetarlo ✔ gcc*en forma de fuentes y binaria de forma quelos ficheros binarios sean fácilmente ✔ automake*instalables y rastreables y las fuentes puedan ✔ autoconf*ser reconstruidas con facilidad. Tambiéngestiona una base de datos de todos los Todos y cada uno de éstos pueden serpaquetes y sus ficheros que puede ser usada instalados mediante el gestor de paquetes depara verificar paquetes e interrogarla para la distribución utilizada.obtener información acerca de ficheros y/opaquetes.
  • 3. Creando nuestro paquete archivos necesarios para la creación del paquete, así mismo de los archivosPor tratarse de un artículo que pretende generados.demostrar el empaquetamiento de La estructura recomendada es la siguiente:aplicaciones, su procedimiento ycaracterísticas del mismo y para que setenga una mejor idea de lo que deseamoshacer, explicaremos el objetivo y lascaracterísticas de nuestro paquete, bajo elsiguiente detalle: ✔ Crearemos un paquete que incluya los distintos números de la revista Atix. ✔ El paquete dispondrá de actualizaciones, ésto representa que cada vez que se libere un nuevo número de la revista, también se liberara una actualización del paquete, que obviamente permita contar con el nuevo número de la revista Atix ✔ ~/rpm/BUILD: El directorio donde los ✔ El paquete dispondrá de una firma códigos fuente se construyen. digital, para garantizar la autenticidad del paquete ✔ ~/rpm/RPMS: Contiene los directorios, uno por cada arquitectura, ✔ El formato del paquete será un RPM, que recibirán posteriormente los para distribuciones como RHEL, ficheros binarios compilados. CentOS, Fedora, etc. (en posteriores entregas realizaremos el ✔ ~/rpm/RPMS/i586: El directorio donde empaquetado para otras se almacenarán los paquetes rpm distribuciones) para procesadores i586. ✔ Una vez instalado el paquete, éste ✔ ~/rpm/RPMS/x86_64: El directorio permitirá incluir los distintos números donde se almacenarán los paquetes de la revista Atix en el menú de rpm para procesadores AMD64. aplicaciones/educación, lo que ✔ ~/rpm/RPMS/noarch: El directorio facilitará el acceso directo a cada uno donde se almacenarán los paquetes de los números de la revista rpm que sean independientes de la arquitectura del procesador.Detalles de la creación de ✔ ~/rpm/SOURCES: Los ficheros depaquetes código fuente (mipaquete.tar.bz2, por ejemplo).A continuacón detallamos la creación depaquetes. ✔ ~/rpm/SPECS: Los ficheros de especificaciones que tendremos que construir.Estructura de directorios ✔ ~/rpm/SRPMS: El rpm de códigoPara construir paquetes, el primer elemento fuente tras su construcción.importante es crear una estructura de ✔ ~/rpm/tmp: Para cosas temporalesdirectorios adecuada a tal efecto, de tal forma que rpm creará cuando construya susque esta estructura nos permita mantener paquetes.orden y control sobre todos y cada uno de los
  • 4. Archivo .rpmmacrosUn segundo elemento importante dentro la creación de paquetes es el archivo .rpmmacros, quecontiene una serie de parámetros de configuración que serán considerados al momento decrear el paquete. En caso de no existir este archivo se tomará lo parámetros y ubicaciones pordefecto de la distribuciónEl contenido básico de este archivo, podría ser el que mostramos a continuación~/.rpmmacros# Descripcion del Path del paquete%_topdir %(echo $HOME)/rpm%_tmppath %(echo $HOME)/rpm/tmp# Para que nuestros paquetes sean automáticamente firmados con GPG, incluimos lassiguientes lineas:%_signature gpg%_gpg_name RevistaAtix%_gpg_path ~/.gnupg# De todas formas el paquete puede ser firmado despues de ser creado, haciendo uso dela opción rpm --resign# Detalles del empaquetador, la distribución y el vendedor.%packager Esteban Saavedra Lopez <estebansaavedra@yahoo.com>%distribution RHEL, CentOS, Fedora, Mandriva, Suse%vendor Revista Atix <http://atix.opentelematics.org># Para incluir un subfijo propio en el nombre del paquete%distsuffix revistaFirma digital Archivo de especificaciónUn tercer elemento importante es la firma El cuarto elemento importante, el el archivodigital, con la que firmaremos nuestros de especificación, que contiene una serie depaquetes, proveyéndoles la autenticidad opciones parametrizadas que permitiráncorrespondiente. caracterizar el paquete. Este archivo dispone de varias secciones como ser:Generalmente cuando instalamos unpaquete, que no provenga de los repositorios ✔ cabecera:contiene un conjunto deoficiales, el sistema operativo nos alerta que campos que permiten identificar alestamos instalando un paquete del cual paquetedesconocemos su procedencia y corremos el ✔ description: contiene una descripciónriesgo de instalar software malicioso en detallada del paquetenuestro sistema, por tal razón es convenienteinstalar paquetes que dispondrán de una ✔ %prep:contiene el nombre de losfirma digital que garantice su autenticidad. scripts necesarios para desempaquetar y parchar las fuentesEn el número 4 de la revista Atix, publique unartículo de como crear una llave pública y ✔ %build:contiene los comandos paraprivada que sirve para firmar digitalmente construir y compilar los datos yacualquier documento, sugiero revisar ese instalados en el directorio correctoartículo en caso de no conocer como se ✔ %install:contiene los comandosgeneran llaves para la firma de documentos. necesarios para para realizar laPara nuestro ejemplo asumimos que instalacióntenemos creado una llave GPG llamada ✔ %files:contiene el detalle de losRevistaAtix, con la cual se firmarán nuestros archivos componentes del paquete.paquetes. ✔ %clean: contiene las instrucciones
  • 5. que permiten limpiar los archivos ✔ %pre: guiones preinstalación temporales generados ✔ %post: guiones postinstalación ✔ %config: contiene el listado de los ✔ %preun: guiones predesistalación ficheros de configuración de un paquete ✔ %postun: guiones postdesistalación ✔ %doc:Contiene el listado de archivos de documentación del paquete Debemos tener presente que no es necesario ✔ %changelog: contiene el detalle de incluir todas las secciones, sino solo las que los diversos cambios hechos al se consideren necesarias en cada caso, así paquete. como veremos en el ejemplo que desarrollamos.Para una mejor comprensión del contenido de este archivo de especificación presentamos eldesarrollado para nuestro ejemplo, y la explicación del mismo.CabeceraContiene la información básica del paquete (nombre, versión, licencia, requerimiento, ...)atix.specName: atixVersion: 1.0.1Release: 1.%{distsuffix}URL: http://atix.opentelematics.org/Summary: Numeros de la Revista AtixLicense: GPLGroup: DocumentationSource0: atix-1.0.1.tar.bz2BuildRoot: %{_tmppath}/%{name}-%{version}-buildrootRequires: evince%descriptionatix es un paquete creado por Esteban Saavedra Lopez <jesaavedra@opentelematics.org>.El objetivo de este paquete es instalar los distintos numeros publicados de la Revistade Software Libre Atix, y peridodicamente poseer actualizaciones que vayan incluyendolos distintos numeros segun se vayan liberando.Más información en: <http://atix.opentelematics.org>En nuestro ejemplo el archivo atix-1.0.1.tar.bz2 , contiene todos los archivos del paquete(archivos .pdf de la revista, archivos .xpm de iconos, archivos .desktop de entradas al menú ylos archivos de documentación)%prepContiene el nombre de los scripts necesarios para desempaquetar y parchar las fuentes . Ennuestro caso realizará la descompresión de los archivos fuente (source 0)%prep%setup -q -a 0%installContiene los comandos necesarios para realizar la instalación ; incluyendo la creación dedirectorios en caso de no existir (-D), los atributos de los archivos (-m) y las ubicaciones dondese instalarán/copiarán los archivos contenidos en el paquete.
  • 6. atix.spec (continuación)%installrm -rf $RPM_BUILD_ROOTinstall -D -m 644 atix01.pdf $RPM_BUILD_ROOT/usr/share/RevistaAtix/atix01.pdfinstall -D -m 644 atix02.pdf $RPM_BUILD_ROOT/usr/share/RevistaAtix/atix02.pdfinstall -D -m 644 atix03.pdf $RPM_BUILD_ROOT/usr/share/RevistaAtix/atix03.pdfinstall -D -m 644 atix04.pdf $RPM_BUILD_ROOT/usr/share/RevistaAtix/atix04.pdfinstall -D -m 644 atix05.pdf $RPM_BUILD_ROOT/usr/share/RevistaAtix/atix05.pdfinstall -D -m 644 atix06.pdf $RPM_BUILD_ROOT/usr/share/RevistaAtix/atix06.pdfinstall -D -m 644 LEAME $RPM_BUILD_ROOT/usr/share/RevistaAtix/LEAMEinstall -D -m 644 TODO $RPM_BUILD_ROOT/usr/share/RevistaAtix/TODOinstall -D -m 644 COPYING $RPM_BUILD_ROOT/usr/share/RevistaAtix/COPYINGinstall -D -m 644 ChangeLog $RPM_BUILD_ROOT/usr/share/RevistaAtix/ChangeLoginstall -D -m 644 atix01.desktop $RPM_BUILD_ROOT/usr/share/applications/atix01.desktopinstall -D -m 644 atix02.desktop $RPM_BUILD_ROOT/usr/share/applications/atix02.desktopinstall -D -m 644 atix03.desktop $RPM_BUILD_ROOT/usr/share/applications/atix03.desktopinstall -D -m 644 atix04.desktop $RPM_BUILD_ROOT/usr/share/applications/atix04.desktopinstall -D -m 644 atix05.desktop $RPM_BUILD_ROOT/usr/share/applications/atix05.desktopinstall -D -m 644 atix06.desktop $RPM_BUILD_ROOT/usr/share/applications/atix06.desktopinstall -D -m 644 atix01.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/atix01.xpminstall -D -m 644 atix02.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/atix02.xpminstall -D -m 644 atix03.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/atix03.xpminstall -D -m 644 atix04.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/atix04.xpminstall -D -m 644 atix05.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/atix05.xpminstall -D -m 644 atix06.xpm $RPM_BUILD_ROOT/usr/share/pixmaps/atix06.xpm%cleanContiene las instrucciones que permiten limpiar los archivos temporales generadosatix.spec (continuación)%cleanrm -rf $RPM_BUILD_ROOT%filesContiene el detalle (atributos, ubicación) de todos los archivos componentes del paquete.atix.spec (continuación)%files%defattr(0644,root,root)/usr/share/RevistaAtix/atix01.pdf/usr/share/RevistaAtix/atix02.pdf/usr/share/RevistaAtix/atix03.pdf/usr/share/RevistaAtix/atix04.pdf/usr/share/RevistaAtix/atix05.pdf/usr/share/RevistaAtix/atix06.pdf/usr/share/RevistaAtix/LEAME/usr/share/RevistaAtix/TODO/usr/share/RevistaAtix/COPYING/usr/share/RevistaAtix/ChangeLog/usr/share/applications/atix01.desktop/usr/share/applications/atix02.desktop/usr/share/applications/atix03.desktop/usr/share/applications/atix04.desktop/usr/share/applications/atix05.desktop/usr/share/applications/atix06.desktop/usr/share/pixmaps/atix01.xpm/usr/share/pixmaps/atix02.xpm/usr/share/pixmaps/atix03.xpm/usr/share/pixmaps/atix04.xpm
  • 7. /usr/share/pixmaps/atix05.xpm/usr/share/pixmaps/atix06.xpm%docContiene el listado de archivos de documentación del paquete, éstos se instalarán en/usr/share/doc/$NOMBRE­$VERSIÓNatix.spec (continuación)%doc LEAME TODO COPYING ChangeLog%changelogContiene el detalle de los diversos cambios hechos al paquete.atix.spec (continuación)%changelog* Wed Jan 7 2009 Esteban Saavedra Lopez <http://jesaavedra.opentelematics.org>- Reempaquetado del paquete atix- El paquete contiene los primeros 6 numeros de la revista Atix.- Modificacion del archivo spec* Tue Jan 6 2009 Esteban Saavedra Lopez <http://jesaavedra.opentelematics.org>- Inicio del empaquetado del paquete atix- El paquete solo contenia el primer numero de la revista Atix, por temas de prueba- Creacion inicial del archivo specCreación del paqueteUna vez que se tiene la estructura de directorios adecuada, la firma digital, el fichero.rpmmacros, el archivo .SPEC, los archivos fuentes del paquete; podemos proceder a crear elpaquete, como se muestra en la figura siguiente:
  • 8. Detalles del paquete creado Información del paquete Listado de archivos del paquete
  • 9. Instalación del paqueteCuando procedemos a instalar un paquete que no tenga una firma digital el sistema operativonos advierte de éste echo como muestra la figura.Por eso es conveniente instalar paquetes que dispongan de una firma digital que garantice suautenticidad, en nuestro caso primero procedemos a importar la llave como muestra la figuray luego procedemos a instalar el paquete, donde observaremos que el sistema operativo ya nomuestra la advertencia anteriormente vista.Demostración del paquete instaladoUno de los objetivos que teníamos, era que después de instalado el paquete creado, éstepermita el acceso desde el menú de aplicaciones a todos y cada uno de los números de laRevista Atix; esto se logra con ayuda de los archivos atix01.desktop, ..atix06.desktop. Elcontenido de uno de estos archivos es el mostrado a continuación:atix01.desktop[Desktop Entry]Name=Revista Atix No 1Comment=Revista de Software Libre Atix No 1Categories=Education;Encoding=UTF-8Exec=evince /usr/share/RevistaAtix/atix01.pdfIcon=atix01StartupNotify=trueTerminal=falseType=Application
  • 10. La siguiente figura muestra como se ve el menú aplicaciones, incluyendo las opciones referidasa cada número de la revista.Trabajo futuroUn trabajo que se debería realizar es la creación de un repositorio público en Internet, quepermita a cualquier usuario poder instalar y actualizar el paqueteatix-1.0.1-1.revista.noarch.rpm, haciendo uso del gestor de paquetes yum y referenciado por unarchivo atix.repo (para el caso de RHEL, CentOs, Fedora)Referencias[1] http://www.rpm.org/[2] http://es.wikipedia.comAutorEsteban Saavedra LópezLíder de la Comunidad ATIX (Oruro – Bolivia)Activista de Software Libre en Boliviajesaavedra@opentelematics.orghttp://jesaavedra.opentelematics.org

×