Debian Control File mit sed manipulieren

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
fbartels
Beiträge: 326
Registriert: 20.08.2009 10:06:56
Kontaktdaten:

Debian Control File mit sed manipulieren

Beitrag von fbartels » 07.01.2010 07:13:58

Hallo,

ich bastel gerade an einem kleinen Repository (mit reprepro) um dort Pakete für Zarafa bereitzustellen. Jetzt ist es die Eigenheit von Zarafa, Pakete mit identischer Versionsnummer für z.B. Lenny und Etch bereitzustellen, die aber nicht identisch vom Inhalt sind (andere md5 etc und reprepro meckert).

Die das Problem mit der gleichen Versionsnummer löse ich nun, indem ich z.B. ~lenny an die Versionsnummer anhänge:

Code: Alles auswählen

sed -i '/Version:/ s/$/~'$dist'/' $BUILDDIR/DEBIAN/control
Das ist aber leider nur die halbe Miete, wie ich nach einem Test feststellen musste. Der String ~'dist' muss ebenfalls in der Depends:-Zeile an zwei Werte (falls Vorhanden) angefügt werden, anbei beispielhaft zwei Zeilen:

Code: Alles auswählen

Depends: libc6 (>= 2.7-1), libcurl3 (>= 7.16.2-1), libgcc1 (>= 1:4.1.1), libldap-2.4-2 (>= 2.4.7), libssl0.9.8 (>= 0.9.8f-5), libstdc++6 (>= 4.2.1), libuuid1 (>= 1.05), zarafa (= 6.30.7-18277), lsb-base

Code: Alles auswählen

Depends: libc6 (>= 2.7-1), libcomerr2 (>= 1.01), libgcc1 (>= 1:4.1.1), libical0 (>= 0.44), libkrb53 (>= 1.6.dfsg.2), libldap-2.4-2 (>= 2.4.7), libmysqlclient15off (>= 5.0.27-1), libncurses5 (>= 5.6+20071006-3), libpam0g (>= 0.99.7.1), libssl0.9.8 (>= 0.9.8f-5), libstdc++6 (>= 4.2.1), libuuid1 (>= 1.05), libvmime0 (>= 0.7.1), libxml2 (>= 2.6.27), zlib1g (>= 1:1.1.4), lsb-base, locales, libvmime0 (<< 0.8.0)
Wobei die Werte die ich dort Manipulieren möchte, die folgenden sind: (-> ist zu vertehen als "wird zu")
  • zarafa (= 6.30.7-18277) -> zarafa (= [0-9][.][0-9]{2}[.][0-9]{1,2}[-][0-9]{5}~'$DIST')
  • libvmime0 (>= 0.7.1) -> 0.7.1-*~'$DIST' (da es unterschiedliche Builds zu einer Version gibt
  • libical0 (>= 0.44) -> selbe geschichte wie bei libvmime0
Nur irgendwie finde ich nicht die richtigen Befehle für sed (oder stehe einfach auf dem Schlauch). Vielleicht hat hier ja jemand eine Idee.

Wo ich gerade noch einmal selber über diesen Text fliege.
Kurz gefasst: Ich will an eine beliebige Zahlenkette, die auf ein Signalwort folgt den String ~$dist dranhängen, welcher bei Ausführung in einem Shell Skript in z.B. ~lenny umgewandelt wird.

Gruß Felix

PS: ebenfalls hier gepostet.

Benutzeravatar
Duff
Beiträge: 6321
Registriert: 22.03.2005 14:36:03
Wohnort: /home/duff

Re: Debian Control File mit sed manipulieren

Beitrag von Duff » 07.01.2010 07:58:54

Damit in sed Variablen ausgewertet werden können, musst du anstatt den '-Kommas die "-Kommas verwenden.
Oh, yeah!

fbartels
Beiträge: 326
Registriert: 20.08.2009 10:06:56
Kontaktdaten:

Re: Debian Control File mit sed manipulieren

Beitrag von fbartels » 07.01.2010 09:14:21

Hi Duff,

die oben angegebene Zeile funktioniert bei mir auch mit single-quotes.

Mein Problem ist eher das ich etwas in dieser Art suche:

Code: Alles auswählen

Suche in der Zeile Depends: das Schlüsselwort Zarafa, füge vor der nächsten schließenden Klammer ~'$dist' hinzu

ulf
Beiträge: 39
Registriert: 22.09.2002 13:00:52

Re: Debian Control File mit sed manipulieren

Beitrag von ulf » 07.01.2010 12:44:26

Wenn ich das jetzt richtig verstanden habe, dann

Code: Alles auswählen

sed -e 's/\(zarafa\|libvmime0\|libical0\) *([^)]*/&~'$DIST'/g'
falls DIST vorher gesetzt wird, sonst

Code: Alles auswählen

sed -e 's/\(zarafa\|libvmime0\|libical0\) *([^)]*/&~$DIST/g'
Gruß,
Ulf
Daß Glaube etwas ganz anderes sei als Aberglaube,
ist unter allem Aberglauben der größte.
-- Karlheinz Deschner

fbartels
Beiträge: 326
Registriert: 20.08.2009 10:06:56
Kontaktdaten:

Re: Debian Control File mit sed manipulieren

Beitrag von fbartels » 07.01.2010 14:51:26

Hi Ulf,

vielen Dank dafür, das war die Lösung des Problems.

Gruß Felix

Antworten