lunes, 23 de diciembre de 2013

Crear un paquete .deb básico a partir de un script

Si tenemos un script y sabemos desde donde se debe ejecutar dicho script, hay una forma de crear un paquete .deb a partir de dicho script. Esto puede ser útil, para una vez que tenemos el paquete.deb creado lo podamos instalar sin necesidad de saber desde donde se tiene que ejecutar dicho script, lo cual nos puede ser útil para compartirlo con otros usuarios. Información extraída de http://ubuntulife.wordpress.com/2010/08/05/crear-un-paquete-deb-manualmente/

Para explicar este tema lo voy a hacer con un script (*) llamado “xsane2tess.sh” (xsane y ocr ) que quiero instalar en /usr/bin , mediante un fichero xsane2tess.deb. Una vez que tenga creado el paquete.deb ya no necesitaré recordar donde tengo que instalarlo, sino que lo podré hacer con un doble click sobre el paquete xsane2tess.deb y se instalará como cualquier otro paquete.deb , con gdebi.
----------------------------------------------
 (*) el texto del script es:

#!/bin/bash
# xsane2tess 1.0
# tesseract made simple # xsane2tess is a TesseractOCR wrapper to be able to use tesseract with xsane #
TEMP_DIR=~/tmp/      # folder for temporary files (TIFF & tesseract data)
ERRORLOG="xsane2tess.log"  # file where STDERR goes
if [[ -z "$1"  ]]
then
echo "Usage: $0 [OPTIONS]
xsane2tess converts files to TIF, scans them with TesseractOCR
and outputs the text in a file.
OPTIONS:
-i <file1>  define input file (any image-format supported)
-o <file2>  define output-file (*.txt)
-l <lang>  define language-data tesseract should use
Progress- & error-messages will be stored in this logfile:
$TEMP_DIR$ERRORLOG
xsane2tess depends on
- ImageMagick  http://www.imagemagick.org/
- TesseractOCR http://code.google.com/p/tesseract-ocr/
Some coding was stolen from 'ocube'
http://www.geocities.com/thierryguy/ocube.html
"
exit
fi
# get options...
while getopts ":i:o:l:" OPTION
do
case $OPTION in
i)  # input filename (with path)
FILE_PATH="$OPTARG"
;;
o )  # output filename
FILE_OUT="$OPTARG"
;;
l )  # Language-selection
TES_LANG="$OPTARG"
;;
esac
done
# redirect STDOUT to FILE_OUT
exec 1>>$FILE_OUT
# redirect STDERR to ERRORLOG
exec 2>>$TEMP_DIR$ERRORLOG
# strip path from FILE_PATH, use filename only
IN_FILE=${FILE_PATH##*/}
TIF_FILE="$TEMP_DIR""${IN_FILE%.*}".tif
TXT_FILE="$TEMP_DIR""${IN_FILE%.*}"
# converting image into TIFF (ImageMagick)
convert "$FILE_PATH" -compress none  "$TIF_FILE" 1>&2
# start OCR (tesseract expands output with *.txt)
tesseract "$TIF_FILE" "$TXT_FILE" -l "$TES_LANG" 1>&2
# STDOUT scanned text => FILE_OUT
cat "$TXT_FILE".txt
# delete graphic file after use
rm "$TIF_FILE"
# delete tesseract output
rm "$TXT_FILE".txt



Y se usa como se indica en el tema: Escanear con xsane y reconocimiento óptico de caracteres (ocr).
Con el texto se crea un script como se indica en: Como crear un script básico
-------------------------------------------
Para crear un paquete xsane2tess.deb a partir del script xsane2tess.sh , los pasos a ejecutar serian:

1. Creamos un directorio nuevo en el directorio donde tengamos el script xsante2tess.Podemos usar cualquier nombre, pero luego mantener esa referencia. En el ejemplo yo uso “deb”
mkdir deb

2. Sobre ese directorio recién creado, tenemos que recrear la estructura destino que queremos utilizar. Como quiero copiar mi script  en /usr/bin, entonces creo el directorio /deb/usr/bin:
mkdir -p ./deb/usr/bin

3. Ahora copiamos el script a ese directorio. Si quisiera copiar a otro directorio tendríamos que reconstruir a partir de “deb” esos directorios nuevos.
cp ./xsane2tess.sh ./deb/usr/bin

4. Ahora creamos un subdirectorio llamado DEBIAN, que contendrá el fichero de paquete de control. Este es un fichero con un determinado formato y que proporciona información del contenido del paquete .deb.
mkdir ./deb/DEBIAN

5. Creamos un fichero de control con el siguiente comando:
touch ./deb/DEBIAN/control

6. Abrimos el fichero de control y copiamos el siguiente texto. Modificando las partes que sean necesarias.
Package: nombredelpaquete (cuidado, no se permiten espacios o caracteres _ )
Priority: optional
Section: misc
Maintainer: nombredelcreadorysuemail
Architecture: all
Version: 1.0
Depends: package1, package2, ......... (si tiene alguna dependencia por aquí el nombre)
Description: aquí_una_descripción_corta_del_paquete
 Y aquí una descripción larga (Ojo, no elimines el espacio inicial al comienzo de esta linea)
(y por ultimo elimina esta linea y deja una linea vacia)

Aquí dejo un ejemplo del fichero de control:

Package: xsane2tess
Priority: optional
Section: misc
Maintainer: usuario <usuario@mint>  ( aquí pon tu nombre y email )
Architecture: all
Version: 1.0
Depends:
Description: xsane-integration-tesseract
 script for using tesseract with xsane
 Just configure ocr-programm in xsane using


7. Cambiamos el propietario de ese directorio:
sudo chown -R root.root ./deb

8. Y por último creamos el paquete en formato .deb:
sudo dpkg -b ./deb /ruta/donde/quieres/dejar/el/nombre_paquete.deb

Por ejemplo: sudo dpkg -b ./deb /home/usuario/SCRIPTS.deb generaría el paquete xsane2tess.deb con el script xsane2tess.sh listo para instalar con un doble click a través de gdebi.


No hay comentarios:

Publicar un comentario en la entrada

A la vez que haces un comentario, por favor da una puntuación al tema: malo, normal, bueno o muy bueno.
Gracias.