Como editar facilmente o arquivo de controle no pacote deb

6

Existe uma maneira de editar facilmente o arquivo de controle no pacote deb. Não importa em qual sistema (Linux, Mac OS X etc.) Talvez alguém conheça um bom script para automatizá-lo?

    
por cheers 07.05.2011 / 11:20

2 respostas

10

Confira: link Apenas no caso de esse segmento ser deletado, eu postarei uma cópia do código aqui também:

DEBFILE="$1"
TMPDIR='mktemp -d /tmp/deb.XXXXXXXXXX' || exit 1
OUTPUT='basename "$DEBFILE" .deb'.modfied.deb

if [[ -e "$OUTPUT" ]]; then
  echo "$OUTPUT exists."
  rm -r "$TMPDIR"
  exit 1
fi

dpkg-deb -x "$DEBFILE" "$TMPDIR"
dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN

if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then
  echo DEBIAN/control not found.

  rm -r "$TMPDIR"
  exit 1
fi

CONTROL="$TMPDIR"/DEBIAN/control

MOD='stat -c "%y" "$CONTROL"'
vi "$CONTROL"

if [[ "$MOD" == 'stat -c "%y" "$CONTROL"' ]]; then
  echo Not modfied.
else
  echo Building new deb...
  dpkg -b "$TMPDIR" "$OUTPUT"
fi

rm -r "$TMPDIR"

Altere vi para qualquer editor de escolha. Salve-o como um script de shell (ou seja, debcontrol.sh ), torne-o executável ( chmod +x ) e use o deb como primeiro parâmetro ( ./debcontrol.sh xxxxx.deb )

    
por 17.07.2011 / 19:09
2

O script dos fóruns do Ubuntu precisa de algumas alterações para ser executado. Como minha edição na outra postagem não foi aprovada, aqui está minha versão atualizada.

#!/bin/bash
DEBFILE="$1"
TMPDIR='mktemp -d /tmp/deb.XXXXXXXXXX' || exit 1
OUTPUT='basename "$DEBFILE" .deb'.modified.deb

if [[ -e "$OUTPUT" ]]; then
  echo "$OUTPUT exists."
  rm -r "$TMPDIR"
  exit 1
fi

dpkg-deb -x "$DEBFILE" "$TMPDIR"
dpkg-deb --control "$DEBFILE" "$TMPDIR"/DEBIAN

if [[ ! -e "$TMPDIR"/DEBIAN/control ]]; then
  echo DEBIAN/control not found.

  rm -r "$TMPDIR"
  exit 1
fi

CONTROL="$TMPDIR"/DEBIAN/control

MOD='stat -c "%y" "$CONTROL"'
sensible-editor "$CONTROL"

if [[ "$MOD" == 'stat -c "%y" "$CONTROL"' ]]; then
  echo Not modified.
else
  echo Building new deb...
  dpkg -b "$TMPDIR" "$OUTPUT"
fi

rm -r "$TMPDIR"

Salve como um script de shell, torne-o executável ( chmod +x videbcontrol ) e execute-o da seguinte forma:

fakeroot videbcontrol package.deb

É importante usar fakeroot , caso contrário, a propriedade do arquivo será redefinida para o usuário atual.

    
por 16.09.2015 / 12:41