Aller au contenu

Dépôt de paquets Linux en local

·
respository linux Redhat
Jérémy Norgol
Auteur
Jérémy Norgol
Consultant ingénieur Linux Devops

On a toujours besoin rapidement d’un peu de couleur pour visualiser son code. Ci dessous une fonction avec un code couleur selon le type de message.

CentOS
#

Créer son propre dépôt de paquet sous CentOS à partir d’un .iso
#

Pour monter l’iso dans un répertoire

mkdir /mnt/iso
mount -o loop,ro CentOS*.iso /mnt/iso

Accès au repo en local
#

Sous Centos, créer votre fichier de configuration de repo:

cat << EOF > /etc/yum.repos.d/CentOS-Local.repo
[Local]
name=Local Repo
baseurl=file:///mnt/iso
enabled=1
gpgcheck=0

EOF

Ensuite mettre à jour la liste de dépôts.

yum repolist

Une définition de dépôt avec authentification des sources.

cat << EOF > /etc/yum.repos.d/CentOS-Local.repo
[Local]
name=Local Repo
baseurl=file:///mnt/iso
enabled=1
gpgcheck=1
gpgkey=file:////mnt/iso/RPM-GPG-KEY-CentOS-7

EOF

Ou télécharger le repo en local
#

  • Plan A (Fichier ISO)

Copier le contenu du DVD dans /var/www/html/repo/CentOS/7/os/x86_64.

  • Plan B

Sur le repository officiel directement : CentOS Mirror Petite astuce si vous rechercher juste pour un paquet en particulier par exemple nmap:

  • Avec Google en recherchat ainsi: site:mirror.centos.org/ nmap
  • Avec la recherche du site pkgs.org
mkdir -p /var/www/html/repo/CentOS/7/os/x86_64
cd /mnt/iso
tar cvf - . | (cd /var/www/html/repo/CentOS/7/os/x86_64; tar xvf -)
  • Plan B #Ubuntu

Mise à jour des métadonnées:
#

Pour CentOs on utilise la commande createrepo --update:

Bon cette commande peut être loooonnnngguueee pour les gros volumes de repo. Du coup je vous partage un petit script qui ne prend que quand il y a des changement de paquets à certains endroit:

#!/bin/bash

#Script de mise à jour des repository Linux basé sur la détection des réprtoires nommés 'Packages'

# VARIABLE
REPOSITORY_DIR="/data/repository"

# MAIN
if [ $UID -ne 0 ]; then
   echo "Vous devez être root pour exécuter ce programme."
   exit 1
fi

echo "[$REPOSITORY_DIR] - Application des droits 750(directory)"
find $REPOSITORY_DIR -type d ! -perm 750 -exec chmod 750 {} \;

echo "[$REPOSITORY_DIR] - Application des droits 640(files)"
find $REPOSITORY_DIR -type f ! -perm 640 -exec chmod 640 {} \;

echo "[$REPOSITORY_DIR] - Application des droits root:www-data"
chown root:www-data $REPOSITORY_DIR -R

find /data -name 'Packages' -exec dirname {} \;> /tmp/packages-list
while read PACKAGEDIR
do
   echo "[$PACKAGEDIR] - Mise à jour de l'indexation des packages "
   if [ "$(find "$PACKAGEDIR/Packages" -newer "$PACKAGEDIR/repodata/repomd.xml" -print -quit)" ]; then
        createrepo --update "$PACKAGEDIR"
   else
        echo "   Repertoire déjà à jour."
   fi
done < /tmp/packages-list

Pour plus d’éléments sur la gestion de repository: François Goffinet

Ubuntu
#

Mise à jour des métadonnées
#

Version béta: Script non maintenu. Utiliser les élements en vérifiant le bon fonctionnement dans votre environnement.
cd /repository/dists/

POOL_PACKAGES='../pool/'
#main | restricted | universe
SECTIONS=`ls $POOL_PACKAGES`
OS_VERSION="bionic"
ARCHITECTURES="binary-amd64 binary-i386"

echo "+-----------------------------------------------+"
echo "+      Scan et création des Packages            +"
echo "+-----------------------------------------------+"
cd "/repository/dists/"
for SECTION in $SECTIONS
do
    for ARCHITECTURE in $ARCHITECTURES
    do
        dpkg-scanpackages "$OS_VERSION/$SECTION/$ARCHITECTURE" /dev/null | gzip -9c > ./Packages.gz
    done
done

Articles connexes

Powershell - Message avec code couleur
code powershell
Python - Message avec code couleur
code python
Aide dans Red Hat Enterprise Linux
Redhat