Erstellen von Debian-Paketen und Aufsetzen eines Repositorys

Praxis

  • Ordner erstellen, hier <namedesprogramms-version>
  • Als erstes erstellen wir einen Ordner mit der folgenden Ordnerstruktur:
    PROGRAMM
    \
     |opt
     |  \
     |  PROGRAMM
     |    \
     |    DATEIEN
     \   
     DEBIAN
        \
        control
        |
        postinst
  • Dateien im Ordner debian anlegen
    • control – Datei
      control
      Package: <PROGRAMM_NAME>
      Version: <VERSION>
      Section: <'admin', 'devel' (development), 'doc', 'editors', 'games', 'graphics', 'math', 'misc', 'science', 'utils'>
      Priority: extra
      Architecture: <'all', 'amd64', 'i386'>
      Depends: <ABHÄNGIGKEITEN>
      Installed-Size: <DATEIGRÖSSE IN KB>
      Maintainer: Max Mustermann <muster@mann.de>
      Homepage: <HOMEPAGE>
      Description: Eine kurze Beschreibung
       Eine lange Beschreibung...
    • postinst – Datei
      postinst
      // Befehle, welche nach der Installation ausgeführt werden...
  • Unterordner von opt erstellen
    Das Programm liegt nachher in diesem Verzeichnis. Beispiel:
    • <DIR>/opt/rktools/rkObjectHasher/ entspricht /opt/rktools/rkHasher/ im Dateisystem
      rkobjecthasher
      #!/bin/bash
       
      java -jar /opt/rktools/rkObjectHasher/rkObjectHasher.jar
    • Folgende Datei unter <DIR>/usr/share/apllications/ anlegen:
      rkobjecthasher.desktop
      [Desktop Entry]
      Encoding=UTF-8
      Name=rkObjectHasher   
      Comment=Dies ist ein Kommentar welcher beim Ueberfahren mit der Maus angezeigt $
      Exec=rkobjecthasher  
      Icon=rkobjecthasher.png 
      Terminal=false
      Type=Application
      Categories=GNOME;GTK;System;rkTools;
    • Folgende Datei unter <DIR>usr/share/pixmaps/ ablegen
      • rkobjecthasher.png
  • Anschließend das Paket bauen:
    dpkg -b rkobjecthasher-1.1 rkobjecthasher-1.1-all.deb

Theorie (und offizieller Debian Repository)

<FIXME>

  1. Quellcode-Archiv herunterladen und entpacken
  2. Das Quellcode-Archiv sollte “<packetname>_<packetversion>.orig.tar.gz“ heißen
  3. In dem entpackten Code ein Verzeichnis „debian“ anlegen
  4. In dem Verzeichniss werden nun folgende Dateien angelegt:
    • debian/changelog - Changelog
    • debian/control - Metainformationen (Abhängigkeiten, Beschreibungen)
    • debian/copyright - Copyright & Lizenz-Informationen
    • debian/watch - URL um automatisch auf neue Versionen zu prüfen
    • debian/rules - Informationen, wie der Quellcode gebaut werden soll
  5. Paket kann gebaut werden
    • dpkg-buildpackage
    • dpkg-buildpackage -b

      | Nur binary

    • dpkg-buildpackage -S

      | Nur source

  6. Ergebniss überprüfen
    • Paketinhalt - wenn leer blöd
      dpkg -c file.deb
    • Metadaten
      dpkg --info file.deb
    • lintian --display-info --pendantic file.changes
  7. Signieren und hochladen (Nur Debian Mainainer relevant)
    • debsign file.changes
    • dput file.changes

Programme

dh_make

Templates der debian/* Dateien

pbuilder

pbuilder wird eingesetzt um zu garantieren, dass sämtliche build-dependes aufgelöst werden. Im Prinzip ist es ein komplett eigenständiges Debian-System aber ohne irgendwelche vorinstallierten Programme.

  • pbuilder --create
  • pbuilder --update
  • pbuilder --build file.dsc ((file.dsc wird erstellt nach dpkg-buildpackage -S))

Dateien

debian/changelog

changelog
<programmname> (<VERSION) <ETCH/JESSIE/STABLE/UNSTABLE...>; urgency=low
 
  * initial release
  * Kommentare
 
 -- <MAINTAINER> <maxmustermann@rkcsd.com>  Fri, 20 Jun 2008 10:21:18 +0200 

debian/control

control
Source:
Section: misc
Priority: extra
Maintainer: Max Mustermann <maxmustermann@rkcsd.com>
Standards-Version: 3,9,4
Build-Depends: <programm(paketname)> (>= <VERSION>),
               <...>
Homepage: http://www.rkcsd.com/<PFAD/ZUM/PROGRAMM>
 
....
 
Package: <PROGRAMMNAME>
Architecture: all
Multi-Arch: foreign
Depends: ${misc:Depends}, ${shlibs:Depends}
Description: <KURZBESCHREIBUNG>
 BLAAAAABLLAAAAAAA
 . 
 ABSATZ!!!
 .
 Textetxtext

debian/copyright

copyright
Format: http://www.debian.org/doc/packaging-manuals/copyright-format/1.0/
Source: <http://mein.projekt/>
 
Files: *
Copyright: 2007-2012 <NAME> <sag@ich.net>
           2012 <NAME> <sag@ich.net>
License: GPL-3*
 LICENSE TEXT
 
Files: debian/*
Copyright: 2007-2012 <NAME> <sag@ich.net>
           2012 <NAME> <sag@ich.net>
License: ISC
 LICENSE TEXT

debian/watch

FIXME

watch
 

debian/rules

rules
#!/usr/bin/make -f
 
%:
  dh $0
 
override_dh_auto_install:
  dh_auto_install -- PREFIX=/usr

Weitere Dateien

Sind nicht nötig, können aber gesetzt werden. debian/{preinst,postinst,prerm,postrem}

Das Repository

Quellen

comp/linux/mkdeb.txt · Zuletzt geändert: 25.04.2015, 16:50 Uhr von wikiredaktion@reneknipschild.de
 
Falls nicht anders bezeichnet, ist der Inhalt dieses Wikis unter der folgenden Lizenz veröffentlicht: CC Attribution-Share Alike 3.0 Unported
rkWiki wird freundlich bereitgestellt von
René Knipschild – Custom Software Development, Ihr Partner in Sachen IT-Beratung & individueller Software-Entwicklung. www.IT-Beratung-Nordhessen.de – Made in Germany
Copyleft inverted copyright sign 2012-2024 René Knipschild | www.reneknipschild.net | Impressum | Datenschutz