Provided by: emdebian-grip_3.1.0_all bug

NAME

       Emgrip – konvertiert ein ».deb« auf die Schnelle zu Emdebian-Grip

ÜBERSICHT

        DEB_BUILD_OPTIONS='usegrip' emgrip [-v|--verbose] [-q|--quiet]
           [--vendor VENDOR] [-o|--outdir DIRECTORY] FILENAME

       wobei DATEINAME ein ».dsc«, ein ».changes« oder ein ».deb« ist

        emgrip -?|-h|--help|--version

Beschreibung

       Converts a .deb package to Emdebian Grip by unpacking, pruning particular classes of files
       (determined by DEB_BUILD_OPTIONS or the dpkg vendor support) and repacking with a
       shortened description and the em1 version suffix.

       For the Debian buildd, the unstable-grip vendor omits generation of Emdebian TDebs and
       changes the suite name to use the -grip suffix.

       Wenn ein öffentliches Emdebian-Grip-Depot erstellt wird, ist es dringend empfohlen
       ».changes« oder ».dsc«-Dateien anzugeben, um das Generieren von Emdebian-TDebs aus dem
       Quellpaket zu erlauben, ebenso wie das Quellpaket selbst in das Depot einzuschießen.

       Im .dsc-Modus verarbeitet "emgrip" ab Version 3.0.0 nur das Quellpaket.

       Falls eine Datei mit dem gleichen Namen im Ausgabeverzeichnis existiert, wird sie
       überschrieben.

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-2011  Neil Williams <codehelp@debian.org>
        Copyright (C) 2005 Joey Hess <joeyh@debian.org>

        Dieses Paket ist freie Software; Sie können es unter den Bedingungen der
        »GNU General Public License«, wie sie von der »Free Software Foundation«
        entweder in Version 3 der Lizenz oder (optional) in einer späteren Version
        veröffentlicht wurde, weiterverteilen und/oder verändern.
        Dieses Programm wird inder Hoffnung verteilt, dass es nützlich sein wird,
        aber OHNE JEGLICHE GEWÄHRLEISTUNG, auch ohne die inbegriffene
        Gewährleistung von MARKTGÄNGIGKEIT und EIGNUNG FÜR EINEN SPEZIELLEN ZWECK.
        Lesen Sie die »GNU General Public License«, um weitere Einzelheiten zu
        erhalten.
        Sie sollten mit diesem Programm eine Kopie der »GNU General Public License
        erhalten haben. Falls nicht, lesen Sie <http://www.gnu.org/licenses/>.

Emdebian-Grip

       Die Idee basiert hier auf Dpkg-Cross:

        1. ».deb« oder ».changes« als Befehlszeilenoption erhalten
        2. DEB_BUILD_OPTIONS auswerten
        3. das ».deb« entpacken, da Dpkg-cross
        4. Dateien per DEB_BUILD_OPTIONS entfernt
        5. das ».deb« mit einem Emdebian-Versionssuffix neu packen.
        6. neue ».deb« erstellen und ».changes« überarbeiten, so dass die
            Originalquelle beibehalten werden kann.
        7. Die gegrippten Pakete in einen lokalen Spiegel einfügen, um die Größe
            der »Packages.gz« und des Spiegels selbst zu verkleinern.

       So wenige Abhängigkeiten wie möglich – dieses Skript sollte ein neues Paket bekommen und
       eine neue Zusammenstellung von Lintian-Prüfungen haben, um Perl etc. zu erlauben.

       KEINE FUNKTIONALEN ÄNDERUNGEN IM FERTIGEN .DEB!

       Conversion of Debian translations to Emdebian TDebs (where supported by the build options)
       needs to be done inside the source package so a .changes file is needed for this step. If
       the .changes file references a Debian TDeb, emgrip will run 'em_installtdeb --no-sign'
       inside the source package.

       Bei individuellen Paketen, die Übersetzungsdateien enthalten werden die
       Übersetzungsdateien entfernt und die Debian-TDebs übersprungen.

       Future versions may also understand Dpkg Classes but until those are implemented, this
       uses brute force.

       Setzen Sie die Erstellungsoptionen, indem Sie eine Datei in /etc/dpkg/origins/ platzieren,
       die die Erstellungsoptionen in einem Feld enthält, das "Grip-Build-Option" genannt wird
       und rufen Sie "Emgrip" mit der Option "--vendor" oder der Umgebungsvariable "DEB_VENDOR"
       auf.

       »Dpkg-vendor«-Felder, die von Emgrip mit Standardwerten benutzt werden:

        Vendor: emdebian-grip
        Vendor-Name: Emdebian Grip
        Grip-Build-Option: usegrip
        Short-Desc-Suffix: gripped

       Die "Short-Desc-Suffix" wird in Klammern gesetzt und an die Kurzbeschreibung anghängt
       [Vorgabe ist »gripped«]

DEB_BUILD_OPTIONS

       Falls keine dieser Optionen gesetzt sind, tut Emgrip nichts.

        nodocs

       Entfernen Sie allen Inhalt in /usr/share/doc/*/ außer der Copyright-Datei und komprimieren
       Sie die Copyright-Datei selbst. Entfernen Sie Handbuch- und Infoseiten (übersetzt oder
       nicht). Entfernen Sie außerdem »doc-base«-Dateien die die Dokumentation beschreiben, die
       nicht länger existiert.

        nohelp

       Entfernen Sie sogar Hilfedateien aus allen Paketen einschließlich der »-doc«-Pakete. Dies
       schließt das Entfernen von /usr/share/gtk-doc/html und /usr/share/gnome/help/\$package
       ein. Trotz des Entfernens der Hilfedateien werden Abhängigkeiten für Dateihilfswerkzeuge
       wie Scrollkeeper bestehen bleiben, zumindest für Lenny.

        noessential

       Entfernen Sie die Kennzeichnung »Essential: yes« aus »DEBIAN/control« – dies ist ein
       Entfernen mit roher Gewalt, es werden keine zusätzlichen Abhängigkeiten generiert (keine
       Patches), so dass hier Vorsicht geboten ist.

        nolintian

       Entfernen Sie alle Dateien aus /usr/share/lintian/overrides und /usr/share/linda/overrides
       – spart bis zu 1 Mb.

        usegrip

       Kombinationsschalter, der alle DEB_BUILD_OPTIONS für Emdebian-Grip setzt – »noessential«,
       »nohelp«, »nodocs«, »nolintian«

        debiangrip

       Debian-only flag which omits processing of TDebs, even for .changes files then changes the
       distribution to match the Emdebian suites in Debian. Other processing remains the same as
       the usegrip option.

        nosymbols

       Wird derzeit getestet – die Idee besteht darin, »DEBIAN/symbols«-Dateien wegzulassen, aber
       dies könnte unvorhersehbare Effekte bei der Paketerstellung auf einem System haben, dem
       diese Symbole fehlen. Der durch das Weglassen dieser Dateien eingesparte Platz könnte die
       Kosten nicht Wert sein, da »usegrip« noch nicht »nosymbols« aktiviert. Dies könnte für
       Crush geeignet sein, für Grip möglicherweise nicht.

        noperl

       Jede Datei entfernen, die als Perl-Skripttext von »file« gefunden wurde – von Crush
       benutzt.

        usecrush

       Kombinationsschalter, der »nosymbols« und »noperl« zu Usegrip hinzufügt.

        noscripts

       lässt alle Paketbetreuerskripte unabhängig von Skripttyp aus allen Paketen weg. Dies
       schließt das Entfernen von Debconf-Schablonen und Konfigurationsskripten ein. Außerdem
       werden Md5sums-Dateien und Trigger entfernt. Skripte werden in das Unterverzeichnis
       scripts/ des von "emgrip" benutzten Ausgabeverzeichnisses verschoben.

        usebaked

       Kombinationsschalter, der »noscripts« und »nosymbols« zu Usegrip hinzufügt. Fügen Sie
       "noperl" hinzu, um Baked für Crush zu verwenden.

Feldentfernung

       Funktionale Steuerungsfelder werden beibehalten, aber es stellt sich die Frage:

        Wer definiert, was funktional ist?

       Gut, für die derzeitigen Zwecke von Emdebian-Grip schließt »funktional« nur die folgenden
       Steuerungsfelder ein:

        Package
        Source
        Version
        Architecture
        Maintainer
        Installed-Size
        Depends
        Pre-Depends
        Multi-Arch
        Conflicts
        Replaces
        Section
        Priority
        Description
        Task
        XS-Python-Version

       »Recommends« wird explizit verworfen, genauso wie »Suggests« – es wird erwartet, dass
       Emdebian-Grip »Install-Recommends« in Apt sowieso ausschaltet, so dass gegrippte Pakete
       mit Debian oder lokal erstellten Paketen gemischt werden können.

       Beachten Sie außerdem, dass »Essential« nicht aufbewahrt wird.

       Homepage, VCS* und alle »X-«-Steuerungsfelder werden weggelassen.

       Das reine Ergebnis ist eine (potentiell) wesentlich sauberere Dpkg-Datenbank.

       Die Beschreibung wird auf vier Zeilen gekürzt (oder drei, falls die vierte Zeile leer
       ist).

Automatisierung

       Relativ einfach, aber ein paar Prüfungen werden für den Fall benötigt, dass Ihre Liste
       möglicher Pakete Pakete enthält, 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 übersprungen: $deb"
               continue
           fi
           DEB_BUILD_OPTIONS="nodocs nohelp usegrip" ./emgrip -o $DIR $deb
        done

       Bei Unterstützung von "dpkg-vendor" können die DEB_BUILD_OPTIONS durch Setzen des
       Anbieters erstzt werden.

       Ein ähnliches Skript sollte in der Lage sein, mit erhaltenen ».changes«-Dateien zurecht zu
       kommen, um die Quellpakete aufzubewahren.

       Obwohl intern Dcut benutzt wird, ist Emgrip nicht eingerichtet, um ».changes«-Dateien
       direkt von http://incoming.debian.org zu erhalten, es ist ein Adapterskript nötig.

       Es wird wahrscheinlich ein zusätzlicher Adapter benötigt, um einem Emdebian-Grip-Depot zu
       erlauben, mit existierenden Debian-Spiegeln »gleichzuziehen«, z.B. falls das erste
       Hochladen zum Grip-Depot ein rein binäres Hochladen ohne ein referenziertes ».orig.tar.gz«
       ist.

       Emgrip stellt sicher, dass das ».tar.gz« in das Ausgabeverzeichnis kopiert wird und
       Reprepro die relevanten Dateien finden kann, falls die Option »--ignore=missingfile«
       übergeben wird. Leider ist diese Funktionalität nicht im »processincoming«-Modus von
       Reprepro erhalten geblieben.

       Um den Prozess des »Grippings« eines existierenden Spiegels zu erleichtern, hängt das
       Paket »emdebian-grip-server« von »reprepro« ab, um einen gefilterten Debian-Spiegel zu
       erstellen, der aktuell gehalten werden kann, Metadaten für Emdebian-Grip generiert, damit
       behandelte Pakete in einem »incoming/«-Verzeichnis erstellt und die Pakete im fertigen
       Emdebian-Grip-Depot einfügt.

       Sobald ein Paket »gegrippt« wurde, könnte das Binärpaket vom gefilterten Spiegel entfernt
       werden – die Quellpakete (besonders die ».orig.tar.gz«) werden wahrscheinlich am Besten
       auf dem gefilterten Spiegel aufbewahrt.