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 #
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