Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

[Shell-Script]Criar pacotes .deb

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    [Shell-Script]Criar pacotes .deb

    Criar pacotes .deb



    Abra um terminal, navegue até o diretório onde está o diretório do seu script e digite:

    $ debfacil diretorio_do_seu_script
    Prontinho, se você tiver colocado seu script dentro do diretório informado, ele automaticamente irá criar a estrutura de um pacote .deb e vai lhe fazer algumas perguntas para defini-lo.

    Funcionalidades:
    - Cria um pacote .deb;
    - Possibilita criar um atalho no menu do Gnome;

    #!/bin/bash
    # Aplicativo: debfacil
    # Criado em: 15/06/2011
    # Descrição: Automatiza a construção do pacote .deb
    # Autor: Raimundo Portela <rai3mb@gmail.com>
    # -----------------------------------------------------------------------------
    # Descrição detalhada do funcionamento:
    # Para usar o programa basta chamálo na linha de comando seguido do nome do
    # do diretório a ser um pacote .deb
    # sintaxe de uso: debfacil diretorio_do_script_candidato_a_pacote
    # -----------------------------------------------------------------------------
    # Histórico de Mudanças: -> Disponível no arquivo CHANGELOG
    #
    # Licença (copyrght): GPL.
    #

    # verifica se foi informado o parametro
    [ -z "$1" ] && echo 'Você deve informar o diretório do pacote' && exit

    # verifica se o parametro informado é um diretório
    ! [ $? -eq 1 ] && echo "$1:não é um diretório" && exit

    PACOTE="$1"

    func_banner(){
    clear
    echo "================================================= ======"
    echo "Bem vim do ao gerador de pacotes .deb debfacil v.1.0"
    echo "-------------------------------------------------------"
    echo
    }
    func_banner

    # Cria a estrutura de diretório do pacote
    mv "$PACOTE" "$PACOTE"_temp 2> /dev/null
    mkdir -p "$PACOTE/opt/$PACOTE" 2> /dev/null
    if [ "$?" -eq 1 ]; then
    echo "Não foi possível definir a estrutura $PACOTE"/opt/"$PACOTE"
    exit
    fi

    mv "$PACOTE"_temp "$PACOTE/opt" 2> /dev/null
    mv "$PACOTE/opt/$PACOTE"_temp/* "$PACOTE/opt/$PACOTE" 2> /dev/null
    rm -rf "$PACOTE/opt/$PACOTE"_temp

    #usado para não perder a referência do diretório inicial
    FONTE=$(pwd)

    cd "$FONTE/$PACOTE/opt/$PACOTE"

    # pega o PACOTE da versão direto do arquivo CHANGELOG
    # ou seja, obriga o programador a registrar as versões no CHANGELOG
    # caso não exista o arquivo, criamos um.
    ! [ -f CHANGELOG ] && touch CHANGELOG

    func_Especifica_Versao() {
    clear
    func_banner
    echo "----CONFIGURANDO O ARQUIVO CHANGELOG----"
    echo
    echo "Defina qual a versão do seu programa [$PACOTE], usando números: (0.1)"
    read VERSAO
    [ -z "$VERSAO" ] && VERSAO="0.1"
    echo "Quem Desenvolveu esta versão: ($(whoami))"
    read NOME
    [ -z "$NOME" ] && NOME=$(whoami)
    echo "Desenvolvido em que data: ($(date +%d%m%Y))"
    read DATA
    [ -z "$DATA" ] && DATA=$(date +%d%m%Y)
    echo "Uma rápida descrição sobre essa versão deste pacote"
    read DESCRICAO

    echo "# Versão-$VERSAO" > CHANGELOG
    echo "Desenvolvido por:$NOME" >> CHANGELOG
    echo "Desenvolvido em:$DATA" >> CHANGELOG
    echo "Descrição:$DESCRICAO" >> CHANGELOG
    }

    ! egrep '^# Versão-' CHANGELOG > /dev/null && func_Especifica_Versao

    echo "Identificado o arquivo [CHANGELOG]"
    VERSAO=$(egrep '^# Versão-*' CHANGELOG | tail -1 | cut -d'-' -f 2)
    echo "Identificado a versão de [$PACOTE], como: [$VERSAO]"
    sleep 2

    func_Especifica_Control() {
    cd "$FONTE/$PACOTE"
    # criando o arquivo control
    rm DEBIAN/control 2> /dev/null
    touch DEBIAN/control

    #tamanho do diretório em Kb
    DELIMIT=$(echo "$PACOTE" | cut --bytes=1-1)
    cd opt
    TAMANHO=$(du "$PACOTE" | tail -1 | cut -d"$DELIMIT" -f 1)
    cd ..

    # coleta parametros para o arquivo control
    echo "Package:$PACOTE" > DEBIAN/control
    echo "Version:$VERSAO" >> DEBIAN/control
    echo "Architecture:all" >> DEBIAN/control
    echo "Installed-Size:$TAMANHO" >> DEBIAN/control
    NOME=$(egrep '^Desenvolvido por' opt/"$PACOTE"/CHANGELOG | tail -1 | cut -d':' -f 2)
    echo "Maintainer: $NOME" >> DEBIAN/control
    echo "Section:gnome" >> DEBIAN/control
    echo "Priorityptional" >> DEBIAN/control
    echo "Description: . $DESCRICAO" >> DEBIAN/control
    }
    #volta para a raiz do pacote
    cd "$FONTE/$PACOTE"

    mkdir DEBIAN 2> /dev/null
    ! egrep '^Package:.*' DEBIAN/control 2> /dev/null && func_Especifica_Control

    func_START()
    {
    func_banner

    #volta para a pasta raiz do pacote
    cd "$FONTE/$PACOTE/opt/$PACOTE"
    echo "Quais desses arquivos inicia a execução do seu programa(pacote):"
    echo
    ls -1
    echo
    echo "Escreva o nome completo dele:"
    read START

    #verifica se o arquivo existe
    ! [ -f "$START" ] && \
    echo "Arquivo [$START] não existe no diretório do PACOTE [$PACOTE]" \
    && sleep 2 && func_START

    # se o arquivo não for executável, torna-o
    ! [ -x "$START" ] && chmod +x "$START"
    }
    func_START

    # criar menu
    echo
    echo "Deseja criar atalho no menu do Gnome para o pacote [$PACOTE] (S/n):"
    read RESP
    [ -z "$RESP" ] || [ "$RESP" = "S" ] && RESP="s"

    func_Cria_Menu() {

    func_banner

    if [ "$RESP" = "s" ]; then
    mkdir -p "$FONTE/$PACOTE/usr/share/menu" 2> /dev/null
    cd "$FONTE/$PACOTE/usr/share/menu"

    echo "----CONTRUINDO O ATALHO DE MENU (GNOME)----"
    echo
    echo "Escolha a categoria da sua Aplicação:"
    echo
    echo "1 - AudioVideo : Áudio/Vídeo"
    echo "2 - Development : Desenvolvimento"
    echo "3 - Education : Educacional"
    echo "4 - Game : Jogo"
    echo "5 - Graphics : Gráficos";
    echo "6 - Network : Rede/Internet";
    echo "7 - Office : Escritório";
    echo "8 - System : Ferramenta de Sisema";
    echo "9 - Utility : Utilitários (padrão)";
    echo "10 - Settings : Configurações do Sistema [Sistema -> Preferências]"

    echo
    echo "Escolha o número (9):"
    read MENU
    [ -z "$MENU" ] && MENU="9"

    case "$MENU" in
    1) SUBMENU="AudioVideo" ;;
    2) SUBMENU="Development" ;;
    3) SUBMENU="Education" ;;
    4) SUBMENU="Game" ;;
    5) SUBMENU="Graphics" ;;
    6) SUBMENU="Network" ;;
    7) SUBMENU="Office" ;;
    10) SUBMENU="Settings" ;;
    8) SUBMENU="System" ;;
    9) SUBMENU="Utility" ;;
    *) echo "Opção [$MENU] inválida!" && sleep 2
    func_Cria_Menu
    ;;
    esac

    echo "package=$PACOTE:\\" > "$PACOTE"
    echo "needs='X11'\\" >> "$PACOTE"
    echo "section='Applications/$SUBMENU/'\\" >> "$PACOTE"
    echo "title='$PACOTE'\\" >> "$PACOTE"
    echo "command='/opt/$PACOTE/$START'\\" >> "$PACOTE"
    echo "icon=''" >> "$PACOTE"

    mkdir -p "$FONTE/$PACOTE/usr/share/applications" 2> /dev/null
    cd "$FONTE/$PACOTE/usr/share/applications"

    echo "[Desktop Entry]" > "$PACOTE.desktop"
    echo "Name=$PACOTE" >> "$PACOTE.desktop"

    echo "Escreva um comentário para aparecer sobre a entrada no menu"
    read COMENTARIO
    [ -z "$COMENTARIO" ] && COMENTARIO="$PACOTE"

    echo "Comment=$COMENTARIO" >> "$PACOTE.desktop"
    echo "Exec=/opt/$PACOTE/$START" >> "$PACOTE.desktop"
    echo "Icon=$PACOTE" >> "$PACOTE.desktop"
    echo "Terminal=true" >> "$PACOTE.desktop"
    echo "Type=Application" >> "$PACOTE.desktop"
    echo "StartupNotify=true" >> "$PACOTE.desktop"
    echo "Categories=GNOME;GTK;$SUBMENU;" >> "$PACOTE.desktop"
    echo "X-GNOME-Gettext-Domain=$PACOTE" >> "$PACOTE.desktop"
    echo "Name[en_US]=$PACOTE" >> "$PACOTE.desktop"
    echo "Name[pt_BR]=$PACOTE" >> "$PACOTE.desktop"

    #ajustando o ícone
    cd "$FONTE/$PACOTE"
    cp -r "/opt/debfacil/usr" .
    cd "$FONTE/$PACOTE/usr/share/pixmaps"
    mv debfacil.svg "$PACOTE.svg"

    fi
    }
    func_Cria_Menu

    mkdir -p "$FONTE/$PACOTE/usr/bin" 2> /dev/null
    cd "$FONTE/$PACOTE/usr/bin"
    echo "#!/bin/bash" > "$PACOTE"
    echo "/opt/$PACOTE/$START" >> "$PACOTE"
    chmod +x "$PACOTE"

    cd "$FONTE"

    # cria o pacote deb

    func_banner

    NOVONOME=$(sudo dpkg -b "$PACOTE" .)
    NOVONOME=$(echo $NOVONOME | cut -d'/' -f 2 | cut -d"'" -f 1)

    echo "O pacote $NOVONOME foi criado com sucesso"
    echo
    echo "Já deseja fazer a instalação dele? (s/N):"
    read RESP
    [ -z "$RESP" ] || [ "$RESP" = "N" ] && RESP="n"
    if ! [ "$RESP" = "n" ]; then
    if [ "$USER" = "root" ]; then
    dpkg -i "$NOVONOME"
    else
    sudo dpkg -i "$NOVONOME"
    fi
    else
    echo
    echo "Se quiser instalar, use o comando:"
    echo "dpkg -i $NOVONOME"
    fi
    echo
    #.EOF
    Créditos: Raimundo Alves Portela
    Last edited by Lord Beni-Aretz; 19-07-2011, 11:30.
    Não Acha Estranha Essa Frase:
    Eu Sou Hacker e Uso Windows XP!

    Use Débian, Aprenda Slackware e Brinque Muito Com Back|Track


    Fã ->Nickguitar.dll


    Quer ajudar nossso fórum e não sabe como?
    Então click na imagem e ajude-nos com os links off
X
Working...
X