#Centos: Dépôt local yum {{INLINETOC}} Afin de pouvoir installer certaines paquets ne se trouvant pas dans les dépôts officiels et devant être alors téléchargés de façon manuelle on peut créer un dépôt local et s’en servir pour initialiser l’application en question. ## Installation du serveur ### Installation et configuration de NGINX S'il ne l'est pas déjà, installer , ``` yum install nginx ``` Configurer le démarrage automatique de nginx au boot ``` /sbin/chkconfig nginx on ``` Contrôler la configuration de nginx ``` nginx -t ``` Créer le fichier localyum.conf ``` vi /etc/nginx/conf.d/localyum.conf server { listen 8088; server_name localyum; # enable auto indexing for rpm location ~ ^/usr/share/nginx/html/repo/$ { try_files $uri $uri/ =404; autoindex on; autoindex_exact_size on; autoindex_localtime on; } # serve box(s) with specific header location ~ \.rpm$ { add_header Content-Type application/octet-stream; } } ``` Démarrer nginx ``` service nginx start ``` ### Configurer le mode permissif ``` setenforce 0 ``` ## Installation et configuration du serveur vsftpd Le serveur **vsftpd** permettra d'alimenter le dépôt local #Création du dépôt local ##Installer createrepo Créer un dépôt yum est facile et très simple. Pour ce faire, on utilise l'outil createrepo, qui peut être trouvé dans le paquet createrepo, donc pour l'installer, exécuter en tant que root: ``` yum install createrepo ``` ## Créer le référentiel Une fois le package installé, on peut commencer à créer le référentiel. Vous aurez également besoin de quelques paquets RPM pour créer le référentiel. ### Créer les dossiers Créer un l'arbre de répertoire approprié en utilisant les commandes suivantes: ``` mkdir -p /usr/share/nginx/html/repo/pub/Centos/6/{SRPMS,i386,x86_64} chmod 755 -R /usr/share/nginx/html/repo/pub ``` ### Peupler les répertoires avec les rpms Copier : * les paquets **i386** dans `/usr/share/nginx/html/repo/pub/Centos/6/i386`, * les paquets **%%x86\_64** dans `/usr/share/nginx/html/repo/pub/Centos/6/x86_64%%`, * les **SRPMS** dans `/usr/share/nginx/html/repo/pub/Centos/6/SRPMS`. ###Créer un script shell create-local-repo Pour automatiser facilement la création des métadonnées du référentiel, ``` cat <~/create-local-repo #!/bin/sh destdir="/usr/share/nginx/html/repo/pub/Centos/6" for arch in i386 x86_64 do pushd \${destdir}/\${arch} >/dev/null 2>&1 createrepo . popd >/dev/null 2>&1 done EOF ``` Rendre le script exécutable ``` chmod + x ~/create-local-repo ``` Chaque exécution de ce script va appeler l'outil createrepo sur les deux répertoires: `/usr/share/nginx/html/repo/pub/Centos/6/i386` et `/usr/share/nginx/html/repo/pub/Centos/6/x86_64`. ``` ~/create-local-repo Spawning worker 0 with 121 pkgs Workers Finished Gathering worker results Saving Primary metadata Saving file lists metadata Saving other metadata Generating sqlite DBs Sqlite DBs complete Spawning worker 0 with 121 pkgs ``` ### Planifier l'exécution automatique du script ``` crontab -e 00 */6 * * * /root/create-local-repo ``` #Paramétrage du dépôt chez les clients Si `/usr/share/nginx/html/` est la racine FTP disponible, `ftp://ip-du-serveur/repo/pub/Centos/6/i386`serait l'URL de téléchargement pour les paquets i386. Pour le rendre disponible aux autres systèmes client, créer un fichier de configuration du référentiel **yum** appelé `/etc/yum.repos.d/my.repo` avec le contenu suivant: ``` [myrepo] name=My Repository baseurl=ftp://ip-du-serveur/repo/pub/Centos/6/$basearch enabled=1 ``` Ce fichier peut être utilisé sur les clients **i386** et **x86\_64** en raison du spécificateur **$basearch**. Il sera activé la prochaine fois que **yum update** sera exécuté.