DepotLocal

De Wiki Dane (ex wikitice)
Aller à : navigation, rechercher

Présentation

Dès que vous disposez de plusieurs machines dans un réseau, il devient très utile de disposer d'un dépôt local (on peut dire aussi miroir local).

Ainsi, les machines du réseau se mettent à jour en local plutôt que sur Internet. Le dépôt, lui, peut être configuré pour se mettre à jour pendant la nuit, libérant ainsi de la bande passante lors de l'utilisation du réseau Internet dans la journée.

Un autre avantage est de pouvoir installer un Debian ou un Ubuntu par le réseau local uniquement en utilisant le démarrage PXE ; le téléchargement des paquets est nettement plus rapide et le système d'exploitation obtenu est directement à jour.

Pour pouvoir installer un dépôt il suffit de disposer d'un ordinateur avec un serveur Web (ou serveur HTTP) et un disque dur assez conséquent : 80 Go parait être une bonne solution suivant le nombre de versions que souhaitez mettre à disposition. Nous installerons un serveur Web et utiliserons les possibilités de la commande debmirror.

Nous considérerons donc que vous disposez d'un ordinateur dont le nom est alice (n'oubliez pas de l'enregistrer dans le dns local du Slis) avec Debian stable, ou Ubuntu Server.

Remarque : pour installer Debian sur cette machine, vous pouvez vous reporter à l'article Installer un serveur Debian de ce WikiTice.


Créer un dépôt local sous Ubuntu ou Debian

La création du dépôt local se fait en cinq étapes :

  • installation d'un serveur HTTP : Apache
  • installation d'un logiciel de gestion d'un miroir : debmirror
  • création des répertoires du dépôt local
  • création d'un script de mise à jour du dépôt local
  • programmation de la mise à jour du dépôt local


Installation de Apache

Une fois votre serveur installé, l'installation d'un serveur HTTP (on peut dire aussi serveur Web) se fait très simplement par la commande suivante :

aptitude install apache2
sudo aptitude install apache2


Installation de debmirror

Cette étape est tout aussi simple que la précédente à l'aide de la commande suivante :

aptitude install debmirror
sudo aptitude install debmirror


Création des répertoires qui hébergeront le dépôt

Par défaut, le serveur Apache pointe vers /var/www. Nous utiliserons ce répertoire bien qu'il soit possible de mettre le dépôt n'importe où.

L'arborescence sera la suivante :

Diagramme1.png

Créez les répertoires (mkdir) à l'aide des commandes suivantes :

mkdir -p /var/www/depot/ubuntu
mkdir -p /var/www/depot/debian


Création du script de mise à jour

Écrivez un script mise_a_jour_ubuntu dans le répertoire /usr/local/sbin en créant un tel fichier par la commande :

nano /usr/local/sbin/mise_a_jour_ubuntu

Copiez le contenu suivant puis enregistrez le fichier (Ctrl+O) et quittez l'éditeur (Ctrl+X).

  1. #!/bin/bash -x
  2. # L'option -x permet une exécution en mode debuggage, utile pendant la mise au point du script. 
  3. # Veiller à l'enlever lorsque le script fonctionne.
  4.  
  5. #Définition des variables
  6. hote="fr.archive.ubuntu.com"
  7. racine="ubuntu/"
  8. methode="rsync"     # rsync semble fonctionner maintenant et est plus économe en bande passante
  9.                     # au choix ftp|hftp|http|rsync
  10.  
  11.                     # Mettre ici toutes les distributions que vous souhaitez. 
  12.                     # Au 13 novembre 2008, on pourrait mettre
  13. distribution="hardy,hardy-updates,hardy-security,intrepid,intrepid-updates,intrepid-security,jaunty,jaunty-updates,jaunty-security"
  14.                     # Lorsque Jaunty sera stable, il suffira d'enlever Intrepid du script et le dépôt sera nettoyé
  15.                     # distribution="hardy,hardy-updates,hardy-security"
  16. sections="main,multiverse,universe,restricted"
  17.                     # Si le dépôt doit servir à une installation de la distribution via un boot PXE, il faut ajouter 
  18.                     # « main/debian-installer » à « section ». 
  19.                     # sections="main,multiverse,universe,restricted,main/debian-installer"
  20. cible="/var/www/depot/ubuntu/"
  21. architecture="i386" # ajouter d'autres architectures séparées par des virgules si nécessaire
  22.                     # « i386,amd64 »
  23.  
  24. #Commande pour synchroniser le mirroir avec Ubuntu
  25. /usr/bin/debmirror --nosource --passive --host=$hote \
  26.         --root=$racine --method=$methode --progress --dist=$distribution \
  27.         --ignore-release-gpg --section=$sections \
  28.         --arch=$architecture $cible

Écrivez de même un script mise_a_jour_debian dans le répertoire /usr/local/sbin en créant un tel fichier par la commande :

nano /usr/local/sbin/mise_a_jour_debian

Copiez le contenu suivant puis enregistrez le fichier (Ctrl+O) et quittez l'éditeur (Ctrl+X).

  1. #!/bin/bash -x
  2. # L'option -x permet une exécution en mode debuggage, utile pendant la mise au point du script.
  3. # Veiller à l'enlever lorsque le script fonctionne.
  4.  
  5. #Définition des variables pour Debian
  6. hote="ftp.fr.debian.org"
  7. racine="debian/"
  8. methode="rsync"     # rsync semble fonctionner maintenant et est plus économe en bande passante
  9.                     # au choix ftp|hftp|http|rsync
  10. distribution="squeeze,squeeze-updates,squeeze-proposed-updates"
  11. sections="main,contrib,non-free"
  12.                      # Si le dépôt doit servir à une installation de la distribution via un boot PXE, il faut ajouter 
  13.                      # « main/debian-installer » à « section ». 
  14.                      # sections="main,main/debian-installer,contrib,non-free"
  15. cible="/var/www/depot/debian/"
  16. architecture="i386" # ajouter d'autres architectures séparées par des virgules si nécessaire
  17.                     # « i386,amd64 »
  18.  
  19. #Commande pour synchroniser le mirroir avec Debian
  20. /usr/bin/debmirror --nosource --passive --method=$methode \
  21. --root=$racine --dist=$distribution --host=$hote \
  22. --section=$sections --arch=$architecture $cible \
  23. --getcontents --ignore-release-gpg --progress
  24. # Une fois le script validé, il est possible d'enlever l'option « -- progress »
  25. # Cette option ne servira plus une fois le script lancé en tâche journalière.
  26. # Cette option ne sert qu'à visualiser la progression du script.

Une fois créés, il s'agit de rendre les scripts exécutables (chmod) à l'aide des commandes suivantes :

chmod ug+x /usr/local/sbin/mise_a_jour_ubuntu
chmod ug+x /usr/local/sbin/mise_a_jour_debian

Et pour tester les scripts, il suffit de les lancer avec les commandes suivantes :

mise_a_jour_ubuntu
mise_a_jour_debian

Remarque 1 : une fois les scripts validés, il est possible d'enlever l'option -x qui ne sert que pour le debugage et l'option « -- progress » qui ne servira plus une fois les scripts lancés en tâche journalière. Cette dernière option ne sert qu'à visualiser la progression des scripts.


Remarque 2 : Les scripts ci-dessus sont à adapter en fonction des versions des clients Ubuntu ou Debian de votre réseau.

Programmer l'exécution quotidienne du script

La programmation du script mise_a_jour_debian se fait à l'aide de l'utilitaire crontab en lançant la commande suivante :

crontab -e

Pour une mise à jour chaque jour à 2h du matin  il suffit d'ajouter la ligne suivante :

0 2 * * * /usr/local/sbin/mise_a_jour_debian

Enregistrez puis quittez l'utilitaire crontab.

Remarque : vous rajouterez aussi une ligne semblable pour le script mise_a_jour_ubuntu, en le programmant à un horaire différent évidemment ;-)

Vous pouvez ensuite vérifier que tout s'est bien passé en consultant les fichiers de log : /var/log/syslog (ou éventuellement /var/log/syslog.1).

tail /var/log/syslog
tail /var/log/syslog.1

Utilisations du dépôt local

Nous vous présentons ici 3 utilisations d'un dépôt local :

* mise à jour des clients
* installation d'application
* installation d'un système d'exploitation Debian ou Ubuntu


Mise à jour d'un client

Pour mettre à jour un client, Debian ou Ubuntu, à l'aide du dépôt local, il suffit de modifier le fichier /etc/apt/sources.list du client.

Dans ce qui suit, le serveur servant de miroir local est supposé avoir un enregistrement dns local avec le nom alice (vous êtes bien entendu libre de choisir le nom qui vous semble le plus approprié ;-) ).

Sur un client Ubuntu, sauvegardez son sources.list (mv) à l'aide de la commande suivante :

mv /etc/apt/sources.list /etc/apt/sources.list.old

Éditez un nouveau /etc/apt/sources.list (commande nano /etc/apt/sources.list) et y mettre, dans le cas d'un client Ubuntu Hardy, les lignes suivantes :

deb http://alice/depot/ubuntu hardy main universe multiverse restricted
deb http://alice/depot/ubuntu hardy-updates main universe multiverse restricted
deb http://alice/depot/ubuntu hardy-security main universe multiverse restricted

Pour un client Debian Squeeze, faites de même avec les lignes suivantes :

# deb http://ftp.fr.debian.org/debian/ squeeze main

#deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free
# deb-src http://ftp.fr.debian.org/debian/ squeeze main
## dépot local
deb http://alice/depot/debian/ squeeze main crontrib non-free

deb http://security.debian.org/ squeeze/updates main contrib non-free
# deb-src http://security.debian.org/ squeeze/updates main

# squeeze-updates, previously known as 'volatile'
#deb http://ftp.fr.debian.org/debian/ squeeze-updates main contrib non-free
# deb-src http://ftp.fr.debian.org/debian/ squeeze-updates main
## dépot local
deb http://alice/depot/debian/ squeeze-updates main crontrib non-free

Enregistrez (Ctrl+O) puis quittez l'éditeur (Ctrl+X).

Prenez ensuite en compte ces changements à l'aide de la commande suivante :

aptitude update

Et pour effectuer une mise à jour manuelle, la commande est :

aptitude upgrade

Remarque : le mieux est de programmer une mise à jour automatique.

Installer une application

Si vous souhaitez installer une application qui ne figure pas dans les applications installées nativement, une simple commande le permet (à condition évidemment que le paquet correspondant fasse parti de l'ensemble des paquets proposés dans les miroirs Debian ou Ubuntu…).

Il est bien sûr important d'avoir modifié le fichier /etc/apt/sources.list comme cela est indiqué ci-dessus.

Par exemple, mettons que vous souhaitiez installer vlc. La commande est :

aptitude install vlc


Installer Debian par le démarrage PXE

Pour mettre en œuvre cette méthode, il est nécessaire de disposer d'un serveur TFTP, ce qui est le cas si vous avez un serveur SE3 : consultez l'article consacré au module TFTP de ce serveur.

Un article sur le site SambaEduVersailles vous donnera plus de détail sur la mise en place d'une entrée "installation Debian" dans votre menu du serveur TFTP.

Remarque pour Debian : pour mettre en œuvre cette méthode, il est important que la section /main/debian-installer soit présente dans votre dépôt local : à vérifier dans le script mise_a_jour_debian.


Il est assez simple d'adapter cet article pour installer une distribution Ubuntu.


Ressources

Quelques ressources possibles :

help.ubuntu.com/community/Debmirror

Faire un miroir local debian avec debmirror

Le man de debmirror