Bitacora con mi primer RPM (Empaquetando Hptalx )

Hptalx es un emulador de la calculadora hp 49g pero ese no es el fuerte de este programa, se utiliza para transferir archivos desde la pc a tu calculadora por medio del puerto USB, también tiene la opción de actualizar rom, el programa es del 2007 pero es muy importante para los que estudiamos ingeniería y bueno cualquiera dirá prefiero usar una tarjeta SD. El problema es que ya no venden tarjetas de 1g ni de 2g entonces si no tienes una SD que hallas comprado hace algún tiempo, la hp no te va reconocer una SD de 4g mucho menos de 8g asi que he alli la importancia de este programita para los que usamos Gnu-Linux.

Pagina del Proyecto: http://sourceforge.net/projects/hptalx/

Para comenzar a empaquetar debemos crear otra seccion para prevenir algun daño, asi en mi caso voy a crear una sección con el nombre crearrpm

Creamos el usuario:


Creamos contraseña para la seccion del usuario creado:

Si queremos verificar si efectivamente se creo el usuario o cuantos usuarios tenemos en nuestro sistema hacemos lo siguiente


 Es necesario instalar algunas herramientas que se necesitan para empaquetar, esto lo hacemos cuando iniciemos la seccion nueva que hemos creado


procedemos a crear una estructura de directorios necesaria con el siguiente comando

 El comando anterior nos crea las carpetas que vemos y el archivo SPEC lo debemos guardar en rpmbuild/SPEC y en sources debe ir el archivo hptalx-1.3.1a.tar.gz


Para crear el spec es muy sencillo creamos un archivo .txt y le cambiamos la extencion a .spec, este archivo debe tener el nombre del programa en mi caso se debe llamar hptalx.spec, como ayuda para saber donde va cada cosa podemos guiarnos con este spec http://pkgs.fedoraproject.org/cgit/f2fs-tools.git/tree/f2fs-tools.spec 

El spec es la base del empaquetamiento, si el spec esta bien el empaquetamiento sera un éxito sin duda. Toda la información que va en el spec la debemos buscar en la documentacion que de el desarrollador, los requerimientos, licencia y demas...

.::En Group tenia Science, lo cambie a emulator
En las secciones %prep, %build, %install, existen unos macros que nos ayudan la vida, para no estar copiando rutas de directorios y demás usamos los macros que podremos ver en la seguiente pagina http://fedoraproject.org/wiki/Packaging:RPMMacros

Hacemos una prueba del spec para ver si hay errores, para eso nos vamos al directorio creado y el comando rpmlint se encarga de analizar si hay o no errores.

Busco el archivo specs que he creado y las lineas donde tengo los errores...

1 Error: W: non-standard-group, Ciencia no es un grupo estandar, busque en internet y los encontré, aunque yo se que hay una guiá que especifica todo mejor en esta otra encontré lo que necesitaba  http://fedoraproject.org/wiki/RPMGroups entonces le puse como grupo Applications/Emulators ya que Hptalx es un emulador.

2 Error: W: setup-not-quiet, busque la linea 23 del Spec y tengo esto %setup q -n %{name}%{version} y el error era porque faltaba el guion antes de la letra es decir esta linea deberia ir asi %setup -q -n %{name}%{version}

3 Error: W: configure-without-libdir-spec, cambie el "./configure" por el macro "%configure"

4 Error: W:  mixed-use-of-spaces-and-tabs, Me dice algo sobre los espacios, lo que hice fue quitar el espacio que hay despues de los ":" y puse todo pegado.

En el spec tengo algunas cosas que ya no se usan así que procedí a borrarlas. El %clean; Builroot tampoco se usa. Otra cosa que también acomode fue la descripcion ya que por linea lo máximo son 80 caracteres que deben ir, la licencia tambien fue acomodada entre otras cosas.

Ya una vez creado el spec sin ningun error procedemos a construir el SRPM y el RPMS binario ejecutando esto:


Al tipear eso en la terminal me salio el siguiente error

Error: [crearrpm@localhost SPECS]$ rpmbuild -bi hptalx.spec
error: Archivo /home/crearrpm/rpmbuild/SOURCES/download: No existe el fichero o el directorio
. Lo que pasaba es que en el Spec coloque la url del source mal, entonces la acomode y ya.

Volvi a tipear el comando para crear el SRPM pero me daba ahora otro error este fue el error http://www.heypasteit.com/clip/11S5 
Consider adjusting the PKG_CONFIG_PATH environment variable if you
installed software in a non-standard prefix.

Alternatively, you may set the environment variables GTK_CFLAGS
and GTK_LIBS to avoid the need to call pkg-config.
See the pkg-config man page for more details.


Errores de construcción RPM:
Estado de salida erróneo de /var/tmp/rpm-tmp.8jRSFw (%build)

Comenzando en que la salida dice que No package 'gtk+-2.0' found, resulta que si esta disponible pero es un buildrequire por lo tanto es un paquete devel, entonces deberia ir gtk2-devel.

He arreglado el Spec ya que tenia varios errores y ha quedado asi
Al acomodar el spec y tratar de crear el binario ya no me daban los errores anteriores, me daba error de dependencias algo como esto

error: Fallo al construir las dependencias:
...
Entones procedo a crear el srpm para usar una herramienta que se llama yum-builddep, esta herramienta nos instalara todas las dependencias y asi failcmente crear el binario, personalmente me fue de gran ayuda
Luego de crear el SRPM, bajamos las dependencias usando la herramienta yum-builddep

Nota: ver http://gomix.fedora-ve.org/projects/fedobetatest/wiki/Yum-builddep


Una vez instaladas las dependencias procedemos a crear el binario


Esta la salida del comando tipeado y vemos algunos errores, se trata de que hay unos archivo que no se incluyeron en el spec, asi que procedemos a incluirlos.


Para solucionar el error colocamos dentro del spec en files las siguientes direcciones



Una vez corregido el error se crea el SRPM y el RPMS con exito y se procede a construir, ya una vez creado el rpm lo ejecuto y me sale otro error 

Como ya hemos instalado hptalx pero sigue el problema de connection asi que hay que volver a editar el spec.

Para desinstalar hacemos los siguiente, preguntamos si esta instalado con rpm -q y luego desisntalamos con rpm -e.
Al parecer hacen falta permisos en el programa entonces agregue esta linea en el spec después de %files


Volví a empaquetar, pero me di cuenta que tampoco conectaba a pesar de que la calculadora la reconocía el sistema. Para listar lo que hay en los puertos usb debemos tipiar esto en la terminal



Probé ejecutando en la terminal hptalx, ya que aveces la terminal nos da información adicional o bueno así pienso yo. Al ejecutar hptalx en la terminal me daba este mensaje

[crearrpm@localhost ~]$ hptalx
I/O warning : failed to load external entity "/home/cecilia/.hptalx"


Entonces me fui a esa ruta y el directorio .hptalx no existía, procedi a crear el directorio  y entonces me decia que el directorio estaba vacio, algo esta pasando ademas cuando le daba en conectar me salia otro aviso como este:


(hptalx:2934): Gtk-WARNING **: GtkSpinButton: setting an adjustment with non-zero page size is deprecated


Esto es generalmente debido a la forma que se está creando con una versión obsoleta de Glade. El gtk_adjustment_configure función () se llama desde un elemento claro del aspecto de " 0 0 999 1 10 10 </ propiedad>", la solución es cambiar el último valor en cero, como " 0 0 999 1 10 0 </ propiedad> ".

 Descripción :Glade is a RAD tool to enable quick and easy development of user interfaces for the GTK+ toolkit and the GNOME desktop environment.

Bueno como un buen caminante segui buscando y en el repo Aur encontre un comentario sobre permisos de ttyUSB y procedi a buscar en esta direccion /dev/ttUSB  pero no encontre nada, hay varios tty pero ttyUSB no esta.
Nota:  para ver ttyUSB la calculadora debe estar conectada y prendida
Debemos configurar ttyUSB, asi que debemos seguir los siguientes pasos:
  1. Añadimos el modulo al kernel                                                            
                                                                                                             
  2. Después de conectar la calculadora, encontrar que se utiliza ttyUSB *                                                                                                                                         
  3. Después de conectar la calculadora, encontrar que se utiliza ttyUSB *: Para poder utilizar ttyUSB *, permisos adecuados deben establecerse, para este dispositivo es propiedad de root. Efectivamente, se puede crear una regla udev, pero la forma más simple es sólo para agregar el usuario al grupo uucp:                                                                                                                                                         Donde dice user lo cambiamos por el nombre de nuestro usuario, en mi caso ronald, pero hay un detalle uucp no existe.                                         
    Como no existe quiere decir que no esta instalado asi que debemos instalar 
                                                                                                                                                                                                                                                                                 Y ahora si podremos agregar nuestro usuario al grupo uucp
  4. Ahora debemos configurar la transferencia de la calculadora, para eso pinchamos la teclar APPS >> I/O funtions >> Transfer >> en type colocamos Kermit.
  5. Ahora vamos a ejecutar x moden para hacer comunicacion con la pc, la siguiente imagen explica cuales son las teclas que debemos pinchar. (naranja derecho y flecha derecha)                                                                         
     Nota: Hay otra forma de hacer conexion, pinchamos la teclar APPS >> I/O funtions >>Start Server   En la pantalla calculadora debe salir lo siguiente:                                                                             
  6. Ahora abrimos hptalx, nos vamos al menu file >> setup y configuramos la conexion que sea por puerto USB, si usas kde coloca en edicto por defecto kwrite, luego podemos hacer conexion con ctrl+b o en el menu donde dice connect.
Siguiendo los 6 pasos podras hacer una conexion con exito y disfrutar de Hptalx.

Optimizando el Spec y facilitando el trabajo: el programa ya funciona pero es necesario arreglar ciertos detalles para que no se tenga que hacer algunas cosas que yo hice para que el programa hiciera conexión con la calculadora y también para respetar y seguir los lineamientos que da la comunidad de fedora para empaquetar y de esta manera tendré la posibilidad de que el rpm lo suban a los repositorios de fedora.

Arreglamos las rutas de los archivos y le agregamos los respectivos macros a las rutas

Como las tengo:
Como deberían estar:
Aqui una tabla de macros http://www.zarb.org/~jasonc/macros.php

Para que el programa funcione hay que instalar uucp, agregar el usurio al grupo uucp, agregar el modulo al kernel, para que esto sea mas facil hice un script para asi no estar configurando tantas cosas.
                                                                                                                           

Este archivo guarda la relación de los grupos a los que pertenecen los usuarios del sistema, contiene una línea para cada usuario con tres o cuatro campos por usuario:
                                                                                                                     
    El campo 1 indica el usuario.
    El campo 2 ‘x’ indica la contraseña del grupo, que no existe, si hubiera se mostraría un ‘hash’ encriptado.     El campo 3 es el Group ID (GID) o identificación del grupo.     El campo 4 es opcional e indica la lista de grupos a los que pertenece el usuario

Actualmente al crear al usuario con useradd se crea también automáticamente su grupo principal de trabajo GID, con el mismo nombre del usuario. Es decir, si se añade el usuario ‘pedro’ también se crea el /etc/group el grupo ‘pedro’. Aun asi, existen comandos de administración de grupos que se explicarán más adelante.


el script se debe ejecutar despues de la instalacion del software, asi que usaremos un macro del spec que no es usada en ningun paquete de los repositorios de fedora que se llama %postinst, al usar este macro ya no se puedra subir el paquete al repo de fedora por cuestiones de normativa.

Por lo tanto dejare lo del script como una idea para quien lo quiera hacer.

Agregando algunas cosas como el acceso en el menu al crear el rpm me ha generado un error

/usr/bin/install: missing destination file operand after '/home/cecilia/rpmbuild/SOURCES/hptlax.png/home/crearrpm/rpmbuild/BUILDROOT/hptalx-1.3.1a-1.fc20.x86_64/usr/share/pixmaps/'

Try '/usr/bin/install --help' for more information.
error: Estado de salida erróneo de /var/tmp/rpm-tmp.pDmcT1 (%install)

Errores de construcción RPM:
    Estado de salida erróneo de /var/tmp/rpm-tmp.pDmcT1 (%install)

 
 El nombre del source estaba mal escrito lo tenia como hptlax.png y lo arregle y coloque como debia ir hptalx.png, también el archivo de la carpeta sources estaba mal escrito y he colocado el macro %{name} en todas las partes donde estaba el spec, el macro name es el nombre del programa.

Usando la herramienta mock para crear rmp con varias arquitecturas:

  Procedemos a instalar mock
                                                                                                                                       
Al finalizar de instalar, creo un usuario mock que pertenezca al grupo mock:
                                                                            
de todas formas edita /etc/group y verifica que el grupo mock contenga al final al usuario mock, algo así:
mock:x:110:mock, fíjate cómo al final está el usuario mock agregado al grupo. Nunca está de más.

Si no le tuvieras en el grupo mock, entonces al intentar compilar se quejará diciendo que mock solamente corre en usuarios que pertenezcan al grupo mock.

Bueno bueno, al final pruebo que pueda cambiarme al usuario mock, pues desde ahí haré todo.
                                                                         
al ejecutar whoami, debe salirte que el usuario es "mock"

ahora a partir de un src.rpm vamos a crear el rpm para aquitectura de 32 bit, sino tenemos el scr lo creamos con el siguiente comando y esto creara un scr.rpm en el directorio rmpbuild/SRPMS

He copiado el src.rpm en mi carpeta personal y he tipeado el siguiente comando. (mi carpeta personal se llama crearrpm)


Nota: SEGUIMOS EN EL PROCESO DE OPTIMIZACION, ASI QUE ESTA FACE TODAVIA SIGUE EN PROCESO


Este programa fue empaquetado con exito gracias a la ayuda de +David Vasquez ,+Guillermo Gómez+Eduardo Javier Echeverria Alvarado. Despues de tanto molestar con esto pude empaquetar hptalx y me di en la tarea de publicar toda la odisea que pase para empaquetarlo, recordando que es mi primer empaquetamiento, espero que sea de ayuda para quienes quieran empezar a empaquetar.

Bibliografía:
http://gomix.fedora-ve.org/projects/fedobetatest/wiki/Yum-builddep
Pregunta_para_fedorianos_en_español
PostinstallerF
http://bleedux.wordpress.com/2010/03/11/connect-hp-50g-to-a-linux-box-with-hptalx/
http://gomix.fedora-ve.org/projects/fedobetatest/wiki/RPM_creando_archivo_spec 
http://es.tldp.org/COMO-INSFLUG/COMOs/RPM-Como/RPM-Como-6.html 
http://www.ecualug.org/?q=2012/03/12/comos/1_c%C3%B3mo_compilar_un_srcrpm_para_varias_arquitecturasvarias_distros_de_linux
http://gomix.fedora-ve.org/projects/fedobetatest/wiki/Mock 
https://fedoraproject.org/wiki/How_to_create_an_RPM_package#.25files_section



Bibliografia para el Script:
http://personales.upv.es/jcanizar/bioinformatica/practica_texto.html

http://es.wikipedia.org/wiki/Id_%28Unix%29
http://es.wikipedia.org/wiki/Grep  
http://www.espaciolinux.com/foros/tema47363.html
http://www.pedroventura.com/linux/administracion-de-usuarios-en-linux-crear-borrar-modificar-usuarios-y-grupos/

Comparte esta entrada

votar

2 comentarios:

Uger Seijas dijo...

hola, ando creando mi primer .rpm pero me sale el siguiente error

Archivo no encontrado por glob: /home/makerpm/rpmbuild/BUILDROOT/htop-1.0.3-1.0-1.fc20.i386/usr/sbin/*
No se ha encontrado el directorio: /home/makerpm/rpmbuild/BUILDROOT/htop-1.0.3-1.0-1.fc20.i386/usr/share/htop-1.0.3


que podra ser?

Ronald Forero dijo...

facil, no haz creado los directorios necesarios para empaquetar, debes tipiar estos comandos rpmdev-setuptree para crear esos directorios que no tienes

Publicar un comentario

 
Powered by Blogger