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.