\documentclass{report}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{textcomp}
\usepackage{geometry}
\geometry{top=15mm, bottom=15mm, left=1cm, right=1cm}
\usepackage[french]{babel}
\usepackage{pslatex}
\usepackage[colorlinks=true,urlcolor=black]{hyperref}
\usepackage{graphicx}
\usepackage{fancyhdr}
\pagestyle{fancy}
\renewcommand{\footrulewidth}{0.4pt}
\fancyfoot[L]{Uubu.fr}
\fancyfoot[R]{lun. mars 15 19:03:25 CET 2010}
\lfoot{\Large \textit{Uubu.fr}}
\hypersetup{pdfinfo={
Title={debmirror},
Author={Sylvain Girod},
Creator={Bash script from uubu.fr's format version 1},
Producer={Bash script and PDFLaTeX},
Subject={Serveur de dépôt mirroir},
CreationDate={D:20100315190325},
ModDate={D:20100315190325},
Keywords={package manager;apt}
}}
\begin{document}
 
\begin{center}
{\Huge debmirror }
\end{center}
\vspace{1cm}
 
\begin{flushleft}
 
{\large Serveur de dépôt mirroir}
 
\vspace{10mm}
 
\hspace{1mm}  Un serveur mirroir, est une copie exacte d'un serveur de dépôt. Il peut être utile d'en créer si vous n'avez pas accès à Internet de manière permanente, ou pour limiter la bande passante consommées par l'installation de logiciels depuis Internet. Debmirror est un script qui permet de télécharger et maintenir un mirroir Debian. Il utilise ftp, http, hftp ou rsync.
\vspace{5mm} \\
 
 
\hspace{1mm}  Debmirror effectue 3 étapes:
\vspace{5mm} \\
 
 
\begin{description} \normalsize
\item[\hspace{1mm} 1.]{Téléchargement des paquets et des sources}
\item[\hspace{1mm} 2.]{nettoyage des fichiers inconnus}
\item[\hspace{1mm} 3.]{les paquets et sources sont scannés pour construire une liste.}
\end{description}
 
\vspace{1cm}{\huge OPTIONS }
 
\
 
\begin{description} \normalsize
\item[\hspace{1mm} --mirrordir]{emplacement ou seront placé les paquets}
\item[\hspace{1mm} --debug]{mode débugage}
\item[\hspace{1mm} --progress, -p]{affiche une barre de progressions pendant le téléchargement}
\item[\hspace{1mm} --verbose, -v]{mode verbeux}
\item[\hspace{1mm} --source]{inclure les sources dans le miroir (défaut)}
\item[\hspace{1mm} --nosource]{ne pas inclure les sources}
\item[\hspace{1mm} --md5sums, -m]{utiliser md5sums pour déterminer si les fichiers sont correctes}
\item[\hspace{1mm} --passive]{télécharge en mode passif}
\item[\hspace{1mm} --host=remotehost, -h]{spécifie l'hôte distant (défaut : ftp.debian.org)}
\item[\hspace{1mm} --user=remoteusername, -u]{Spécifie l'utilisateur distant, utile pour les proxys}
\item[\hspace{1mm} --passwd=remoteuserpassword]{password de l'utilisateur}
\item[\hspace{1mm} --method=ftp|hftp|http|rsync, -e]{Méthode pour le téléchargement des paquets}
\item[\hspace{1mm} --proxy=http://user:pass@url:port/]{Serveur proxy a utiliser}
\item[\hspace{1mm} --timeout=seconds, -t]{timeout à utiliser pour les opérations réseau (défaut 300 sec)}
\item[\hspace{1mm} --root=directory, -r directory]{Spécifier le dossier sur l'hôte distant défaut "/debian"}
\item[\hspace{1mm} --dist=foo\texttt{[},bar,...\texttt{]}, -d foo]{spécifier la distribution (sarge, etch, lenny, sid)}
\item[\hspace{1mm} --section=foo\texttt{[},bar,...\texttt{]}, -s foo]{Spécifier la section défaut : main,contrib,non-free,main/debian-installer}
\item[\hspace{1mm} --arch=foo\texttt{[},bar,...\texttt{]}, -a foo]{Architecture, défaut : i386.}
\item[\hspace{1mm} --postcleanup]{nettoie le miroir local après le mirroring et uniquement s'il n'y a pas eu d'erreur}
\item[\hspace{1mm} --cleanup]{fait un nettoyage des fichiers et dossiers inconnus}
\item[\hspace{1mm} --nocleanup]{ne nettoie pas le miroir local}
\item[\hspace{1mm} --ignore=regex]{ne jamais télécharger de fichier dont les noms de fichiers correspondent à regex, peut être spécifié plusieurs fois}
\item[\hspace{1mm} --exclude-deb-section=regex]{ne jamais télécharger de fichier dont la section correspond à regex [games, doc, oldlibs, science,...] peut être spécifié plusieurs fois}
\item[\hspace{1mm} --limit-priority=regex]{limite le téléchargement dont la priorité correspond à regex [required, extra, optional, etc...]}
\item[\hspace{1mm} --include=regex]{ne pas exclure les fichiers correspondant à regex peut être spécifié plusieurs fois}
\item[\hspace{1mm} --skippackages]{ne pas re-télécharger les paquets et fichiers sources, utile si vous savez qu'ils sont à jour.}
\item[\hspace{1mm} --getcontents]{télécharge les fichiers Contents.arch.gz}
\item[\hspace{1mm} --max-batch=number]{télécharge jusqu'à max-batch nombre de fichiers et ignore le reste}
\item[\hspace{1mm} --rsync-batch=number]{télécharge jusqu'à max-batch nombre de fichiers avec chaque appel rsync}
\item[\hspace{1mm} --ignore-missing-release]{ne plante pas si un fichier Release manque.}
\item[\hspace{1mm} --ignore-release-gpg]{ne plante pas sir Release.gpg est manquant}
\item[\hspace{1mm} --dry-run]{mode simulation}
\item[\hspace{1mm} --rsync-options=options]{spécifier les options rsync alternatives à utiliser}
\item[\hspace{1mm} --ignore-small-errors]{n'indique pas les erreurs de type missing ou broken}
\item[\hspace{1mm} --pdiff=use|mirror|none]{si Release contient des entrées pour pdiff, debmirror va tenter de mettre a jour les fichiers sources et les paquets mais ne les inclu pas dans le mirroir.}
\end{description}
 
\hspace{1mm}  Debmirror utilise gpgv pour vérifier les Release et Release.pgp en utilisant par défaut /.gnupg/trustedkeys.gpg. Pour ajouter les bonnes clés, il faut les importer comme ceci : gpg --keyring /usr/share/keyrings/debian-archive-keyring.gpg --export | gpg --import ou télécharger les clé depuis le serveur : gpg --keyserver keyring.debian.org --recv-keys key ID cette key ID peut être trouvée dans le message d'erreur gpgv dans debmirror
\vspace{5mm} \\
 
 
\vspace{1cm}{\huge Installer un dépôt local }
 
\
 
\hspace{1mm} Un serveur web doit déjà exister (ex : apache) \\
\hspace{1mm} Création d'un utilisateur système dédié, dans le groupe du serveur web pour que ce dernier ait les accès \\
\hspace{1mm} \textbf{adduser --system --home /var/www/mirror --gid 33 --no-create-home mirror} \\
\hspace{1mm} puis on crée un répertoire pour stocker les fichiers \\
\hspace{1mm} \textbf{mkdir /var/www/mirror} \\
\hspace{1mm} \textbf{chown mirror:www-data ./mirror} \\
\hspace{1mm} \textbf{chmod u+rwx,g+rxs-w,o-rwx ./mirror} \\
\hspace{1mm} Installation des programmes nécessaires (inclure un serveur http ou ftp): \\
\hspace{1mm} \textbf{aptitude install debmirror debian-keyring} \\
\hspace{1mm} les opérations suivante sont à effectuer sous l'utilisateur mirror: \\
\hspace{1mm} \textbf{su mirror} \\
\hspace{1mm} récupération des clé \\
\hspace{1mm} \textbf{gpg --keyring /usr/share/keyrings/debian-role-keys.gpg --export | gpg --import gpg --keyring /usr/share/keyrings/debian-archive-keyring.gpg --export | gpg --import gpg --no-default-keyring -a --keyring /usr/share/keyrings/debian-archive-keyring.gpg --export 55BE302B | gpg --no-default-keyring --keyring /.gnupg/trustedkeys.gpg --import -} \\
\hspace{1mm} récupération des paquets (ici on ne récupère que la section debian-security) \\
\hspace{1mm} \textbf{debmirror --verbose --arch=i386,amd64 --dist=lenny/updates --source --method=rsync --host=mirror.ens-lyon.fr --root=:debian-security --section=main,contrib,non-free,main/debian-installer -ignore-release-gpg --cleanup /var/www/mirror/debian-security/} \\
\hspace{1mm} pour les clients utiliser dans /etc/apt/sources.list \\
\hspace{1mm} \textbf{deb http://server/mirror/debian-security lenny/updates main contrib non-free} \\
\hspace{1mm} \textbf{deb-src http://server/mirror/debian-security lenny/updates main contrib non-free} \\
 
\hspace{1mm} Exemple de fichier de lancement de debmirror
 
{\ttfamily
\# ! /bin/sh\\ ARGS=" --progress \textbackslash{}\\ --arch=i386,amd64 \textbackslash{}\\ --dist=lenny/updates \textbackslash{}\\ --source \textbackslash{}\\ --method=rsync \textbackslash{}\\ --host=mirror.ens-lyon.fr \textbackslash{}\\ --root=:debian-security \textbackslash{}\\ --section=main,contrib,non-free,main/debian-installer \textbackslash{}\\ --ignore-release-gpg \textbackslash{}\\ --cleanup \textbackslash{}\\ /var/www/mirror/debian-security/"\\ debmirror \$ARGS\\
}
\vspace{8mm}
 
\hspace{1mm}  Attention aux droits et faire un cron pour lancer périodiquement ce script.
\vspace{5mm} \\
 
\end{flushleft}
\end{document}
