Provided by:
emdebian-tdeb_3.0.7_all 
NOM
splitout_tdeb - Extraire un TDeb Debian a partir d'un .deb a la volee
Description
Separe un paquet Debian en un TDeb Debian et un paquet Debian plus
petit en depaquetant, deplacant les fichiers appropries et en
repaquetant avec une note dans la description et en ajoutant le suffixe
de version +t1.
Lors de la creation d'un depot contenant des TDebs, il est fortement
recommande de specifier les fichiers .changes de facon a ce que le
depot puisse inclure les sources originaux, pour des raisons
juridiques.
Si un fichier existe avec le meme nom dans le repertoire de sortie, il
sera ecrase.
Copyright et Licence
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>
Ce logiciel est libre; vous pouvez le redistribuer selon les termes de
la licence GNU General Public License telle que publiee par la Free
Software Foundation; en prenant la version 3 de la licence ou (selon
votre choix) n'importe quelle version subsequente.
Ce logiciel est distribue dans l'espoir qu'il soit utile, mais AUCUNE
GARANTIE n'est donnee tant pour des raisons COMMERCIALES que pour
REPONDRE A UN BESOIN PARTICULIER. Consulter la Licence Publique
Generale GNU pour plus de details.
Vous devriez avoir recu une copie de la Licence Publique Generale de
GNU avec ce programme. Sinon, voir <http://www.gnu.org/licenses/>.
Convertir vers TDebs
L'idee ici est basee sur dpkg-cross :
1. recoit un .deb ou un .changes comme une option de la ligne de commande
2. depaquette le .deb comme le fait dpkg-cross
3. cree les donnees de controle pour le nouveau TDeb
4. replace les fichiers dans le TDeb
5. repaquette le .deb avec un suffixe de version TDeb.
6. reconstruit le .deb original et modifie le .changes de facon a ce que
le source original puisse etre maintenu.
Aussi peu de dependances que possible X ce script devrait etre
transforme en une gestion de TDeb plus utilisable.
Les versions futures auront aussi a comprendre les classes Dpkg mais
jusqu'a ce que celles-ci soient implementees, la force brute est
utilisee.
Automatisation
Relativement simple, mais quelques verifications sont necessaires dans
le cas ou votre liste de paquets possibles inclut des paquets deja
traites par dpkg-cross.
#!/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 "skipping dpkg-cross package: $deb"
continue
fi
/usr/share/emdebian-tools/splitout_tdeb -o $DIR $deb
done
Un script similaire devrait etre capable de se debrouiller avec les
fichiers .changes obtenus pour maintenir les paquets source.
Bien qu'utilisant dcut en interne, splitout_tdeb n'est pas concu pour
obtenir les fichiers .changes directement a partir de
http://incoming.debian.org, un script d'encapsulation sera necessaire.
Une encapsulation supplementaire sera certainement necessaire pour
permettre a un depot TDeb de X rattraper X les miroirs Debian existant,
par exemple si le premier telechargement vers le depot TDeb est un
telechargement binaire seul sans un .orig.tar.gz reference. Voir
emdebian-grip pour la facon dont ceci pourrait fonctionner.
splitout_tdeb s'assure que le .tar.gz est copie dans le repertoire de
sortie et que reprepro peut localiser les fichiers appropries si
l'option --ignore=missingfile est activee. Helas, cette fonctionnalite
n'est pas preservee dans le mode processincoming de reprepro.
Problemes
Beaucoup. :-)
Plus de travail est necessaire, pour permettre (ou definir par defaut)
a l'option de *ne pas* reconstruire le paquet binaire mais cela depend
du binaire utilisant deja un TDeb. Pour le moment, il s'agit d'un
bricolage rapide pour obtenir des TDebs facilement. splitout_tdeb ne
merite probablement pas d'entrer dans la distribution stable, la
fonctionnalite devrait etre implementee directement dans les builds
Debian.
Les Tdeb generes utilisent le nom du paquet source ce qui va compliquer
les choses si vous essayez de generer les TDebs a partir des binaires
appartenant au meme paquet source X preferez plutot dpkg-gentdeb ou
dh_gentdeb de l'interieur du build (natif) du paquet.
Aussi, les dependances strictes ne sont pas alterees par splitout_tdeb
X si un autre paquet (typiquement provenant du meme paquet source) a
une dependance stricte envers un paquet reconstruit par splitout_tdeb,
ce paquet a des chances de devenir ininstallable. Par exemple, si foo
depend de bar (= 1.2.3-4) et que bar est reconstruit par splitout_deb,
bar va devenir 1.2.3-4+t1 et foo va devenir ininstallable. Comme
precedemment, la solution est de preparer le TDeb a partir de la
construction normale de paquet. emdebian-grip a aussi resolu ce
probleme mais splitout_tdeb est seulement un script de convenance et
n'utilise pas (encore) cette prise en charge.
Utilisez l'option --verbose pour voir le contenu du fichier de controle
genere du TDeb et du paquet binaire modifie.
splitout_tdeb ne permet pas (encore) +t2 ou les autres revisions de
TDeb X cela necessite une gestion dans dpkg pour .diff1.gz pour que le
+t2 puisse etre envoye sans affecter le(s) paquet(s) binaire(s). Le
mecanisme entier de mise a jour des TDebs par les traducteurs est
encore a implementer.