samedi 31 décembre 2011 (), par
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
<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 bodywget 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
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.
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.
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.
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
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.