7 votes

Comment éditer facilement un fichier de contrôle dans un paquet deb

Existe-t-il un moyen d'éditer facilement le fichier de contrôle dans le paquetage deb. Peu importe le système (Linux, Mac OS X etc.) Peut-être que quelqu'un connaît un bon script pour l'automatiser ?

10voto

vikram Points 41

A vérifier : http://ubuntuforums.org/showthread.php?t=636724 Juste au cas où ce fil de discussion serait supprimé, je posterai une copie du code ici aussi :

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"

Changer vi à l'éditeur de son choix. Sauvegardez-le en tant que Shell Shell (c.-à-d. debcontrol.sh ), le rendre exécutable ( chmod +x ), et utiliser le deb comme premier paramètre ( ./debcontrol.sh xxxxx.deb )

5voto

Tobu Points 2652

Le script de la rubrique Forums Ubuntu a besoin de quelques modifications pour fonctionner. Puisque ma modification de l'autre message n'a pas été approuvée, voici ma version mise à jour.

#!/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"

Enregistrez-le en tant que Shell Shell, rendez-le exécutable ( chmod +x videbcontrol ), et l'exécuter comme suit :

fakeroot videbcontrol package.deb

Il est important d'utiliser fakeroot sinon la propriété du fichier est réinitialisée au profit de l'utilisateur actuel.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X