Ceci est une ancienne révision du document !


Créer son propre dépot Debian

Il peut être tres pratique de créer son propre dépôt Debian.

Il existe pas mal de facons de faire et je vais vous présenter ici la manière que j'utilise au quotidien : Cette méthode utilise :

  • l'utilitaire apt-ftparchive
  • un pool de fichiers .deb par dépot
  • pour chaque dépot, le dépot suffixé de -test existe : il sert comme son nom l'indique a effectuer ajouter des paquets pas complètement testés.
  • le dépot est signé par une clef GPG

Ce dépot permet une installation aisée d'un ensemble de machine car il héberge des meta-packages installant un ensemble de logiciels (peut etre un jour un article la dessus).

Créer l'arborescence d'un dépot

Voici l'arborescence type de l'ensemble des depots :

./cache
./mirror/pool-lenny
./mirror/pool-lenny/custom
./mirror/pool-lenny/custom/binary-i386
./mirror/pool-lenny/custom/binary-amd64
./mirror/pool-lenny/custom/binary-all
./mirror/pool-lenny-test
./mirror/pool-lenny-test/custom
./mirror/pool-lenny-test/custom/binary-i386
./mirror/pool-lenny-test/custom/binary-amd64
./mirror/pool-lenny-test/custom/binary-all
./mirror/pool-hardy
./mirror/pool-hardy/custom
./mirror/pool-hardy/custom/binary-i386
./mirror/pool-hardy/custom/binary-amd64
./mirror/pool-hardy/custom/binary-all
./mirror/pool-hardy-test
./mirror/pool-hardy-test/custom
./mirror/pool-hardy-test/custom/binary-i386
./mirror/pool-hardy-test/custom/binary-amd64
./mirror/pool-hardy-test/custom/binary-all
./filelists
./filelists/dists
./filelists/dists/lenny
./filelists/dists/lenny-test
./filelists/dists/hardy
./filelists/dists/hardy-test

Comme on ne va pas créer cette arborescence a la main, voici un petit script permettant de créer/ajouter facilement un dépot :

#!/bin/bash
ARCHS="i386 amd64"
REPO_ROOT="/var/www/depots_deb"
MIRROR_ROOT="$REPO_ROOT/mirror/dists"
FILELISTS_DIR="$REPO_ROOT/filelists"

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:admin $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
sysadmin/debian_repository.1271750851.txt.gz · Dernière modification: 2010/04/20 10:07 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0