NAME¶
splitout_tdeb X trennt auf die Schnelle ein Debian-TDeb aus einem .deb
Beschreibung¶
Unterteilt ein Debian-Paket durch Entpacken, Verschieben relevanter Dateien und
erneutes Packen mit einer Bemerkung in der Beschreibung und einem X+t1X im
Versions-Suffix in ein Debian-TDeb und ein kleineres Debian-Paket.
Wenn ein Depot erstellt wird, das TDebs enthaelt, wird dringend empfohlen
X.changesX-Dateien anzugeben, so dass das Depot die Originalquellen aus
rechtlichen Gruenden enthalten kann.
Falls eine Datei mit dem gleichen Namen im Ausgabeverzeichnis existiert, wird
sie ueberschrieben.
Copyright und Lizenz¶
Copyright (C) 1997-2000 Roman Hodek <roman@hodek.net>
Copyright (C) 2000-2002 Colin Watson <cjwatson@debian.org>
Copyright (C) 2002-2004 David Schleef <ds@schleef.org>
Copyright (C) 2004 Nikita Youshchenko <yoush@cs.msu.su>
Copyright (C) 2004 Raphael Bossek <bossekr@debian.org>
Copyright (C) 2007-2008 Neil Williams <codehelp@debian.org>
Dieses Paket ist freie Software; Sie koennen es unter den Bedingungen der
XGNU General Public LicenseX, wie sie von der XFree Software FoundationX
entweder in Version 3 der Lizenz oder (optional) in einer spaeteren Version
veroeffentlicht wurde, weiterverteilen und/oder veraendern.
Dieses Programm wird inder Hoffnung verteilt, dass es nuetzlich sein wird,
aber OHNE JEGLICHE GEWAeHRLEISTUNG, auch ohne die inbegriffene
Gewaehrleistung von MARKTGAeNGIGKEIT und EIGNUNG FUeR EINEN SPEZIELLEN ZWECK.
Lesen Sie die XGNU General Public LicenseX, um weitere Einzelheiten zu
erhalten.
Sie sollten mit diesem Programm eine Kopie der XGNU General Public License
erhalten haben. Falls nicht, lesen Sie <http://www.gnu.org/licenses/>.
Konvertieren zu TDebs¶
Die Idee basiert hier auf Dpkg-Cross:
1. X.debX oder X.changesX als eine Befehlszeilenoption empfangen
2. die X.debX als Dpkg-Cross entpacken wird
3. Steuerdaten fuer das neue TDeb erstellen
4. Dateien in das TDeb verschieben
5. das X.debX mit einem TDeb-Versions-Suffix erneut packen
6. die Original-X.debX erneut erstellen und X.changesX ueberarbeiten, so dass
die Originalquelle beibehalten werden kann.
So wenige Abhaengigkeiten wie moeglich X dieses Skript sollte in eine
brauchbarere TDeb-Unterstuetzung umgewandelt werden.
Zukuenftige Versionen werden ausserdem XDpkg-ClassesX verstehen muessen, bis
diese jedoch implementiert sind, wendet diese Funktion rohe Gewalt an.
Automatisierung¶
Relativ einfach, aber ein paar Pruefungen werden fuer den Fall benoetigt, dass
Ihre Liste moeglicher Pakete Pakete enthaelt, die bereits von Dpkg-Cross
verarbeitet werden.
#!/bin/sh
set -e
DIR=/tmp/myrepo/
for deb in `ls /var/cache/apt/archives/*.deb`; do
cross=`echo $deb | grep "\-.*-cross" || true`
if [ ! -z "$cross" ]; then
echo "Dpkg-Cross-Paket wird uebersprungen: $deb"
continue
fi
/usr/share/emdebian-tools/splitout_tdeb -o $DIR $deb
done
Ein aehnliches Skript sollte in der Lage sein, mit erhaltenen X.changesX-Dateien
zurecht zu kommen, um die Quellpakete aufzubewahren.
Trotz der internen Benutzung von Dcut ist Splitout_tdeb nicht eingerichtet, um
die X.changesX-Dateien direkt von
http://incoming.debian.org zu erhalten, es
wird ein Adapterskript benoetigt.
Es wird wahrscheinlich ein zusaetzlicher Adapter benoetigt, um einem TDeb-Depot
zu erlauben, mit einem existierenden Debian-Spiegel XgleichzuziehenX, z.B.
falls das erste Hochladen zum TDeb-Depot ein rein binaeres Hochladen ohne ein
verbundenes X.orig.tar.gzX ist. Sehen Sie Emdebian-Grip, um zu erfahren, wie
das funktioniert.
Splitout_tdeb stellt sicher, dass das X.tar.gzX in das
Original-Ausgabeverzeichnis kopiert wird und Reprepro die relevanten Dateien
finden kann, wenn die Option X--ignore=missingfileX uebergeben wird. Leider
ist diese Funktionalitaet nicht im Reprepro-Modus XprocessincomingX
verblieben.
Probleme¶
Viele. :-)
Benoetigt weitere Arbeit, wohl um der Option *nicht* zu erlauben (oder zur
Vorgabe zu machen) das Binaerpaket neu zu erstellen, aber das haengt davon ab,
ob das Binaerpaket bereits ein TDeb unterstuetzt. Gerade jetzt ist dies ein
schneller Hack, um leicht an einige TDebs zu kommen. Splitout_tdeb verdient es
vermutlich nicht, in eine stabile Veroeffentlichung zu gelangen, die
Unterstuetzung sollte direkt innerhalb der Debian-Builds implementiert werden.
Das generierte TDeb benutzt den
Quellpaketnamen, der Dinge erschwert,
falls Sie versuchen TDebs aus Binaerpaketen zu generieren, die zum gleichen
Quellpaket gehoeren X benutzen Sie stattdessen Xdpkg-gentdebX oder
Xdh_gentdebX aus dem (nativen) Build des Paketes.
Ausserdem werden strikte Abhaengigkeiten nicht von Splitout_tdeb veraendert X
falls ein anderes Paket (typischerweise aus dem gleichen Quellpaket) eine
strikte Abhaengigkeit zu einem Paket hat, das von Splitout_tdeb neu erstellt
wurde, wird dieses Paket wahrscheinlich instabil. Z,B. falls Foo von Bar (=
1.2.3-4) abhaengt und Bar von Splitout_tdeb neu erstellt wurde, wird Bar die
Version 1.2.3-4+t1 bekommen und Foo kann nicht mehr installiert werden. Wie
oberhalb besteht die Loesung darin, das TDeb innerhalb des normalen
Erstellungsprozesses des Paketes vorzubereiten. Emdebian-Grip hat dieses
Problem auch geloest, aber Splitout_tdeb ist nur ein Komfort-Skript und
benutzt diese Unterstuetzung (noch) nicht.
Benutzen Sie die Option X--verboseX, um den Inhalt der generierten
Steuerungsdatei des TDebs und des modifizierten Binaerpakets anzusehen.
splitout_tdeb also does not (yet) support +t2 or other revisions of the TDeb -
this needs support in dpkg for .diff1.gz so that the +t2 can be uploaded
without affecting the binary package(s). The entire mechanism for how
translators will update TDebs is yet to be implemented.