InicioLinuxCrear paquetes Debian con este script

Crear paquetes Debian con este script

LinuxFecha desconocida
Crear paquetes Debian con este script
script
debian
paquete
Linux
















Crear paquetes Debian con este script
[color=#000000]

#!/bin/bash 
#============================================================================== 
#           FILE: createdeb.sh
#
#          USAGE: createdeb.sh -d <dir> |-v|-h|-t|-e|-p|-E 
#
#    DESCRIPTION: Un script para crear paquetes Debian
#
#           DATE: 2014-02-22
#   REQUERIMENTS: bash
#           BUGS: Muestra mensajes de error al cargar el archivo de
#                 configuración (no hay que darle mayor importancia)
#          NOTES: ---
#         AUTHOR: Abel Sendon  -  <[email protected]
#        COMPANY: ---
#        VERSION: 1.140223
#        CREATED: 2014.02.20 - 10:16:40
#       REVISION: 2014.02.23 - 07:42:56
#        LICENSE: GPL
#============================================================================== 

VERSION="1.140223"
CONFIG=$HOME/.config/createdeb
source $CONFIG
ROOTD=$HOME/$NAME 
PREINST=$ROOTD/DEBIAN/preinst
POSTINST=$ROOTD/DEBIAN/postinst
POSTRM=$ROOTD/DEBIAN/postrm
CONTROL_FILE=$ROOTD/DEBIAN/control
DESKTOP_SHORTCUT=$ROOTD/usr/share/applications/$EXE.desktop
 
#===  FUNCTION  =============================================================== 
#         NAME: uso
#  DESCRIPTION: Ayuda en consola.
#============================================================================== 
function uso()
{
    echo " Uso: $(basename $0) <switch>" 
    echo " Donde switch puede ser:"
    echo "     -d <directorio a importar>"
    echo "     -p    Prepara la base del paquete (directorios, archivos, etc)"
    echo "           para luego ser modificada."
    echo "     -E    Edita el archivo de control y reconstruye el paquete"
    echo "           (ideal si se ha usado la opción -p)." 
    echo "     -S    Edita los scripts preinst, postinst y postrm para luego"
    echo "           reconstruir el paquete (se editan de a uno)."
    echo "     -e    Edita el archivo de configuración y sale." 
    echo "     -r    Reestablece el archivo de configuración y sale." 
    echo "     -h    Muestra esta ayuda." 
    echo "     -v    Muestra la versión y sale." 
    echo 
    echo " El directorio a importar debe tener un arbol de archivos/directorios"
    echo " válido para que el paquete sea instalado correctamente."
    echo " El archivo de control es utilizado por dpkg para construir el"
    echo " paquete."
    echo " Para más detalles ver:  man dpkg-deb y deb-control."
    echo " Las opciones -E -e y -S simplifican la tarea de buscar los archivos"
    echo " a editar."
    echo " Además, si se encuentra en el direcotrio HOME alguna imagen llamada"
    echo " logo, img, icon (o con el nombre del programa a empaquetar) con la"
    echo " extensión png, ésta será utilizada para crear los íconos."
}


#===  FUNCTION  =============================================================== 
#         NAME: version
#  DESCRIPTION: ---
#============================================================================== 
function version()
{
    echo " createdeb.sh $VERSION"
    echo " 2014(C) Abel Sendon <[email protected]>"
    echo " Este script es software libre, createdeb.sh"
    echo " viene sin NINGUN TIPO DE GARANTÍA, ver"
    echo " la licencia GPL para mas detalles."
}

#===  FUNCTION  =============================================================== 
#         NAME: imgresizer
#  DESCRIPTION: Redimensiona la imagen recibida desde la funcion makeicons para
#               luego ser colocada en los directorios correspondientes.
#============================================================================== 
function imgresizer()
{
    DEST="$ROOTD/usr/share"
    convert $HOME/$1 -geometry 256x256 $DEST/icons/gnome/256x256/apps/$NAME.png
    convert $HOME/$1 -geometry 128x128 $DEST/icons/gnome/128x128/apps/$NAME.png
    convert $HOME/$1 -geometry 64x64 $DEST/icons/gnome/64x64/apps/$NAME.png
    convert $HOME/$1 -geometry 48x48 $DEST/icons/gnome/48x48/apps/$NAME.png
    convert $HOME/$1 -geometry 32x32 $DEST/icons/gnome/32x32/apps/$NAME.png
    convert $HOME/$1 -geometry 256x256 $DEST/icons/oxygen/256x256/apps/$NAME.png
    convert $HOME/$1 -geometry 128x128 $DEST/icons/oxygen/128x128/apps/$NAME.png
    convert $HOME/$1 -geometry 64x64 $DEST/icons/oxygen/64x64/apps/$NAME.png
    convert $HOME/$1 -geometry 48x48 $DEST/icons/oxygen/48x48/apps/$NAME.png
    convert $HOME/$1 -geometry 32x32 $DEST/icons/oxygen/32x32/apps/$NAME.png
    convert $HOME/$1 -geometry 64x64 $DEST/pixmaps/$NAME.png
}

#===  FUNCTION  =============================================================== 
#         NAME: makeicons
#  DESCRIPTION: Crea los iconos para la aplicación, tiene que haber una imagen
#               en el directorio HOME del usuario, la imagen debe tener uno de
#               estos nombres para que el script la encuentre y procese:
#               logo.png, img.png, icon.png o NombreDelPrograma.png 
#============================================================================== 
function makeicons()
{
    if [ -x $(which convert) ]
    then 
        echo "Ejecutable convert encontrado, ahora a buscar una imagen..."
    else 
        echo "Convert no encontrado, saliendo :("
    fi
   
    # A buscar imagenes...  
    if [ -a $HOME/$NAME.png ]
    then
        echo "Imagen $HOME/$NAME.png encontrada, procesando..."
        imgresizer $NAME.png 
        echo "Listo."
    elif [ -a $HOME/logo.png ]
    then
        echo "Imagen $HOME/logo.png encontrada, procesando..."
        imgresizer "logo.png" 
        echo "Listo."
    elif [ -a $HOME/img.png ]
    then
        echo "Imagen $HOME/img.png encontrada, procesando..."
        imgresizer "img.png" 
        echo "Listo."
    elif [ -a $HOME/icon.png ]
    then
        echo "Imagen $HOME/icon.png encontrada, procesando..."
        imgresizer "icon.png"  
        echo "Listo."
    else
        echo "No se encontró una imagen a procesar"
    fi
}

#===  FUNCTION  =============================================================== 
#         NAME: maketree
#  DESCRIPTION: Crea un arbol de directorios listo para ser usado.
#============================================================================== 
function maketree()
{
    mkdir -vp $ROOTD/DEBIAN
    mkdir -vp $ROOTD/etc/$NAME
    mkdir -vp $ROOTD/usr/share/{doc/$NAME,applications,icons,pixmaps,$NAME}
    mkdir -vp $ROOTD/usr/share/icons/gnome/{256x256,128x128,64x64,48x48,32x32}/apps
    mkdir -vp $ROOTD/usr/share/icons/oxygen/{256x256,128x128,64x64,48x48,32x32}/apps
    mkdir -vp $ROOTD/usr/{bin,lib/$NAME}
}

#===  FUNCTION  =============================================================== 
#         NAME: makecontrolfile
#  DESCRIPTION: Crea el archivo de control utilizado por dpkg
#============================================================================== 
function makecontrolfile()
{
    mkdir -p $ROOTD/DEBIAN   # Si no existe se crea ahora
        
    if [[ -n $COMMENT_EN ]]
    then
        COMMENT="$COMMENT_EN"
    elif [[ -n $COMMENT_ES ]]
    then
        COMMENT="$COMMENT_ES"
    else
        COMMENT="Ninguna"
    fi
    
    echo "Package: $NAME" > $CONTROL_FILE
    echo "Section: $CATEGORY" >> $CONTROL_FILE 
    echo "Maintainer: $AUTHOR" >> $CONTROL_FILE
    echo "Architecture: all" >> $CONTROL_FILE
    echo "Version: $VER" >> $CONTROL_FILE
    echo "Depends: bash" >> $CONTROL_FILE
    echo "Provides: " >> $CONTROL_FILE
    echo "Conflicts: " >> $CONTROL_FILE
    echo "Description: $COMMENT" >> $CONTROL_FILE
    echo "  $DESCRIPTION" >> $CONTROL_FILE
}

#===  FUNCTION  =============================================================== 
#         NAME: makedesktopfile
#  DESCRIPTION: Crea el acceso directo para el programa.
#============================================================================== 
function makedesktopfile()
{   
    mkdir -vp $ROOTD/usr/share/applications

    echo "[Desktop Entry]" > $DESKTOP_SHORTCUT
    echo "Encoding=UTF-8" >> $DESKTOP_SHORTCUT
    echo "Name=$NAME" >> $DESKTOP_SHORTCUT
    echo "Name[es]=$NAME" >> $DESKTOP_SHORTCUT
    echo "GenericName=$GNAME_EN" >> $DESKTOP_SHORTCUT
    echo "GenericName[es]=$GNAME_ES" >> $DESKTOP_SHORTCUT
    echo "Comment=$COMMENT_EN" >> $DESKTOP_SHORTCUT
    echo "Comment[es]=$COMMENT_ES" >> $DESKTOP_SHORTCUT
    echo "Type=Application" >> $DESKTOP_SHORTCUT
    echo "Exec=$EXE" >> $DESKTOP_SHORTCUT
    echo "Icon=$NAME" >> $DESKTOP_SHORTCUT
    echo "Terminal=$TTERM" >> $DESKTOP_SHORTCUT
    echo "Categories=$CATEGORY" >> $DESKTOP_SHORTCUT
}

#===  FUNCTION  =============================================================== 
#         NAME: makescripts
#  DESCRIPTION: Crea los scripts preinst, postinst y postrm listos para 
#               ser editados.
#============================================================================== 
function makescripts()
{
    mkdir -p $ROOTD/DEBIAN   # Si no existe se crea ahora

    echo "#!/bin/sh" > $PREINST
    echo "# Script preinst autogenerado" >> $PREINST
    echo " " >> $PREINST
    echo "exit 0" >> $PREINST

    echo "#!/bin/sh" > $POSTINST
    echo "# Script postinst autogenerado" >> $POSTINST
    echo " " >> $POSTINST
    echo "update-menus" >> $POSTINST
    echo " " >> $POSTINST
    echo "exit 0" >> $POSTINST

    echo "#!/bin/sh" > $POSTRM
    echo "# Script postrm autogenerado" >> $POSTRM
    echo " " >> $POSTRM
    echo "if [[ $1 == "purge" ]]; then " >> $POSTRM
    echo "  # rm -rf dir" >> $POSTRM
    echo "  echo " >> $POSTRM
    echo "fi" >> $POSTRM
    echo " " >> $POSTRM
    echo "exit 0" >> $POSTRM

    chmod 0775 $PREINST
    chmod 0775 $POSTINST
    chmod 0775 $POSTRM
}

#===  FUNCTION  =============================================================== 
#         NAME: makeconfig
#  DESCRIPTION: Crea el archivo de configuración del script.
#============================================================================== 
function makeconfig()
{
    echo "# La variable EDITOR establece que programa se usará para" > $CONFIG
    echo "# editar los archivos y scripts, predeterminado: vim," >> $CONFIG
    echo "# otros pueden ser kate/kwrite (KDE), gedit (GNOME)," >> $CONFIG
    echo "# leafpad(LXDE, XFCE), nano o x/emacs." >> $CONFIG
    echo "EDITOR=vim" >> $CONFIG
    echo " " >> $CONFIG
    echo "# Las siguientes variables brindan información" >> $CONFIG
    echo "# relacionada con el software a empaquetar, si bien se" >> $CONFIG
    echo "# pueden editar los archivos de control (man deb-control" >> $CONFIG
    echo "# para más detalles) y de acceso directo (desktop-entry)" >> $CONFIG
    echo "# puede ser tedioso tener que editarlos cada vez que se" >> $CONFIG
    echo "# genere un nuevo paquete .deb  -ya que no siempre queda" >> $CONFIG
    echo "# en el primer intento- " >> $CONFIG
    echo "# Algunas están tanto en inglés como en español, pero" >> $CONFIG
    echo "# pueden añadirse otros idiomas editando los archivos" >> $CONFIG
    echo "# generados." >> $CONFIG
    echo " " >> $CONFIG
    echo "# Nombre del software a empaquetar(debería cambiarse), si" >> $CONFIG
    echo "# se encuentra una imagen PNG con este nombre en HOME" >> $CONFIG
    echo "# será procesada para crear íconos. También se crearán" >> $CONFIG
    echo "# los subdirectorios en /usr por ej. con este mismo nombre" >> $CONFIG
    echo "# como así también el directorio de trabajo entre otros" >> $CONFIG
    echo "# componentes, para asegurar un corecto funcionamiento" >> $CONFIG
    echo "# no debe haber espacios como separador de palabras." >> $CONFIG
    echo "NAME=NombreAplicacion" >> $CONFIG
    echo " " >> $CONFIG
    echo "# Establece la sección donde aparecerá la aplicación." >> $CONFIG
    echo "# Algunas secciones comunes son:" >> $CONFIG
    echo "# Development, Engineering, Electronics, Graphics, Game" >> $CONFIG
    echo "# System, TerminalEmulator, Utility, TextEditor, Office" >> $CONFIG
    echo "# ArcadeGame, AudioVideo, Network, Education y Science." >> $CONFIG
    echo "# Predeterminada: Utility " >> $CONFIG
    echo "CATEGORY="Utility"" >> $CONFIG
    echo " " >> $CONFIG
    echo "# Nombre y email del autor, el email debe ir entre < y >" >> $CONFIG
    echo "AUTHOR="autor  <[email protected]>"" >> $CONFIG
    echo " " >> $CONFIG
    echo "# Breve comentario de lo que hace el programa, dejar" >> $CONFIG
    echo "# vacío el idioma que no se utilizará." >> $CONFIG
    echo "COMMENT_EN=""" >> $CONFIG
    echo "COMMENT_ES="Breve comentario a editar" " >> $CONFIG
    echo " " >> $CONFIG
    echo "# Nombre genérico, aqui se especifica el tipo de" >> $CONFIG
    echo "# software, por ej. para Dia se ha colocado" >> $CONFIG
    echo "# "Diagram editor"." >> $CONFIG
    echo "GNAME_EN="Generic name"" >> $CONFIG
    echo "GNAME_ES="Nombre genérico"" >> $CONFIG
    echo " " >> $CONFIG
    echo "# Nombre del ejecutable" >> $CONFIG
    echo "EXE=""" >> $CONFIG
    echo " " >> $CONFIG
    echo "# Establece si se ejecuta o no en una terminal" >> $CONFIG
    echo "TTERM=false " >> $CONFIG
    echo " " >> $CONFIG
    echo "# Versión del programa" >> $CONFIG
    echo "VER="1.0"" >> $CONFIG
    echo " " >> $CONFIG
    echo "# Descripción del programa (en una sola linea)" >> $CONFIG
    echo "DESCRIPTION="Descripción detallada aquí"" >> $CONFIG
    echo " " >> $CONFIG
}

#===  FUNCTION  =============================================================== 
#         NAME: admconfig
#  DESCRIPTION: Permite editar el archivo de configuración del script (en caso
#               de no existir lo crea).
#============================================================================== 
function admconfig()
{
    if [ $1 == "L" ]
    then
        if [ -a $CONFIG ]
        then
            source $CONFIG
        else
            makeconfig
            echo "Configuración re/creada, vuelva a ejecutar el script."
            exit 3
        fi
    elif [ $1 == "E" ]
    then 
        $EDITOR $CONFIG
    elif [ $1 == "R" ]
    then 
        rm -f $CONFIG 
        makeconfig
        echo "Archivo de configuración reestablecido."
    else
        echo "FATAL: Esta funcion no recibe argumentos validos."
        exit 255
    fi
}


#============================================================================== 
#                         Parte final del proceso...
#============================================================================== 

admconfig L

case $1 in  
    -E) if [ -a $CONTROL_FILE ]
        then
            clear
            $EDITOR $CONTROL_FILE
            echo "Edición de archivo terminada."
        else
            echo " El archivo de control aún no existe"
            echo " pruebe con las opciones -d o p y vuelva a intentar."
            exit -1
        fi
    ;;
    -S) if [ -a $PREINST ]    # Es suficiente probar con uno de los scripts
        then
            clear
            $EDITOR $PREINST
            $EDITOR $POSTINST
            $EDITOR $POSTRM
            echo "Edición de scripts terminada."
        else
            echo " Los scripts aún no existen, pruebe con"
            echo " las opciones -d o p y vuelva a intentar."
            exit -1
        fi
    ;;
    -d) if [ -z $2 ]
        then
            echo "Se debe especificar un directorio para importar."
            exit 2
        else
            mkdir -vp $ROOTD/DEBIAN
            echo "Importando contenido y arbol de directorios..."
            sleep 1
            cp -av $2/* $ROOTD
        fi
        maketree
        makescripts
        makecontrolfile
        makedesktopfile
        makeicons
    ;;
    -h) uso
        exit 0
    ;;
    -v) version
        exit 0
    ;;
    -e) admconfig E
        exit 0
    ;;
    -r) admconfig R
        exit 0
    ;;
    -p) echo "Preparando..."
        sleep 1
        maketree
        makescripts
        makecontrolfile
        makedesktopfile
        makeicons
    ;;
    *) echo "Debe especificar una opción."
       echo "escriba $(basename $0) -h para obtener ayuda."
       exit 1 
esac

echo "Construyendo paquete deb..."
dpkg-deb -b $ROOTD $NAME"_$VER.deb" && 
echo "Info del paquete creado:" ; dpkg --info $NAME"_$VER.deb"

exit 0


-----------------------------------------------------------------------

Retroshoot: 
  http://sourceforge.net/projects/retroshoot/files/?source=directory
Post del juego(para el curioso): 
  http://www.taringa.net/posts/juegos/17412518/Hice-un-jueguito-de-Herni-y-te-lo-muestro.html

[/color]

script
debian

Linux
deb



debian
paquete
Linux
Datos archivados del Taringa! original
40puntos
0visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
1visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

a
Usuario
Puntos0
Posts203
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.