Accueil > Linux & Logiciels Libres > Mises à jour Linux sans accès internet
1530 visites

Mises à jour Linux sans accès internet

samedi 31 décembre 2011 (), par Vader[FR]

Comment mettre à jour les modules lorsque ceux-ci ont des dépendances qui ont des dépendances qui.... et ainsi de suite, parfois de manière complexe lorsqu’un paquet A à besoin d’un paquet B, lequel a besoin....du paquet A.

Dès lors, il est préférable d’utiliser YUM ou PackageKit (l’outil graphique).
YUM est disponible sur les distributions issues de RedHat (Fedora, CentOs, etc). Les distributions issues de Debian (Mandriva, Ubuntu...) utilisent apt-get.

YUM a besoin de dépôts. Il suffit "tout simplement" de

  • télécharger tous les paquets disponibles, quitte à faire le ménage ensuite
  • créer des dépôts avec ces paquets
  • configurer YUM pour qu’il utilise ces dépôts.
  • pour un dépôt accessible en intranet, configurer le serveur web pour partager le dépôt

I) Téléchargement des paquets.

  • aller sur le dépôt en mode web
  • enregistrer la page html (ctrl-s, menu fichier, enregistrer sous..)
  • avec un éditeur de texte (gedit, notepad++...), faire rechercher et remplacer dans le fichier pour remplacer le début de ligne (le <td ... jusqu’à "<a href=") par "wget -c " ou "wget ", et la fin du lien (</a>) par " ; echo ", puis effacer les lignes de titres, de dossier parents, ainsi que les balises html, head et body

wget télécharge le fichier. l’option -c permet, si le serveur en est capable (ce qui est souvent le cas des dépôts officiels) de reprendre le téléchargement où il s’était arrêté.
la commande echo permet d’ignorer le contenu de la fin de ligne, qui change à chaque fois et serait assez compliqué à effacer, à moins de maîtriser sed ou awk. Du coup, on termine la commande précédente (le wget) avec " ;" puis on affiche la suite avec "echo "

l’option -nv (non verbeux) du wget permet de n’avoir que les informations essentielles.

On peut supprimer la commande echo avec un rechercher/remplacer basé sur une expression régulière.
.rpm" ; echo.*$, c’est à dire ".rpm ; echo" suivi de n’importe quel caractère (.) dans n’importe quelle quantité (*) jusqu’à la fin de la ligne ($), sera alors remplacé par .rpm"

Attention : ne pas oublier dans le rechercher/remplacer l’espace après les commandes wget et echo

  • rendre le fichier ainsi altéré exécutable puis le lancer dans un terminal

Tous les paquets vont alors se télécharger dans le répertoire local.
Avec l’option "-c" du wget, il est possible de faire le téléchargement en plusieurs fois, il reprendra où il s’était arrêté.

Pour automatiser la procédure de téléchargement, notamment avec les dépôts récents divisés par première lettre de paquet, il suffit d’utiliser ce petit script.

II) Création des dépôts

Il suffit pour cela d’exécuter la commande "createrepo" sur chacun des dossiers contenant les paquets.
A chaque mise à jour du dépôt (ajout/suppression de paquet), il faudra relancer la commande.

Il est possible de faire un dépôt "de base" et un "mise à jour" pour chaque architecture de paquet : 32 bits, (i386 / i586 / i686), noarch, et 64 bits (x86_64).
Cela fait moins de paquets à lister à chaque fois, ce qui n’est pas plus mal.

III) Configuration de YUM

  • enlever les fichiers .repo des dépôts internet, situés dans /etc/yum.repos.d
  • créer autant de fichiers .repo que de dépôts locaux existants :

Contenu d’un fichier .repo pour un dépôt local sur le serveur :

[Fedora_local_32] nom du dépôt pour yum
name=Fedora $releasever - 32 bits nom pour l’utilisateur
baseurl=file :///Depots/Fedora/14/i686/ adresse du dépôt
enabled=1 si yum peut utiliser ce dépôt ou non (1 = oui)
gpgcheck=0 pas de vérification d’intégrité des paquets avec une clé

Les variables d’environnement système $releasever et $basearch sont remplacés par la version de la distribution (release) et l’architecture.
On peut alors faire un fichier de configuration "générique" en les utilisant, si les dépôts correspondant existent.

  • Les paquets n’étant pas signés par le serveur, il faudra dans /etc/yum.conf mettre 0 pour gpgchek
  • nettoyer le cache de YUM afin qu’il charge les nouveaux dépôts par la commande "yum clean all"

IV) Dépôt intranet

  • enlever les fichiers .repo des dépôts internet, situés dans /etc/yum.repos.d
  • créer autant de fichiers .repo que de dépôts intranet existants :

Contenu d’un fichier .repo pour un dépôt de type intranet :

[fedora_monserveur_32] nom du dépôt pour yum
name=Fedora $releasever - 32 bits sur mon serveur nom pour l’utilisateur
baseurl=http://mon_serveur/repos/Fedora/14/i686/ adresse
enabled=1 si yum peut utiliser ce dépôt ou non (1 = oui)
gpgcheck=0 pas de vérification d’intégrité des paquets avec une clé

Les variables d’environnement système $releasever et $basearch sont remplacés par la version de la distribution (release) et l’architecture.
On peut alors faire un fichier de configuration "générique" en les utilisant, si les dépôts correspondant existent.

Les paquets n’étant pas signés par le serveur, il faudra dans /etc/yum.conf mettre 0 pour gpgchek

  • nettoyer le cache de YUM afin qu’il charge les nouveaux dépôts par la commande "yum clean all"
  • donner le droit de lecture et exécution (pour le répertoire repodata) à apache et au groupe apache
  • Créer un fichier .conf dans /etc/httpd/conf.d

Alias /mon_depot /chemin_local_de_mon_depot

<Directory /chemin_local_de_mon_depot/>
Order Allow,Deny
Allow from All
</Directory>

le dépôt sera alors atteignable sur http://mon_serveur/mon_depot.

Il suffit ici de partager la racine des dépôts. Les différents dépôts seront alors automatiquement partagés, il n’est pas besoin de spécifier explicitement qu’on souhaite partager les répertoires un à un.

Répondre à cet article

Total 436888 visites depuis 4633 jours | | SPIP | | Plan du site | Suivre la vie du site RSS 2.0