\documentclass[11pt]{article}

\usepackage{ngerman}
\usepackage{isolatin1}
\raggedright


\newcommand{\cmd}[1]{\mbox{\texttt{#1}}}
\renewcommand{\_}{\raisebox{-1ex}{-}}

\title{Erstellung von Debianpaketen}
\author{Benedikt Wildenhain}

\begin{document}

\maketitle

\clearpage

\section{Debianpaket}
\begin{itemize}
\item (normalerweise vorkompilierte) Programme
\item Einfaches (De)Installieren
\item Einsatz in: Debian GNU/Linux, Debian GNU/Hurd, Progeny und Corel
\item Konkurrenz: rpm, tgz (bei Slackware)
\end{itemize}

\clearpage

\section{Warum Debianpakete?}

\begin{itemize}
\item Einfaches Deinstallieren
\item Berücksichtigung von Abhaengigkeiten
\item Einfaches Installieren der Pakete auf mehreren Systemen
\end{itemize}

\clearpage

\section{Herkömmlicher Weg}
\begin{itemize}
\item \cmd{tar xvzf Archivname.tar.gz}
\item \cmd{cd <neuesVerzeichnis>}
\item \cmd{./configure}
\item \cmd{make}
\item \cmd{make install}
\end{itemize}

\subsection{Nachteile}
\begin{itemize}
\item Deinstallation nur selten per \cmd{make uninstall} o.\,ä.
\item Alternative: Manuell löschen
\item benötigte Bibliotheken lassen sich nur durch (langwieriges)
Ausprobieren oder Lesen der Dokumentation (wenn vorhanden) herausfinden
\item Paketsystem der Distribution wird übergangen
\end{itemize}

\clearpage

\section{Debianpakete}
\begin{itemize}
\item Installation per \cmd{dpkg -i <Packetname>}
\item Deinstallation per \cmd{dpkg -r <Paketname>}
\item Mit Hilfe von \cmd{apt-get install <Paketname>} automatisches
Auf"|lösen der Abhängigkeiten
\end{itemize}

\clearpage

\section{Los geht's}

\subsection{Vorbereitung des Quelltext-Verzeichnisses}

\begin{itemize}
\item Entpacken: \cmd{tar xvzf <Archivname>.tar.gz}
\item Verzeichnisnamen ändern:
\cmd{mv <Verzeichnisname> <Programmname>-<Versionsnummer>}
\item In das Verzeichnis wechseln:
\cmd{cd <Programmname>-<Versionsnummer>}
\item Erstellung des Verzeichnisses \cmd{debian/} mit
Standardeinstellungen/-optionen \cmd{dh\_make -e email@adresse}
\item Datei debian/control anpassen
\item Ggf.\ Makefiles (wenn möglich debian/rules) anpassen: Installation
in debian/tmp, Lauffähigkeit auch in /usr/bin
\end{itemize}

\clearpage

Datei debian/control anpassen:
\begin{verbatim}
Source: Packetname
Section: admin, base, comm, contrib, devel, doc, editors, electronics, games,
  graphics, hamradio, interpreters, libs, mail, math, misc, net, news, non-US,
  non-free, oldlibs, otherosfs, science, shells, sound, tex, text, utils, web,
  x11
Priority: essential, required, important, standard, optional, extra
Maintainer: Vorname Nachname <debian@domain.de>
Build-Depends: debhelper (>> 3.0.0), Dependencies wie Libraries (nicht
make, gcc etc.)
Standards-Version: <Debianpolicyversion>, (/usr/share/doc/debian-policy/)

Package: <Packetname>
Architecture: any, all, i368, powerpc etc.
Depends: \${shlibs:Depends}
Description: <insert up to 60 chars description>
 <insert long description, indented with spaces>
...
\end{verbatim}

z.\,B.\ fuer Mailserver:
\begin{verbatim}
Conflicts: <mailserverOhneProvidesMTA>, mail-transport-agent
Replaces: mail-transport-agent
Provides: mail-transport-agent ??? (/usr/share/doc/debian-policy/virtual-package-names-list.text.gz)

Recommends: netbase
\end{verbatim}
\clearpage

Datei debian/changelog ergänzen:
\begin{verbatim}
Paket (Version) Distribution; urgency=low
  * <Vorgenommenen Veränderungen>

  * <Weitere Änderungen>
            
 -- Maintainer Name <Email Adresse>  <Datum>
\end{verbatim}
\clearpage

Datei debian/copyright anpassen
\begin{itemize}
\item "`Upstream Autor"' (Autor des eigentlichen Programmes)
\item evt.\ URL des Programms
\item Lizenz
\end{itemize}
\clearpage

Datei debian/README.Debian anpassen
\begin{itemize}
\item Besonderheiten des Debiapackets
\item Änderungen an Makefiles
\item Anpassung an Debiandateisystemhierachie
\end{itemize}
\clearpage

Maintainerskripte anpassen:
\begin{itemize}
\item Skripte müssen ausführbar sein und Interpreter in der ersten Zeile
enthalten
\item Externe Programme sollen ohne Pfadangabe und ohne Path aufgerufen werden
\item Mehrmaliges Ausführen darf keine Beschädigung des Systems verursachen
\item \cmd{debian/preinst} Ausführung vor der Installation
\item \cmd{debian/postinst} Ausführung nach der Installation
\item \cmd{debian/prerm} Ausführung vor der Deinstallation
\item \cmd{debian/postrm} Ausführung nach der Deinstallation
\end{itemize}
\clearpage

Weitere Informationen:
\begin{itemize}
\item \cmd{http://www.openoffice.de/linux/buch/debianpakete.html} Kurze
Anleitung zur Paketerstellung
\item \cmd{/usr/share/doc/maint-guide-de/} Ausführliche Anleitung zur
Paketerstellung
\item \cmd{/usr/share/doc/debian-policy/} Dokumentation der Debianstandards
\end{itemize}

\end{document}

