Transformar un script casero en una aplicación con dpkg (*.deb) (Pagina 1) / Scripts y programación / Foro Wifi-libre.com

El libre pensamiento para un internet libre

No estas registrado.     

Anuncio

Wifi-highpower.es es distribuidor oficial de Alfa Network

#1 15-07-2015 17:36:39

kcdtv
Administrator

Registrado: 14-11-2014
Mensajes: 2,069

Transformar un script casero en una aplicación con dpkg (*.deb)

Como crear sencillamente un paquete "*.deb" para nuestros scripts caseros

deb6.png

  Al transformar un script casero en un paquete .deb; haremos que sea mucho mas parecido a un "programa". cool
Se instalará en el sistema con su entrada en el menú de aplicaciones y con su pequeño icono para lanzar-lo con le ratón etc...
  Hay otra gran ventaja a pasar por los paquetes *.deb: podemos automatizar la resolución de las dependencias. 
Me explico : Cuando un script empaquetado .deb necesita una librería o un paquete que no esta presente en el sistema huésped, el paquete ausente se instala automáticamente.
Esto dicho no vamos a ocuparnos de este aspecto en este tema ya que vamos a usar un script sencillo que no requiere dependencias.
No he hecho los deberes y no he leído nada al respecto a parte de este tema de 2008 : How to make a basic .deb
Muy fácil y suficiente con un poco de imaginación (y sobre todo mirando como están hechos un par de paquetes .deb wink )... nos vamos a apañar.
Si no habéis leído este tema - Crear una entrada en el menú Kali para integrar un script (y más) - podríais echarle un ojo : 90% de lo que se necesita para nuestro paquiete *.deb esta ya explicado ahí.   

  En ejemplo vamos a hacer ahorita mismo un paquete *.deb para el script bash tdn.sh y miraremos como esta hecho el paquete .deb de linSSID para copiarlo.

  Descomprimo el paquete *.deb de linSSID con dtrx y este es el resultado :

deb1.jpg

Clonando la estructura de fichero

  Hacemos nuestro paquete deb sobre la marcha apoyándonos en lo que tenemos bajo los ojos... 

  1. tenemos que crear una primera carpeta con el nombre del paquete (lo mismo que la primera carpeta del paquete linSSID). El nombre debería estar compuesto así : <proyecto>_<versión_mayor>.<versión_minor>-<revisión>.  Asi que creo un directorio llamado tdn_1.0-0

  2. La carpeta contiene otra carpeta: usr (flecha roja en la imagen)  Corresponde a la carpeta "usr" que tenemos en nuestra sistema. La ponemos porque lo que vamos a instalar se pondrá en la carpeta usr ("clonamos" la arborescencia de ficheros que necesitaremos). Así que creo una carpeta llamada "usr" en la carpeta tdn1.0-0 que acabo de crear

  3. Luego tenemos a dos carpetas (flechas verdes): share y bin. "bin" solo contiene el código de linssid. Nosotros no tenemos "binarios" pero un script bash, Así que no vamos a hacer una carpeta bin ya que no vamos a instalar nada en bin. Esta vez solo haremos una carpeta share

  4. La carpeta share del paquete de linSSID contiene 4 carpetas : - applications : esta carpeta es fundamental porque contiene el fichero *.desktop. Lo redactaremos enseguida para nuestro ejemplo (leer el tema Crear una entrada en el menú Kali para integrar un script (y más) para mas detales). Creamos entonces en nuestra carpeta "share" una carpeta llamada "applications"
                                                                                                 - doc : Como lo habéis imaginado esta carpeta sirve para integrar documentación, lo que no vamos a hacer,   
                                                                                                   así que pasamos de crear esta carpeta
                                                                                                 - linssid : Haremos una carpeta tdn en su lugar que usaremos para poner el script tdn.sh y la licencia
                                                                                                 - pixmaps : Es un directorio que tenemos en nuestra sistema y que sirve para alojar imagines para iconos.
                                                                                                 Hacemos entonces un directorio pixmaps para poner el icono de tdn.sh

En resumen : tdn_1.0-0 > usr > share > Applications,tdn y pixmapsdeb2.jpg

pasamos a la fase dos del proyecto : rellenar las carpetas creadas.

Añadir el script, el icono y el fichero *.desktop

Ponemos el script tdn.sh en la carpeta tdn. (1)
Ponemos el icono en la carpeta pixmaps (2)
Ponemos el fichero tipo desktop en la carpeta "applications" (*)

* El script esta hecho -  el icono podemos poner cualquier imagen -  queda redactar el fichero desktop.
No voy a desarrollar mucho, ya hemos hablado de ello en Crear una entrada en el menú Kali para integrar un script (y más)
Simplemente abrimos un editor de texto y guardamos algo así que llamamos tdn.desktop:

[Desktop Entry]
Version=1.0
Name=tdn
GenericName=tdn
Comment=Default WPS PIN Generator for TRENDnet TEW-818RU v1 (ac1900) and v2 (ac3200) 
Comment[es]=Generador de PIN WPS por defecto de los TRENDnet TEW-818RU v1 (ac1900) y v2 (ac3200)
Comment[fr]=Générateur de PIN WPS par défaut des TRENDnet TEW-818RU v1 (ac1900) et v2 (ac3200)
Type=Application
Exec=bash -c "bash tdn.sh -h;${SHELL:-bash}"
Icon=/usr/share/pixmaps/tdn_icone.png
Path=/usr/share/tdn/
Terminal=true
StartupNotify=false
Categories=Network;

Y estamos listos para empaquetar : deb3.jpg

empaquetar en *.deb con dpkg

  Tenemos que crear un directorio llamado "DEBIAN" en nuestra carpeta ráiz "tdn_1.0-0"
Y redactamos un fichero de control básico que llamamos "control" en el directorio "DEBIAN" recién creado.

Package: tdn
Version: 1.0-1
Section: base
Priority: optional
Architecture: all
Maintainer: kcdtv <[email protected]>
Description: Generate the default WPS PIN for TRENDnet TEW-818RU v1 (ac1900) and v2 (ac3200) 

Son "metadatas" que no tienen realmente muchísima importancia si hacemos esto para un uso personal.
Ahora creamos nuestro paquete *.deb con la herramienta dpkg.
Antes pasamos los permisos de ficheros a root para que se pueda instalar en otros sistemas que el nuestro :
Abrimos una terminal en el directorio que contiene nuestra carpeta tdn_1.0-0

sudo chown -R root:root tdn_1.0-0

Y creamos finalmente nuestro paquete *.deb así :

dpkg-deb --build tdn_1.0-0

¡Misión cumplida! cool

verificando el trabajo hecho

Para ver si ha bien funcionado lanzamos la instalación del paquete *.deb :

dpkg -i tdn_1-0.0

deb4.jpg

No tenemos mensajes de errores y esto es una buena señal.,.
....Otra buena señal : nuestro icono aparece ahora en el menú "Internet"  smile : deb5.jpg
Hacemos clic en el icono y no hay fallos. smile...

Esto es solo una forma minimista de hacer un paquete *.deb para algo casero y simple.
Unos pasos sencillos que dan otro toque a nuestras producciones personales.
Nuestro script casero que se lanzaba desde consola es ahora una verdadera aplicación al lado de firefox y wireshark big_smile

Desconectado

Anuncio

Wifi-libre.com: El libre pensamiento para un internet libre / Regístrese ahora

Pie de página

Información del usuario

Ultimo usuario registrado: evam
Usuarios registrados conectados: 0
Invitados conectados: 5

Estadisticas de los foros

Número total de usuarios registrados: 357
Número total de temas: 621
Número total de mensajes: 4,272

Máx. usuarios conectados: 45 el 12-04-2016 12:02:20