Apportez votre aide…
Comment mettre en place un dépôt local ?
Ou comment créer un dépôt à partir de paquets déjà téléchargés dans un répertoire.
Intérêt d'un dépôt local de paquets deb
Il existe plusieurs situations dans lesquelles il est particulièrement intéressant de créer un dépôt local de logiciels sous forme binaire en .deb comme :
- une installation sur une machine dépourvue de connexion internet ;
- une installation sur une machine avec une connexion internet lente 56K par simple modem RTC ;
- une install-party où il y a beaucoup de machines à installer en même temps avec une connexion internet haut-débit pas suffisamment rapide.
Dans tous les cas, cette technique permet d'éviter de télécharger sur internet des paquets qui sont déjà présent localement dans au moins une machine correctement installée de façon traditionnelle via le net.
Prérequis
L'utilitaire dpkg-scanpackages dont vous aurez besoin sur la machine serveur est disponible dans le paquet dpkg-dev.
Installation en réseau local à partir d'une machine serveur locale
Étape 1 : Installer complètement une machine locale via Internet qui deviendra un serveur de dépôt
- Installez votre machine de façon traditionnelle via Internet haut-débit en utilisant un fichier sources.list classique et pensez à mettre tous les logiciels nécessaires.
Une fois terminé, jetez un œil dans ce dossier pour vérifier que tous les paquets sont bien là sous forme de fichier .deb :
/var/cache/apt/archives/
Étape 2 : Préparer la machine locale à devenir serveur de dépôt
Dans mon exemple, je crée un dossier local qui contiendra les paquets .deb dans Apache2 et appelé ubuntu_local.
- Créez le dossier ubuntu_local :
mkdir /var/www/html/ubuntu_local
- Copiez tout le dossier archives et les paquets .deb qu'il contient dans le dossier que vous venez de créer à la racine de votre serveur web Apache2 avec la commande :
cp -rf /var/cache/apt/archives /var/www/html/ubuntu_local
- Ensuite, allez dans ce dossier avec :
cd /var/www/html/ubuntu_local/
- Faites la liste de tous les paquets qu'il contient avec la commande :
dpkg-scanpackages ./ /dev/null | gzip -9c > Packages.gz
(La commande dpkg-scanpackages n'est disponible qu'après installation paquet dpkg-dev.)
À ce stade, votre serveur est presque prêt, il faut juste configurer votre machine pour dire que n'importe qui pourra aller chercher ces paquets via le serveur Apache2.
Pour cela, exécutez les 2 commandes suivantes :
chmod 755 -R /var/www/html/ubuntu_local/ chown -R www-data:www-data /var/www/html/ubuntu_local/
Votre serveur local est prêt, pour le tester, lancez-votre navigateur web et saisissez cette adresse :
http://ip_serveur/ubuntu_local/
(ip_serveur sera remplacée par l'adresse IP de votre machine dans le réseau local)
Si une grande liste s'affiche avec tous les logiciels et le fichier Packages.gz
, c'est tout bon, sinon reprenez au dessus, vous avez probablement oublié quelque chose…
sudo ln -s /var/cache/apt/archives /var/www/html/ubuntu_local/
De plus, votre dépôt local sera toujours "à jour".
Un dpkg-scanpackages reste cependant nécessaire car apt cherche un listing des paquets disponibles dans le dépôt, listing contenu dans le fichier Packages.gz
. En l'absence de ce fichier, apt retourne une erreur.
La page http://ip_serveur/ubuntu_local/ ouverte dans votre navigateur doit afficher le fichier Packages.gz
en plus des paquets .deb du dossier archives/
.
Pour télécharger les paquets par avance dans /var/cache/apt/archives
du serveur local sans les installer, l'option -d suffit.
# apt-get -d install mon_paquet
Seule la phrase "Téléchargement achevé dans le mode téléchargement uniquement" à la fin de l'opération vous indiquera que rien n'est installé.
Étape 3 : Préparer la machine cliente pour se connecter au serveur de dépôt local
Sur la machine cliente, vous venez de faire une installation classique d'Ubuntu, le réseau fonctionne, il vous suffit maintenant de mettre au point un fichier sources.list qui se connecte sur votre serveur local. Pour cela :
- Copiez le fichier sources.list pour en faire une copie de sécurité avec :
cp /etc/apt/sources.list /etc/apt/sources.list.old
- Ouvrez le fichier /etc/apt/sources.list, effacez toutes les lignes qu'il contient et remplacez-les par celle-ci :
## Depot local intranet deb http://192.168.0.4/ubuntu_local ./
avec dans cet exemple l'IP du serveur local en 192.168.0.4 (que vous adapterez à votre adresse IP) et enregistrez votre fichier.
- Installez les paquets de votre choix.
À noter que certains paquets peuvent avoir dans leurs noms de fichier les caractères « %3a », ce qui renvoie une erreur avec apt-get upgrade
ou autres, dans ce cas il suffit de renommer les paquets en remplaçant « %3a » par « : ».
Exemple :
rename 's/%3a/:/' *.deb
Installation locale à partir de fichiers .deb sur CD-ROM, DVD-ROM, clé USB ou disque dur amovible externe
il suffit en fait de rajouter cela dans son sources.list :
deb file:/media/$USER/doc/ubuntu_local ./
Ici le dépôt se trouve sur un disque dur externe… Mais il suffit d'adapter pour un CD-Rom ou autre support…
TODO : faire un CD/DVD "autorun" qui est reconnu directement par Synaptic ou adept.
Autre solution : comment installer un .deb via Synaptic
(Ne pas oublier que le paquet dpkg-dev est pré-requis.)
Dans l'exemple qui suit, nous supposons que vous voulez avoir les .deb dans le répertoire ~/monDepot/
- Créez le répertoire
~/monDepot/
:cd ~ mkdir -p monDepot/
- Copiez votre .deb dans
~/monDepot/
.
Il vaut mieux sauvegarder le .deb souhaité tout de suite dans ce répertoire, lors du téléchargement. Vous pouvez également les mettre dans des sous-répertoires de ~/monDepot/. Par contre n'utilisez pas de paquets créé avec checkinstall.
Dans le répertoire ~/monDepot/
, vous aurez besoin d'un fichier Packages.gz
.
Ce fichier sera créé automatiquement par un script que vous allez créer. Packages.gz
doit en effet contenir les données sur les .deb que vous venez de mettre dans le répertoire. Pour faciliter la mise en jour de Packages.gz
, créez un script (à l'aide de gedit), par exemple miseAjour.sh
:
cd monDepot gedit miseAjour.sh
Écrivez-y ces lignes :
#!/bin/bash cd ~/monDepot/ dpkg-scanpackages . /dev/null |gzip -9c > Packages.gz
Quittez gedit (en sauvegardant). Il faut que le script soit exécutable, c'est-à-dire qu'il ait l'attribut x :
chmod +x miseAjour.sh
Chaque fois que vous allez lancerez ce script, le fichier Packages.gz
sera mis à jour.
Finalement, nous devons informer Synaptic de la présence de notre nouveau dépôt.
Dans le menu de Synaptic, aller dans Configuration/ > Dépôts, puis Autres logiciels et Ajouter (Ligne APT) :
deb file:/home/monNom/monDepot ./
Dès que vous cliquez sur la relecture des dépôts (après le changement que vous venez de faire, Synaptic le fait automatiquement) vous avez votre nouveau .deb disponible dans Synaptic. Pour chaque nouveau deb que vous téléchargez dans monDepot, exécutez le script miseAjour.sh et faites relire ses dépôts à Synaptic (en cliquant sur le bouton avec les deux flèches) ou par
apt-get update
.
Utiliser un fichier .iso comme source
Ceci peut être utile pour installer des programmes sur un PC sans connexion internet. Vous avez votre .iso sur une clé USB par exemple : /media/$USER/cle_usb/ubuntu-14.04.1-desktop-i386.iso
.
- Créez un répertoire de montage
/media/iso
avec cette commande :sudo mkdir -p /media/iso
- Monter le fichier avec cette commande :
sudo mount /media/$USER/cle_usb/ubuntu-14.04.1-desktop-i386.iso -t iso9660 -o loop /media/iso/
- Vérifiez le montage :
ls /media/iso/ #doit montrer en autres les répertoires dists et pool
puis :
ls /media/iso/dists #doit montrer en autres le répertoire trusty (car l'iso est un 14.04)
- Notez les répertoires présents dans pool :
ls /media/iso/pool #donne main restricted
- Rajoutez alors ceci dans le fichier
/etc/apt/sources.list
:deb file:/media/iso/ hardy main restricted
- Ne pas oublier de mettre à jour les paquets disponibles avec Synaptic ou
sudo apt-get update
Voir aussi
- La page « Serveur apt-cacher », qui présente une solution proxy de mise en cache des paquets Debian performante et efficace.
Contributeurs : niber, yomega, Laurent Bellegarde, bruno sanchiz, L'Africain