você está aqui: Home  → Arquivo de Mensagens Programação Shell Linux: Inscrições Abertas

Editar o control de um pacote Debian

Colaboração: Leandro Augusto Fogolin Pereira

Data de Publicação: 09 de Dezembro de 2005

Em um pacote Debian, as informações de dependência, descrições, versões, dentre outras coisas, ficam no arquivo "control", dentro do arquivo .deb -- que nada mais é do que um arquivo "ar" que contém dois arquivos, o "control.tar.gz" e o "data.tar.gz", que é o pacote em si.

Se precisar editar o control de um pacote Debian, pode usar o seguinte shell script. Testei em apenas um pacote (o amule, já que na época que o escrevi, estava com uns bugs de empacotamento no Ubuntu), para corrigir um problema de dependência.

Seu uso é apenas recomendado em casos de "emergência"; por exemplo, quando você possuir a certeza de que uma certa dependência está com o nome errado mas está instalada, e seu conteúdo for o correto. O uso indiscriminado de um pacote instalado com um script alterado pode causar problemas de consistência no sistema de gerenciamento de pacotes...

#!/bin/bash

CURDIR=$( pwd )
TMPDIR=$( mktemp -d )
TMPLST=$( mktemp )

DEB="$CURDIR/$1"

cd $TMPDIR

ar -x "$DEB" control.tar.gz
tar -zxvf control.tar.gz | grep -v "./$" > $TMPLST
rm -f control.tar.gz
cp control control.bak

editor control

( diff control control.bak > /dev/null ) || (
       echo "Found difference -- updating control.tar.gz in $DEB."
              tar czf control.tar.gz $( cat $TMPLST )
             ar -r "$DEB" control.tar.gz
            echo "Done. =)"
    )

    rm -rf $TMPDIR $TMPLIST
    cd $CURDIR

É só salvar por exemplo, em um arquivo chamado editcontrol.sh e chamá-lo com o nome do pacote como primeiro parâmetro.



Veja a relação completa dos artigos de Leandro Augusto Fogolin Pereira