NOM¶
emgrip - Convertir un .deb en un Grip Emdebian a la volee
Synopsis¶
DEB_BUILD_OPTIONS='usegrip' emgrip [-v|--verbose] [-q|--quiet] [-o|--outdir REPERTOIRE] NOMFICHIER
ou NOMFICHIER est un .dsc, un .changes ou un .deb
emgrip -?|-h|--help|--version
Description¶
Convertit un paquet .deb en Grip Emdebian par le deballage, l'elagage de classes
particulieres de fichiers (determines par DEB_BUILD_OPTIONS) et le reemballage
avec une description raccourcie et le suffixe de version em1.
Lors de la creation d'un depot public Emdebian Grip, il est fortement recommande
de specifier les fichiers .changes ou .dsc pour permettre la creation des
TDebs d'Emdebian a partir du paquet source aussi bien qu'inclure le paquet de
source lui-meme dans le depot.
En mode .dsc, "emgrip" ne traite que le paquet source, depuis la
version 3.0.0
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-2010 Neil Williams <codehelp@debian.org>
Copyright (C) 2005 Joey Hess <joeyh@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/>.
Emdebian Grip¶
L'idee ici est basee sur dpkg-cross :
1. recevoir le .deb ou le .changes comme une option de la ligne de commande
2. analyser DEB_BUILD_OPTIONS
3. depaqueter le .deb comme le fait dpkg-cross
4. enlever les fichiers selon DEB_BUILD_OPTIONS
5. repaqueter le .deb avec un suffixe de version Emdebian.
6. construire un nouveau .deb et revoir le .changes de facon a ce que
la source originale puisse etre maintenue.
7. inclure les paquets saisis dans le miroir local
pour reduire la taille des Packages.gz et la taille du
miroir lui-meme.
Aussi peu de dependances que possible X ce script doit devenir un nouveau paquet
et doit avoir un nouvel ensemble de controle lintian pour permettre Perl etc.
PAS DE CHANGEMENTS FONCTIONNELS DANS LE .DEB S<FINAL !>
La conversion des TDebs Debian en TDebs Emdebian doit etre faite a l'interieur
du paquet source ainsi un fichier .changes est necessaire pour cette etape. Si
le fichier .changes reference un TDeb Debian, emgrip va executer
X em_installtdeb --no-sign X a l'interieur du paquet source.
Les paquets individuels contenant les fichiers de traduction auront les fichiers
de traduction enleves et les TDebs Debian seront passes/sautes.
Les versions futures auront aussi a comprendre les classes Dpkg mais jusqu'a ce
que celles-ci soient implementees, la force brute est utilisee.
Positionner les options de build en placant un fichier dans
/etc/dpkg/origins/ contenant les options de build dans un champ nomme
"Grip-Build-Option" et appeler "emgrip" avec l'option
"--vendor" ou la variable d'environnement "DEB_VENDOR".
champs dpkg-vendor utilises par emgrip avec des valeurs par defaut :
Vendor: emdebian-grip
Vendor-Name: Emdebian Grip
Grip-Build-Option: usegrip
Short-Desc-Suffix: gripped
Le "Short-Desc-Suffix" est entoure de parentheses et ajoute a la
description courte [la valeur par defaut est X gripped X].
DEB_BUILD_OPTIONS¶
Si aucune de ces options n'est activee, emgrip ne fait rien.
nodocs
Enleve tout le contenu de /usr/share/doc/*/ excepte le fichier de copyright et
compresse ce dernier. Enleve les pages de manuel et les pages info (traduites
ou non). Supprime egalement les fichiers doc-base qui decrivent la
documentation inexistante.
nohelp
Enleve meme les fichiers d'aide de tous les paquets, y compris les paquets -doc.
Cela inclut la suppression de /usr/share/gtk-doc/html et
/usr/share/gnome/help/\$package. Malgre la suppression des fichiers d'aide,
les dependances sur les utilitaires de gestion de fichiers d'aide comme
scrollkeeper demeureront, au moins pour Lenny.
noessential
Enleve l'etiquette X Essential: yes X de DEBIAN/control X c'est une
suppression forcee, aucune dependance additionnelle ne sera generee (pas de
correctif) donc la prudence est de rigueur ici.
nolintian
Enleve tous les fichiers de /usr/share/lintian/overrides et
/usr/share/linda/overrides X permet d'economiser jusqu'a 1 Mb.
usegrip
Drapeau de combinaison qui definit tout DEB_BUILD_OPTIONS pour Emdebian Grip -
noessential, nohelp, nodocs, nolintian
nosymbols
Actuellement en cours de test X l'idee est de laisser tomber les fichiers
DEBIAN/symbols mais cela pourrait produire des effets imprevisibles sur la
construction de paquets sur un systeme ne contenant pas ces symboles. L'espace
economise en rejetant ces fichiers peut ne pas en valoir le cout, donc
X usegrip X n'active pas pour l'instant X nosymbols X.
Ceci pourrait convenir a Crush, peut-etre pas a Grip.
noperl
Enleve tous les fichiers identifies comme etant des scripts Perl executables par
la commande X file X X utilise par Crush.
usecrush
Drapeau de combinaison qui ajoute nosymbols et noperl a usegrip.
noscripts
Rejeter tous les scripts du responsable de tous les paquets, quel que soit le
type de script. Cela inclut la suppression des modeles Debconf et les scripts
de configuration. Les fichiers md5sums et les actions differees sont egalement
enlevees. Les scripts sont deplaces dans un sous-repertoire
scripts/ du
repertoire de sortie utilise par "emgrip".
usebaked
Drapeau de combinaison qui ajoute noscripts et nosymbols a usegrip. Ajoutez
"noperl" pour utiliser Baked avec Crush.
Suppression de champ¶
Les champs de controle fonctionnels sont maintenus mais une question se
pose :
Qui definit ce qui est S<fonctionnel ?>
Pour les objectifs actuels d'Emdebian Grip, S<X fonctionnel X> inclut seulement
les champs de controle S<suivants :>
Package
Source
Version
Architecture
Maintainer
Installed-Size
Depends
Pre-Depends
Conflicts
Replaces
Section
Priority
Description
Task
XS-Python-Version
Les dependances X Recommends X sont explicitement rejetees, tout comme
les X Suggests X X on s'attend a ce qu'Emdebian Grip desactive
Install-Recommends dans apt de toute facon, de sorte que les paquets saisis
(X Gripped X) puissent etre melanges avec paquets Debian ou crees
localement.
Notez aussi que X Essential X n'est pas conserve.
La page d'accueil, VCS* et tous les champs de controle X- sont rejetes.
Le resultat final est (potentiellement) une base de donnees dpkg beaucoup plus
propre.
La description est reduite a quatre lignes (ou a trois si la quatrieme ligne est
vide).
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
DEB_BUILD_OPTIONS="nodocs nohelp usegrip" ./emgrip -o $DIR $deb
done
Avec la prise en charge "dpkg-vendor", DEB_BUILD_OPTIONS peut etre
remplace en definissant l'editeur.
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, emgrip n'est pas capable obtenir les fichiers
.changes directement a partir de
http://incoming.debian.org, un script
d'encapsulation serait necessaire.
Une encapsulation supplementaire sera certainement necessaire pour permettre a
un depot Emdebian Grip de X rattraper X les miroirs Debian
existants, par exemple si le premier envoi vers le depot Grip est un envoi
binaire seul sans un .orig.tar.gz reference.
emgrip s'assure que le .tar.gz est copie dans le repertoire de sortie et que
reprepro peut trouver les fichiers appropries si l'option --ignore=missingfile
est activee. Malheureusement, cette fonctionnalite n'est pas preservee dans le
mode processincoming de reprepro.
Pour faciliter le processus de saisie d'un miroir existant, le paquet
emdebian-grip-server depend de X reprepro X pour creer un miroir
Debian filtre qui peut etre maintenu a jour, produire des meta-donnees pour
Emdebian Grip, construire les paquets saisis dans un repertoire
X incoming/ X et inclure les paquets dans le depot final Emdebian
Grip.
Une fois qu'un paquet a ete X saisi X, les paquets binaires peuvent
etre enleves du miroir filtre X les paquets source (en particulier le
.orig.tar.gz) sont probablement mieux maintenus dans le miroir filtre.