Table of Contents

Centos: Dépôt local yum

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 :

Créer un script shell create-local-repo

Pour automatiser facilement la création des métadonnées du référentiel,

    cat <<EOF >~/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/i386serait 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é.