Abhängigkeiten eines .deb Archives ändern

Kann hin und wieder hilfreich und sinnvoll sein. So habe ich etwa das Plex Home Theater auf Sid installiert, das „libass4“ verlangt und „libass5“ nicht akzeptiert.
Die Commands zum aus- und einpacken einer solchen Datei habe ich nicht im Kopf, dafür brauche ich es einfach zu selten. Google hilft mir, wenn es wieder soweit ist, zuverlässig.

Dieses mal führte die Suche mich zu einem kleinen Script:
„vi“ ersetze ich jedoch durch „nano“.

Die neue Datei lege ich als „debchanger“ in „/usr/local/bin“ ab:

sudo nano /usr/local/bin/debchanger

Der Inhalt des Scripts:

#!/bin/bash

if [[ -z "$1" ]]; then
  echo "Syntax: $0 debfile"
  exit 1
fi

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"`
nano "$CONTROL"

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

rm -r "$TMPDIR"

Abschließend als ausführbar markieren:

sudo chmod +x /usr/local/bin/debchanger

Die Benutzung ist einfach: „debchanger package.deb“ verändert das Paket on-the-fly. Das neue Paket wird als „package-modified.deb“ im aktuellen Arbeitsverzeichnis abgelegt.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.