From 0216d835bcff5352a0ed11f0f4bbbaaf92aaa119 Mon Sep 17 00:00:00 2001 From: "maxime.tertrais" Date: Mon, 14 Oct 2024 17:23:13 +0200 Subject: [PATCH] =?UTF-8?q?cr=C3=A9ation=20repo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Creation_repo/Creation_arbo_repo.sh | 94 +++++++++++++++++++++++ Creation_repo/Prerequis_repo.sh | 27 +++++++ Creation_repo/maj_repo.sh | 115 ++++++++++++++++++++++++++++ Deploiement_debian | 1 + 4 files changed, 237 insertions(+) create mode 100644 Creation_repo/Creation_arbo_repo.sh create mode 100644 Creation_repo/Prerequis_repo.sh create mode 100644 Creation_repo/maj_repo.sh create mode 160000 Deploiement_debian diff --git a/Creation_repo/Creation_arbo_repo.sh b/Creation_repo/Creation_arbo_repo.sh new file mode 100644 index 0000000..77cd624 --- /dev/null +++ b/Creation_repo/Creation_arbo_repo.sh @@ -0,0 +1,94 @@ +#!/bin/bash +#======================================================================= +# FILE: ~Creation_arbo_repo.sh +# USAGE: ./Creation_arbo_repo.sh "" +# DESCRIPTION: Création de l'arborescence de dossier nécessaire à la +# création et l'utilisation d'un dépôt interne pour les postes/serveurs +# tournant sous Debian. +# Si le premier argument est fourni, il est assigné à la variable DIST, +# qui représente le dépôt (par exemple, « buster », « bullseye »). +# Si le second argument est fourni, il est assigné à la variable SECTION, +# qui représente la section (par exemple, « main », « contrib »). +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# sources: http://wiki.drouet.eu/sysadmin/debian_repository +# NOTES: --- +# AUTHOR: Maxime Tertrais +# COMPANY: Operis +# CREATED: 09/10/2024 +# REVISION: --- +#======================================================================= +##Définition des variables +ARCHS="i386 amd64" #Spécifie les architectures prises en charge (32 bits i386 et 64 bits amd64) +REPO_ROOT="/var/www/depots_deb" #Racine du dépôt interne. +MIRROR_ROOT="$REPO_ROOT/mirror/dists" #Racine du miroir des distributions dans le dépô +FILELISTS_DIR="$REPO_ROOT/filelists" #Répertoire pour les listes de fichiers. + +#======================================================================= +##Définition des fonctions + +#======================================================================= +##Script + +if [ $# -lt 1 ] ; then + echo "" >&2 + echo "Usage: $0 depot section" >&2 + echo "" >&2 + echo "Cree l'arborescence nécessaire pour créer un depot avec la section souhaitée" >&2 + echo "Genere le fichier de configuration associé pour apt-ftparchive" >&2 + echo "" >&2 + exit 1 +fi + +# le premier argument specifie le depot +if [ -n "$1" ]; then + DIST=$1 + shift +fi + +# le deuxieme argument specifie la section +if [ -n "$1" ]; then + SECTION=$1 + shift +fi + +FTP_ARCHIVE_CONF_FILE="/etc/apt/apt-perso-${DIST}.conf" + +#creation de l'arborescence +DIR="" + for archi in $ARCHS; do + DIR="$DIR ${FILELISTS_DIR}/dists/${DIST} $REPO_ROOT/mirror/pool-${DIST}/$SECTION/binary-${archi} $MIRROR_ROOT/$DIST/$SECTION/binary-${archi}" + done + +DIR="$DIR $REPO_ROOT/mirror/pool-${DIST}/$SECTION/binary-all $MIRROR_ROOT/$DIST/$SECTION/binary-all" + +mkdir -p $DIR +chown root:sudo $DIR +chmod u=rwx,g=rwxs,o=rx,g+s $DIR +chmod g+ws $DIR + +# generation du fichier de configuration du depot +if [ -f $FTP_ARCHIVE_CONF_FILE ]; then + echo "Le fichier de conf $FTP_ARCHIVE_CONF_FILE existe deja : Abandon" >&2 + echo "Veuillez le compléter a la main (si vous voulez créer une nouvelle section dans un depot existant)" >&2 + echo "ou le supprimer avant de relancer ce script" >&2 + exit 1 +fi + +echo "APT::FTPArchive::Release::Origin \"Internal Repository\";" > $FTP_ARCHIVE_CONF_FILE +echo "APT::FTPArchive::Release::Label \"Internal tools\";" >> $FTP_ARCHIVE_CONF_FILE +echo "APT::FTPArchive::Release::Suite \"$DIST\";" >> $FTP_ARCHIVE_CONF_FILE +echo "APT::FTPArchive::Release::Codename \"$DIST\";" >> $FTP_ARCHIVE_CONF_FILE +echo "APT::FTPArchive::Release::Architecture \"$ARCHS\";" >> $FTP_ARCHIVE_CONF_FILE +echo "APT::FTPArchive::Release::components \"$SECTION\";" >> $FTP_ARCHIVE_CONF_FILE +echo "APT::FTPArchive::Release::Description \"Internal Repository\";" >> $FTP_ARCHIVE_CONF_FILE +echo "" >> $FTP_ARCHIVE_CONF_FILE +echo "Tree \"dists/$DIST\" {" >> $FTP_ARCHIVE_CONF_FILE +echo " Sections \"$SECTION\";" >> $FTP_ARCHIVE_CONF_FILE +echo " Architectures \"$ARCHS\";" >> $FTP_ARCHIVE_CONF_FILE +echo " Directory \"pool-$DIST/\$(SECTION)/binary-\$(ARCH)\";" >> $FTP_ARCHIVE_CONF_FILE +echo " SrcDirectory \"pool-$DIST/\$(SECTION)/source\";" >> $FTP_ARCHIVE_CONF_FILE +echo "}" >> $FTP_ARCHIVE_CONF_FILE + diff --git a/Creation_repo/Prerequis_repo.sh b/Creation_repo/Prerequis_repo.sh new file mode 100644 index 0000000..40d4684 --- /dev/null +++ b/Creation_repo/Prerequis_repo.sh @@ -0,0 +1,27 @@ +#!/bin/bash +#======================================================================= +# FILE: ~maj_repo.sh +# USAGE: ./maj_repo.sh "" +# DESCRIPTION: met a jour le depot debian cible passé en argument +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# sources: http://wiki.drouet.eu/sysadmin/debian_repository +# NOTES: --- +# AUTHOR: Maxime Tertrais +# COMPANY: Operis +# CREATED: 09/10/2024 +# REVISION: --- +#======================================================================= +##Définition des variables + +#======================================================================= +##Définition des fonctions + +#======================================================================= +##Script + +# Installation GPG +apt-get install gnupg +gpg --gen-key diff --git a/Creation_repo/maj_repo.sh b/Creation_repo/maj_repo.sh new file mode 100644 index 0000000..7b16b5e --- /dev/null +++ b/Creation_repo/maj_repo.sh @@ -0,0 +1,115 @@ +#!/bin/bash +#======================================================================= +# FILE: ~maj_repo.sh +# USAGE: ./maj_repo.sh "" +# DESCRIPTION: met a jour le depot debian cible passé en argument +# +# OPTIONS: --- +# REQUIREMENTS: --- +# BUGS: --- +# sources: http://wiki.drouet.eu/sysadmin/debian_repository +# NOTES: --- +# AUTHOR: Maxime Tertrais +# COMPANY: Operis +# CREATED: 09/10/2024 +# REVISION: --- +#======================================================================= +##Définition des variables +DISTS=" bookworm " # adapter ala liste des depots que vous possédez +REPO_ROOT="/var/www/depots_deb" +MIRROR_ROOT="$REPO_ROOT/mirror/dists" +GPG_HOME="/root/.gnupg" +FILELISTS_DIR="$REPO_ROOT/filelists" +ARCH_LIST="i386 amd64 all" + +#======================================================================= +##Définition des fonctions + +#======================================================================= +##Script +# vérification si le nombre d'arguments passés est suffisant +if [ $# -lt 1 ] ; then + echo "" >&2 + echo "Usage: $0 [ all|etch|unstable|... ] [ test ]" >&2 + echo "" >&2 + echo "Mise à jour du ou des dépots (all) spécifié en premier argument." >&2 + echo "Un seul dépot peut-être spécifié à la fois." >&2 + echo "" >&2 + echo "Si le deuxième argument est 'test', " >&2 + echo "la mise à jour se fait sur les dépots de test" >&2 + echo "" >&2 + exit 1 +fi + +# Traitement du premier argument - depot à mettre à jour +if [ -n "$1" ]; then + ONLY_DIST="" + tmp_sec=$1 + shift + + for i in ${DISTS} + do + if [ "X$i" = "X$tmp_sec" ]; then + ONLY_DIST=$i + break + fi + done + + if [ "X$tmp_sec" = "Xall" ]; then + ONLY_DIST=${DISTS} + fi + + if [ -z "${ONLY_DIST}" ]; then + echo "ERREUR: depot invalide $tmp_sec" >&2 + exit 1 + fi + + DISTS=${ONLY_DIST} +fi +# Traitement du deuxième argument - depots de prod ou de test +DIST_SUFFIX="" +if [ "X$1" == "Xtest" ]; then + DIST_SUFFIX="-test" + shift +fi + +# Boucle principale pour chaque distribution +for DIST in $DISTS +do + DIST="${DIST}${DIST_SUFFIX}" + FTP_ARCHIVE_CONF_FILE="/etc/apt/apt-perso-${DIST}.conf" + + rm -f $REPO_ROOT/cache/*db + + # generation des filelist des depots + cd $REPO_ROOT/mirror + for section in `ls pool-${DIST}` + do + for archi in $ARCH_LIST; + do + if [ "x${archi}" = "xall" ]; then + continue + fi + mkdir -p ${FILELISTS_DIR}/dists/${DIST} + echo "Section : ${section}" + echo "Arch : ${archi}" + FILELIST="${FILELISTS_DIR}/dists/${DIST}/${section}-${archi}.filelist" + echo "filelist : $FILELIST" + find pool-${DIST}/$section/binary-${archi} pool-${DIST}/$section/binary-all -name "*.deb" > \ + ${FILELISTS_DIR}/dists/${DIST}/${section}-${archi}.filelist + done + + done + echo "generation apt ftp archive :" + apt-ftparchive generate ${FTP_ARCHIVE_CONF_FILE} + echo "creation du fichier Release :" + # creation des fichiers Release + RELEASE_FILE="${MIRROR_ROOT}/${DIST}/Release" + apt-ftparchive -c $FTP_ARCHIVE_CONF_FILE release \ + ${MIRROR_ROOT}/${DIST}/ > $RELEASE_FILE + + # signature gpg des fichiers Release + rm -f $RELEASE_FILE.gpg + ${DEBUG} gpg --verbose --homedir ${GPG_HOME} -ba \ + --output $RELEASE_FILE.gpg $RELEASE_FILE +done \ No newline at end of file diff --git a/Deploiement_debian b/Deploiement_debian new file mode 160000 index 0000000..15fcf9c --- /dev/null +++ b/Deploiement_debian @@ -0,0 +1 @@ +Subproject commit 15fcf9c81c8a979c0f8d47523821768180fd61ad