NOM¶
emgrip - Convertir un .deb en un Grip Emdebian à la volée
Synopsis¶
DEB_BUILD_OPTIONS='usegrip' emgrip [-v|--verbose] [-q|--quiet]
[--vendor ÉDITEUR] [-o|--outdir RÉPERTOIRE] NOMFICHIER
où NOMFICHIER est un .dsc, un .changes ou un .deb
emgrip -?|-h|--help|--version
Description¶
Convertit un paquet .deb en Grip Emdebian par le déballage,
l'élagage de classes particulières de fichiers
(déterminés par
DEB_BUILD_OPTIONS ou l'option
d'éditeur de
dpkg) et le remballage avec une description
raccourcie et le suffixe de version em1.
Pour le service d'empaquetage Debian, l'éditeur d'unstable-grip saute la
création des TDebs Emdebian et modifie le nom de la suite pour utiliser
le suffixe -grip.
Lors de la création d'un dépôt public Emdebian Grip, il est
fortement recommandé de spécifier les fichiers .changes ou .dsc
pour permettre la création des TDebs d'Emdebian à partir du
paquet source aussi bien qu'inclure le paquet de source lui-même dans
le dépôt.
En mode .dsc, "emgrip" ne traite que le paquet source, depuis la
version 3.0.0
Si un fichier existe avec le même nom dans le répertoire de
sortie, il sera écrasé.
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-2011 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 publiée par la Free
Software Foundation; en prenant la version 3 de la licence ou (selon votre
choix) n'importe quelle version subséquente.
Ce logiciel est distribué dans l'espoir qu'il soit utile, mais AUCUNE
GARANTIE n'est donnée tant pour des raisons COMMERCIALES que pour
RÉPONDRE À UN BESOIN PARTICULIER. Consulter la Licence Publique
Générale GNU pour plus de détails.
Vous devriez avoir reçu une copie de la Licence Publique
Générale de GNU avec ce programme. Sinon, voir
<
http://www.gnu.org/licenses/>.
Emdebian Grip¶
L'idée ici est basée sur dpkg-cross :
1. recevoir le .deb ou le .changes comme une option de la ligne de commande
2. analyser DEB_BUILD_OPTIONS
3. dépaqueter 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 façon à ce que
la source originale puisse être maintenue.
7. inclure les paquets saisis dans le miroir local
pour réduire la taille des Packages.gz et la taille du
miroir lui-même.
Aussi peu de dépendances que possible — ce script doit devenir un
nouveau paquet et doit avoir un nouvel ensemble de contrôle lintian
pour permettre Perl etc.
PAS DE CHANGEMENTS FONCTIONNELS DANS LE .DEB S<FINAL !>
La conversion des traductions Debian en TDebs Emdebian (quand c'est permis par
les options de construction) doit être faite à
l'intérieur du paquet source ainsi un fichier
.changes est
nécessaire pour cette étape. Si le fichier
.changes
référence un TDeb Debian, emgrip va exécuter
« em_installtdeb --no-sign » à
l'intérieur du paquet source.
Les paquets individuels contenant les fichiers de traduction auront les fichiers
de traduction enlevés et les TDebs Debian seront
passés/sautés.
Les versions futures pourraient aussi comprendre les classes Dpkg mais
jusqu'à ce que celles-ci soient implémentées, la force
brute est utilisée.
Positionner les options de build en plaçant un fichier dans
/etc/dpkg/origins/ contenant les options de build dans un champ
nommé
Grip-Build-Option et appeler
emgrip avec l'option
--vendor ou la variable d'environnement
DEB_VENDOR.
champs dpkg-vendor utilisés par emgrip avec des valeurs par
défaut :
Vendor: emdebian-grip
Vendor-Name: Emdebian Grip
Grip-Build-Option: usegrip
Short-Desc-Suffix: gripped
Le "Short-Desc-Suffix" est entouré de parenthèses et
ajouté à la description courte [la valeur par défaut est
« gripped »].
DEB_BUILD_OPTIONS¶
Si aucune de ces options n'est activée, emgrip ne fait rien.
nodocs
Enlève tout le contenu de /usr/share/doc/*/ excepté le fichier de
copyright et compresse ce dernier. Enlève les pages de manuel et les
pages info (traduites ou non). Supprime également les fichiers doc-base
qui décrivent la documentation inexistante.
nohelp
Enlève même 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. Malgré la suppression des fichiers
d'aide, les dépendances sur les utilitaires de gestion de fichiers
d'aide comme scrollkeeper demeureront, au moins pour Lenny.
noessential
Enlève l'étiquette « Essential: yes »
de DEBIAN/control — c'est une suppression forcée, aucune
dépendance additionnelle ne sera générée (pas de
correctif) donc la prudence est de rigueur ici.
nolintian
Enlève tous les fichiers de /usr/share/lintian/overrides et
/usr/share/linda/overrides — permet d'économiser jusqu'à
1 Mb.
usegrip
Attribut de combinaison qui définit tout DEB_BUILD_OPTIONS pour Emdebian
Grip - noessential, nohelp, nodocs, nolintian
debiangrip
Attribut spécifique à Debian ce qui saute la création des
TDebs, même pour les fichiers
.changes, puis modifie la
distribution pour correspondre aux suites Emdebian dans Debian. Tout autre
traitement reste identique à l'option
usegrip.
nosymbols
Actuellement en cours de test — l'idée est de laisser tomber les
fichiers DEBIAN/symbols mais cela pourrait produire des effets
imprévisibles sur la construction de paquets sur un système ne
contenant pas ces symboles. L'espace économisé en rejetant ces
fichiers peut ne pas en valoir le coût, donc
« usegrip » n'active pas pour l'instant
« nosymbols ». Ceci pourrait convenir à
Crush, peut-être pas à Grip.
noperl
Enlève tous les fichiers identifiés comme étant des scripts
Perl exécutables par la commande « file »
— utilisé par Crush.
usecrush
Attribut de combinaison qui ajoute nosymbols et noperl à usegrip.
noscripts
Rejeter tous les scripts du responsable de tous les paquets, quel que soit le
type de script. Cela inclut la suppression des modèles Debconf et les
scripts de configuration. Les fichiers md5sums et les actions
différées sont également enlevées. Les scripts
sont déplacés dans un sous-répertoire
scripts/ du
répertoire de sortie utilisé par "emgrip".
usebaked
Attribut de combinaison qui ajoute noscripts et nosymbols à usegrip.
Ajoutez "noperl" pour utiliser Baked avec Crush.
Suppression de champ¶
Les champs de contrôle fonctionnels sont maintenus mais une question se
pose :
Qui définit ce qui est S<fonctionnel ?>
Pour les objectifs actuels d'Emdebian Grip, S<« fonctionnel »> inclut seulement
les champs de contrôle S<suivants :>
Package
Source
Version
Architecture
Maintainer
Installed-Size
Depends
Pre-Depends
Multi-Arch
Conflicts
Replaces
Section
Priority
Description
Task
XS-Python-Version
Les dépendances « Recommends » sont
explicitement rejetées, tout comme les
« Suggests » — on s'attend à ce
qu'Emdebian Grip désactive Install-Recommends dans apt de toute
façon, de sorte que les paquets saisis
(« Gripped ») puissent être
mélangés avec paquets Debian ou créés localement.
Notez aussi que « Essential » n'est pas
conservé.
La page d'accueil, VCS* et tous les champs de contrôle X- sont
rejetés.
Le résultat final est (potentiellement) une base de données dpkg
beaucoup plus propre.
La description est réduite à quatre lignes (ou à trois si
la quatrième ligne est vide).
Automatisation¶
Relativement simple, mais quelques vérifications sont nécessaires
dans le cas où votre liste de paquets possibles inclut des paquets
déjà traités 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
être remplacé en définissant l'éditeur.
Un script similaire devrait être capable de se débrouiller 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 à partir de
http://incoming.debian.org, un script
d'encapsulation serait nécessaire.
Une encapsulation supplémentaire sera certainement nécessaire pour
permettre à un dépôt Emdebian Grip de
« rattraper » les miroirs Debian existants, par
exemple si le premier envoi vers le dépôt Grip est un envoi
binaire seul sans un .orig.tar.gz référencé.
emgrip s'assure que le .tar.gz est copié dans le répertoire de
sortie et que reprepro peut trouver les fichiers appropriés si l'option
--ignore=missingfile est activée. Malheureusement, cette
fonctionnalité n'est pas préservée dans le mode
processincoming de reprepro.
Pour faciliter le processus de saisie d'un miroir existant, le paquet
emdebian-grip-server dépend de « reprepro »
pour créer un miroir Debian filtré qui peut être maintenu
à jour, produire des meta-données pour Emdebian Grip, construire
les paquets saisis dans un répertoire
« incoming/ » et inclure les paquets dans le
dépôt final Emdebian Grip.
Une fois qu'un paquet a été « saisi »,
les paquets binaires peuvent être enlevés du miroir
filtré — les paquets source (en particulier le .orig.tar.gz)
sont probablement mieux maintenus dans le miroir filtré.