Re: depot de paquet en local usr hd USB pour utilisation offline

Jean-Daniel Dubois <[email protected]> Mon, 15 Jun 2026 09:06:30 +0200
Newsgroups gmane.linux.debian.user.french
Message-ID <[email protected]>
Le 14/06/2026 à 00:14, Jack Sparrow a écrit :
> bonjour,
>
> je suis a la recherche d'un bon tuto pour faire un depot apt local sur
> un hd usb pour une utilisation offline
>
> l'objectif est de pouvoir installer les paquet et donc des logiciel
> sans connecter l'ordinateur a internet
>
Bonjour,

Pour installer/mettre à jour des postes locaux en économisant la bande 
passante ou sans connexion internet, j’utilise un dépôt-miroir local 
copié sur disque externe. J’ai un certain nombre de scripts pour gérer 
tout ça et j’ai toujours en projet de documenter ça sur mon wiki, mais 
je n’ai pas trop trouvé le temps de le faire 
(https://jddubois.ouvaton.org/wiki/).

Le principe est d’avoir une machine «master» (physique ou virtuelle) qui 
est installée avec tous les paquets sélectionnés comme utiles. 
L’objectif est d’avoir un dépôt qui soit un miroir partiel de la 
distribution Debian, une mini-distribution en quelque sorte.

Quand j’étais administrateur système j’avais mis en place un dépôt de 
paquets locaux, complémentaires à Debian pour l’installation et la mise 
en place des postes de travail. J’ai un peu continué avec 
https://multiciel.ouvaton.org/debian/

Le dépôt sur disque local apporte des avantages :
- économie de bande passante dès qu’il y a plus d’un poste à 
installer/mettre à jour.
- le dépôt local est à jour des alertes de sécurité et des 
proposed-updates ou backports si utilisés (par exemple j’installe 
LibreOffice en version backports).

Évidemment, si le poste de destination est connecté à internet, il faut 
vérifier que les dépôts Debian, notamment security sont bien activés par 
la suite.

L’idée est de créer un pool de paquets à partir des paquets installés 
sur la machine :


#!/bin/bash
dirname=pool.`dpkg --print-architecture`
mkdir -p $dirname
#rm -rf $dirname/*
chmod a+rwX $dirname
cd $dirname
aptitude search '~i'|sed 's/^...//'|awk '{print $1}'|xargs apt-get download
cd ..
du -sch pool*

Ensuite je me suis inspiré de 
https://earthly.dev/blog/creating-and-hosting-your-own-deb-packages-and-apt-repo/

Il faut créer une autorité de certification qui va signer les dépots (et 
bien protéger la clé privée...)
Il faut créer les fichiers Packages Packages.gz Release Release.gpg 
InRelease.

Quelques extraits de mon script de création du dépôt qui fait d’autres 
choses :

#do_hash de 
https://earthly.dev/blog/creating-and-hosting-your-own-deb-packages-and-apt-repo/
do_hash() {
HASH_NAME=$1
HASH_CMD=$2
echo "${HASH_NAME}:"
for f in $(find -type f); do
f=$(echo $f | cut -c3-) # remove ./ prefix
if [ "$f" = "Release" ]; then
continue
fi
echo " $(${HASH_CMD} ${f} | cut -d" " -f1) $(wc -c $f)"
done
}


export GNUPGHOME=chemin vers le dossier openpgp contenant la clé privée
for arch in amd64 i386
do
echo "==== $arch ==="
[ -d pool.$arch ] || continue
rm -rf $arch
mkdir -p $arch
echo dpkg-scanpackages -a $arch pool.$arch
dpkg-scanpackages -m -a $arch pool.$arch > $arch/Packages
echo `grep Package: $arch/Packages|wc -l` Packages / `ls 
pool.$arch/*.deb|wc -l` fichiers dans pool.$arch
gzip -9k $arch/Packages
#source 
:https://earthly.dev/blog/creating-and-hosting-your-own-deb-packages-and-apt-repo/
cd $arch
cat << EOF >Release
Origin: XXX Repository
Label: XXX
Suite: $arch/
Codename: $arch/
Version: 1.0
Architectures: $arch
Components: $arch/
Description: XXX miroir partiel Debian
Date: $(date -Ru)
EOF
do_hash "MD5Sum" "md5sum" >>Release
do_hash "SHA1" "sha1sum" >>Release
do_hash "SHA256" "sha256sum" >>Release
cat Release | gpg --default-key multiciel.org -abs > Release.gpg
cat Release | gpg --default-key multiciel.org -abs --clearsign > InRelease
cd ..
done

En espérant que ça puisse aider,
bonne journée,
Jean-Daniel

-- 
------------------------------------------------------------------------
Jean-Daniel Dubois.
jddubois.ouvaton.org <https://jddubois.ouvaton.org>
mastodon: mamot.fr/@jddubois <https://mamot.fr/@jddubois>
(limitation de garantie) 
<https://jddubois.ouvaton.org/wiki/doku.php/exclusion-garantie>