Debian-Packaging-Tutorial. David Frey



Ähnliche Dokumente
Debian Packaging. Sebastian Reichel

Debian-Paketierung. Seminar Betriebssystemdienste und -administration. Christian Schubert. Hasso-Plattner-Institut. Seite

Grundlagen des Debian-Paketverwaltungssystems Eine kurze Einführung - WS 09/10. Fatih Abut (fabut2s@smail.inf.fh-brs.de)

Lokale Installation von DotNetNuke 4 ohne IIS

Handbuch. Artologik EZ-Equip. Plug-in für EZbooking version 3.2. Artisan Global Software

Python SVN-Revision 12

Debian Installationstools

Softwareinstallation unter Linux

SFTP SCP - Synology Wiki

Paketmanagement. Alexander Günther gpg:0xebe4a38a. 16. Dezember UnFUG

Benutzer und Rechte Teil 1

Version 0.3. Installation von MinGW und Eclipse CDT

Wörterbücher von MS nach Ooo konvertieren

BartPE. Dokumentation. Projektarbeit Network Services. Dozent: Wolf-Fritz Riekert. Belmondo Kovac. Autor: Andreas Dinkelacker, 3.

Hex Datei mit Atmel Studio 6 erstellen

Migration Howto. Inhaltsverzeichnis

Installation der SAS Foundation Software auf Windows

INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Technische Aspekte von Custom Debian Distributions

Rillsoft Project - Installation der Software

COSIDNS 2 ISPconfig3. Version 0.1 ( )

visionapp Base Installation Packages (vbip) Update

Nuetzlicher Kleinkram

Konfigurationsanleitung Access Control Lists (ACL) Funkwerk. Copyright Stefan Dahler Oktober 2008 Version 1.0.

Installation der Eicon Diva PCI Karte unter Windows XP

Installation mit Lizenz-Server verbinden

Patch Management mit

Debian Pakete bauen. Eine kurze Einführung. Sebastian Harl. 12. März

- Installation. Systemvoraussetzungen für Debian/Ubuntu. conversations installieren conversations wird als TGZ-Archiv mit dem Namen

Hardware - Software - Net zwerke

Updatehinweise für die Version forma 5.5.5

Erstellen eines Screenshot

Professionelle Seminare im Bereich MS-Office

Der Kalender im ipad

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Anleitung zur Webservice Entwicklung unter Eclipse

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Was ist PDF? Portable Document Format, von Adobe Systems entwickelt Multiplattformfähigkeit,

Alle Informationen zu Windows Server 2003 Übersicht der Produkte

Internet Explorer Version 6

Windows 8. Der Task-Manager. Dieses Dokument kann frei verwendet werden. Keine Lizenzen, kein Copyright. Do what you want with it.

DISTRIBUTION / MARKETING

Installationshinweise für Serverbetrieb von Medio- Programmen

VNUML Projektpraktikum

Übung: Verwendung von Java-Threads

This manual cannot be redistributed without permission from joomla-monster.com or vorlagenstudio.de

Die Bundes-Zentrale für politische Bildung stellt sich vor

Installation des OpenVPN Clients

Oracle APEX Installer

Technische Analyse der Zukunft

Anleitung zum erstellen einer PDF-Datei aus Microsoft Word

IT-SICHERHEIT IM UNTERNEHMEN Mehr Sicherheit für Ihre Entscheidung

Jahresabschluss Finanzbuchhaltung INGARA. Provisorisch und Definitiv. INGARA Version

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

Eine Einführung in die Installation und Nutzung von cygwin

PHPNuke Quick & Dirty

Backup der Progress Datenbank

Anleitung für die Umstellung auf das plus Verfahren mit manueller und optischer Übertragung

Visual Basic Express Kompilieren mit Skripten

AUTOMATISCHE -ARCHIVIERUNG. 10/07/28 BMD Systemhaus GmbH, Steyr Vervielfältigung bedarf der ausdrücklichen Genehmigung durch BMD!

Installationsanleitung. Update ATOSS SES 2.40 für Windows ATOSS Server

Gibt Daten im erweiterten Format aus. Dies beinhaltet die Angabe von Zugriffsrechten, Besitzer, Länge, Zeitpunkt der letzten Änderung und mehr.

FAQ The FAQ/knowledge base. Version 2.1.1

Windows Server 2008 für die RADIUS-Authentisierung einrichten

PCC Outlook Integration Installationsleitfaden

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Gimp Kurzanleitung. Offizielle Gimp Seite:

TeamSpeak3 Einrichten

Installationsvoraussetzungen

Anleitung über den Umgang mit Schildern

Anwenderdokumentation PersoSim

Installation des Authorware Webplayers für den Internet Explorer unter Windows Vista

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Sie werden sehen, dass Sie für uns nur noch den direkten PDF-Export benötigen. Warum?

INHALT 1. INSTALLATION DES V-MODELL XT UNTER WINDOWS 7 2. INSTALLATION DES V-MODELL XT UNTER WINDOWS VISTA

Python Installation. 1 Vorbereitung. 1.1 Download. Diese Anleitung ist für Windows ausgelegt.

Was meinen die Leute eigentlich mit: Grexit?

Der zweite all unsere Datenbanken. Dieser Befehl ist etwas komplexer, aber bis auf das Passwort (kursiv fett) so zu übernehmen:

e-books aus der EBL-Datenbank

Beruflichen Schule in Nidda

mit dem TeXnicCenter von Andreas Both

Benutzer und Rechte Teil 1, Paketverwaltung, SSH

Folgende Voraussetzungen für die Konfiguration müssen erfüllt sein:

SJ OFFICE - Update 3.0

Blumen-bienen-Bären Academy. Kurzanleitung für Google Keyword Planer + Google Trends

Nicht über uns ohne uns

Studieren- Erklärungen und Tipps

RL

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Kontaktlinsen über die neue Website bestellen eine Kurzanleitung

Das neue Volume-Flag S (Scannen erforderlich)

So geht s Schritt-für-Schritt-Anleitung

Mediumwechsel - VR-NetWorld Software

Über die Internetseite Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

2.1 Briefkopf Klicken Sie im Menü Einstellungen auf den Button Briefkopf. Folgendes Formular öffnet sich:

MetaQuotes Empfehlungen zum Gebrauch von

Softwarelizenzen und Open Source

Transkript:

Debian-Packaging-Tutorial David Frey Copyright 2003 David Frey Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. The author(s) would appreciate a notification of modifications, translations, and printed versions. Thank you. 1

Motivation Wieso packagen? (1) Eine häufige Frage ist Wieso packagen? Ich kann doch gleich make install benutzen?. (Binary-)Packaging hat folgende Ziele: 1. Das Paket soll verteilbar und auf anderen Systemen installierbar sein. Die Abhängigkeiten des Pakets müssen bekannt sein. 2. Meta-Informationen für den Benutzer zu liefern (dpkg -I): was macht das Paket? welche anderen Pakete haben mit diesem einen Zusammenhang? Grösse desselben? Welche Files sind Konfigurationsfiles? 2

Motivation Wieso packagen? (2) Zur erfolgreichen Installation (z. B. mit dpkg -i) sind folgende Informationen nötig: 1. Zustand des zu installierenden Pakets (dpkg -s): { unknown, install, remove, purge, hold } 2. Zustand der anderen Pakete (dpkg -l): Was ist schon installiert? Welchen Zustand haben die anderen Pakete? 3. Was sind die Abhängigkeiten des gerade zu installierenden Pakets? 4. Kollidiert das Paket mit einem schon installiertem? 3

Motivation Wieso packagen? (3) Zusätzliche Informationen, die dem Paket-Manager (resp. dessen Front-End) bekannt sind: 1. Welche Pakete sind in welcher Distribution verfügbar? 2. Welche Pakete sind funktionell äquivalent? Virtual Packages 3. Welche Pakete sind essentiell für das Funktionieren des System? 4. Klassifikation des Pakets Diese Information wird bei Systemupgrades, Plausibilitätschecks und bei der Darstellung der Paketlisten verwendet. 4

Aufbau eines.deb-pakets Debian-Pakete sind (vereinfachte) ar-archive und können mit ar dargestellt und extrahiert werden. a Konstruiert werden sie allerdings von dpkg-deb [1], resp. dem Front-End dazu, dpkg [2]. $ar -t magicfilter_1.2-55_i386.deb debian-binary control.tar.gz data.tar.gz 1. debian-binary enthält Versionierungsinformationen. 2. control.tar.gz enthält eventuelle Checksummen, die Installationsskripts (prerm, postrm, preinst, postinst), die Configurationsfiles (conffiles), und das control-file (control). 3. data.tar.gz sind die Daten als komprimiertes Tar-Archiv. a Dies wird allerdings nur auf Plattformen gemacht, die kein installiertes dpkg besitzen, z. B. Sun Solaris 5

Files im debian-verzeichnis $ls debian/ changelog copyright postinst* prerm* substvars control menu postrm* rules* Installationsskripts (prerm, postrm, postinst) das control-file (control), das changelog und copyright-file, landet schlussendlich unter /usr/share/doc/$package, das rules-makefile, das macht die ganze Arbeit das menu-file für das Menü-System. Beschreibt den Menü-Eintrag (optional, falls sinnvoll) das doc-base-file für die Dokumentenregistrierung. Trägt das Dokument mit install-docs in die Debian-Dokumentenverwaltung ein (optional, falls sinnvoll) 6

debian/control (1) Das control-file [3] beinhaltet die Metadaten: control Source: magicfilter Build-Depends: dvips, netpbm pbmplus, pnmtopng, libjpeg-progs libjpeg-gif, libtiff-tools, groff, tetex-bin, transfig, recode, djtools, gs, enscript, bzip2, gzip (>= 1.2.4-33), xpdf-utils Section: text Priority: optional Maintainer: David Frey <dfrey@debian.org> Standards-Version: 3.5.5 Package: magicfilter Architecture: any Depends: $shlibs:depends, libpaperg, enscript Recommends: lpr lprng, gs, bzip2, gzip (>= 1.2.4-33), xpdf-utils Suggests: dvips, pbmplus netpbm, pnmtopng, libjpeg-progs libjpeg-gif, libtiff-tools, groff, tetex-bin, transfig, recode, djtools Conflicts: apsfilter, printfilters-ppd Description: automatic printer filter 7

debian/control (2) Welche Achitektur? Architecture: Welche Libraries wurden zum Compilieren in welchen Versionen verwendet? Depends: ${shlibs:depends} Welche Interpreter/Programme werden in welcher Version verwendet und müssen zwingend vorhanden sein? Depends: enscript Welche andere Programme werden im Normalfall verwendet (man kann die Programme weglassen, wenn man weiss, was man macht, z. B. bei magicfilter Einsatz eines PostScript-Druckers oder es wird nicht über lpr gedruckt)? Recommends: Welche andere Programme werden potentiell aufgerufen und sind vorteilhaft installiert? In welchen Versionen? Suggests: 8

debian/{post,pre}{inst,rm} Installationsskripts Die Installationsscripts machen die ganze Verwaltungsarbeit, z.b. das Paket beim Menu/Dokumenten-System registrieren. postinst #!/bin/sh -e # -*- shell-script -*- if test -x /usr/bin/update-menus; then update-menus fi cat<<eof Run \ magicfilterconfig if you want to have your printcap automatically generated or edit it by hand. EOF Das Wichtigste an den Skripts ist, dass sie idempotent ( beliebig oft erfolgreich aufrufbar). Input kann interaktiv von /dev/tty kommen, oder, mittlerweile bevorzugt, über debconf. 9

debian/rules (1) debian/rules ist ein Makefile, das dass Paket tatsächlich baut. Zuerst ein paar Variablendefinitionen: rules 1 #!/usr/bin/make -f 2 # -*- makefile -*- 3 4 # The name of the package 5 package := $(shell\ 6 sed -n -e s/package: *\([a-z]\)/\1/p \ 7 debian/control) 8 doc := usr/share/doc/$(package) 9 man := usr/share/man/man8 10 menu := usr/lib/menu 11 tmp := debian/tmp 12 13 CFLAGS = -O2 -Wall 14 LDFLAGS= 15 16 ifneq (,$(findstring debug,$(deb_build_options))) 17 CFLAGS += -g 18 else 19 LDFLAGS += -Wl,-s 20 endif 10

debian/rules (2) Wie baut man dieses Package? rules 21 build: 22./configure --prefix=/usr \ 23 --infodir=/usr/share/info \ 24 --mandir=/usr/share/man \ 25 --bindir=/usr/sbin && \ 26 make CFLAGS="$(CFLAGS)" \ 27 LDFLAGS="$(LDFLAGS)" \ 28 bindir=/usr/sbin && \ 29 touch build Wie räumt man es wieder auf? rules 30 clean: 31 -rm -f build 32 -$(MAKE) -i distclean \ 33 $(MAKE) -f Makefile.in distclean 34 -rm -rf *~ filters/*~ \ 35 $(tmp) debian/*~ \ 36 debian/files* 37 -rm -rf debian/tmp 11

debian/rules (3) Jedes debian/rules hat 2 Targets: binary-indep für architekturneutrale Sachen (typischerweise Dokumentation) und binary-arch für architekturabhängige Dinge. rules 38 binary-indep: build 39 # There are no architecture-independent files 40 # to be uploaded generated by this package. 41 # If there were any they would be made here. 42 43 binary-arch: build 44 -rm -rf $(tmp) 45 install -d $(tmp) 46 cd $(tmp) &&\ 47 install -d usr/sbin $(doc) $(man) \ 48 $(menu) etc/magicfilter 49 $(MAKE) install prefix=$(tmp)/usr \ 50 bindir=$(tmp)/usr/sbin \ 51 infodir=$(tmp)/$(info) \ 52 mandir=$(tmp)/$(man) 12

debian/rules (4) rules 53 ifeq (,$(findstring nostrip,$(deb_build_options))) 54 strip --remove-section=.comment \ 55 --remove-section=.note \ 56 --strip-unneeded \ 57 $(tmp)/usr/sbin/magicfilter 58 endif 59 install magicfilterconfig \ 60 $(tmp)/usr/sbin/magicfilterconfig 61 install -m 644 filters/readme* \ 62 $(tmp)/$(doc)/ 63 install -m 644 debian/menu \ 64 $(tmp)/$(menu)/$(package) 65 cd filters && \ 66 cp -p *-filter../$(tmp)/etc/magicfilter 67 cp debian/changelog \ 68 $(tmp)/$(doc)/changelog.debian 69 cd $(tmp)/$(doc) && \ 70 gzip -9f changelog.debian README* 71 cp debian/copyright $(tmp)/$(doc) 72 cp magicfilterconfig.8 $(tmp)/$(man) 73 gzip -9f $(tmp)/$(man)/* 13

debian/rules (5) Hier fängt der Debian-spezifische Directory/Packaging-Teil an: rules 74 dpkg-shlibdeps $(tmp)/usr/sbin/$(package) 75 install -d $(tmp)/debian 76 cd $(tmp) &&\ 77 md5sum find * -name DEBIAN -prune \ 78 -o -type f -print \ 79 > DEBIAN/md5sums 80 dpkg-gencontrol -isp 81 install -m 755 debian/prerm \ 82 debian/postrm \ 83 debian/postinst \ 84 $(tmp)/debian 85 cd filters && \ 86 ls -1 *-filter \ 87 sed -e s,^,/etc/magicfilter/, \ 88 >../$(tmp)/debian/conffiles 89 chmod 644 $(tmp)/debian/conffiles 90 chown -R root.root $(tmp) 91 chmod -R g-ws,og=rx $(tmp) 92 dpkg --build $(tmp).. 14

debian/rules (6) Folgende Targets werden von dpkg-buildpackage erwartet: rules 93 # Below here is fairly generic really 94 95 binary: binary-indep binary-arch 96 97 source diff: 98 @echo >&2 source and diff are obsolete \ 99 - use dpkg-source -b ; false 100 101.PHONY: binary binary-arch binary-indep clean Die Korrektheit bezüglich Policy kann mit lintian und linda überprüft werden. 15

Literatur [1] Debian Project. dpkg-deb. dpkg-deb(1). [2] Debian Project. dpkg. dpkg(8). [3] Debian Project. deb-control. deb-control(5). 16