Contenu | Rechercher | Menus
Selon les tags présents sur cette page, les informations qu'elle contient n'ont pas été vérifiées depuis Ubuntu 12.04 LTS.
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.

Il existe une autre solution avec l'utilisation de apt-cacher qui ne nécessite pas l'installation d'apache.

Cette manière de procéder ne vous permettra de partager que des paquets déjà téléchargés. Dans le cas où vous souhaitez créer un dépôt complet en local (un miroir) vous trouverez comment faire sur la page « Créer un miroir de dépôt local ».

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

Cette documentation sera valable avec Breezy, Dapper ou Edgy si les paquets qui ont été téléchargés correspondent à la version installée localement sur le client via le CD-ROM.

Cette documentation a été (très peu) modifiée jusqu'au paragraphe 3.3 et fonctionne avec la version 12.04 LTS Precise Pangolin.

É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/

Il faudra installer le serveur web Apache2 pour permettre une connexion locale en réseau intranet.

Étape 2 : Préparer la machine locale bien installée à 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.

  • Ouvrez un terminal (ou console) avec Applications/Accessoires/terminal et devenez root (=super-administrateur) avec la commande :
    sudo -i <ENTRÉE> (puis taper votre mot de passe)
  • Copiez tout le dossier archives et les paquets deb qu'il contient dans la racine de votre serveur web Apache2 avec la commande :
    cp -rf /var/cache/apt/archives /var/www/ubuntu_local
  • Ensuite, allez dans ce dossier avec :
    cd /var/www/ubuntu_local/
  • et faites la liste de tous les paquets contenus dedans avec la commande :
    dpkg-scanpackages ./ /dev/null | gzip -9c > Packages.gz

    (disponible dans le paquet dpkg-dev)

A 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 dans Apache2, pour cela, exécutez les 2 commandes suivantes :

chmod 755 -R /var/www/ubuntu_local/

suivie de :

chown -R www-data:www-data /var/www/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 non, reprenez au dessus, vous avez oublié quelque chose…

Il est tout à fait possible (et sans doute plus intéressant) de créer un lien symbolique pointant vers le répertoire cache, plutôt que de recopier ce dernier. Soit, avec l'exemple précédent :

ln -s /var/cache/apt/archives /var/www/ubuntu_local/

Il n'est alors plus nécessaire d'utiliser la commande dpkg-scanpackages, ni (suivant les politiques locales de sécurité) de changer les permissions via chmod/chown. De plus, votre dépôt local sera toujours "à jour". Un dpkg-scanpackages reste nécessaire : apt cherche un listing des paquets disponibles dans le depôt : Packages.gz. Sans quoi il retourne une erreur.

http://ip_serveur/ubuntu_local/

doit afficher : Packages.gz et 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 locale en attente d'installation pour se connecter au serveur de dépôt local

Sur la machine cliente, vous venez de faire une installation classique avec le CD-rom 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, ouvrez un terminal (ou console) avec Applications/Accessoires/terminal et devenez root (=super-administrateur) avec la commande :

sudo -i <ENTRÉE> (puis taper votre mot de passe)

puis copiez le fichier sources.list pour en faire une copie de sécurité avec :

cp /etc/apt/sources.list /etc/apt/sources.list.old

- et éditez le fichier sources.list avec :

gedit /etc/apt/sources.list

effacez toutes les lignes contenues dedans 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.18.0.4, pensez à enregistrer votre fichier.

- Ensuite, lancez la réactualisation des sources de logiciels avec la commande :

apt-get update

puis la mise à jour en local avec :

apt-get install nom_du_paquet

nom_du_paquet = nom du paquet à installer.

ou

apt-get dist-upgrade

À titre d'information, vous installerez le paquet des codecs vidéos propriétaires w32codecs en 4 secondes au lieu des 3 minutes normalement nécessaires pour le téléchargement via internet.

À noter que certains paquets peuvent avoir dans leurs noms de fichier « %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

Si vous stockez les paquets dans une partition en FAT32, vous ne pourrez pas utiliser le caractère « : » dans le nom des fichiers, la solution est de créer une partition formatée en ext3.

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/doc/ubuntu_local  ./ 

ici mon depot se trouve sur un disque dur externe… mais il suffit d adapter pour un cdrom ou autre…

FIXME 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)

Créez les répertoires (p.ex vous voulez avoir les debs dans le répertoire monDepot) ~/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 debs 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 deux 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 cliquer sur ce script, le fichier de descriptions sera mis à jour.

Finalement, nous devons éclairer synaptic sur notre nouveau dépôt. Dans le menu du synaptic vous saisissez "dépôts - ajouter" et cliquez sur "personnaliser" et mettez:

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 tout joli dans le 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 iso comme source

utile pour installer des programmes sur un ordi sans internet matériel un fichier iso /media/cle_usb/xubuntu-8.04.1-desktop-i386.iso un répertoire de montage /media/iso

sudo mkdir -p /media/iso

monter le fichier :

sudo mount /media/cle_usb/xubuntu-8.04.1-desktop-i386.iso -t iso9660 -o loop /media/iso/ 

vérifier le montage :

ls /media/iso/ #doit montrer en autres les répertoires dists et pool 
ls /media/iso/dists #doit montrer en autres le répertoire hardy ( car l iso est un 8.04 )

noter les répertoires présents dans pool :

ls /media/iso/pool #donne main restricted

rajouter alors cela dans son fichier /etc/apt/sources.list

deb file:/media/iso/ hardy main restricted 

ne pas oublier d'updater avec synaptic ou

sudo apt-get update

Voir aussi

Autre méthode bien plus simple ici installer-un-miroir-de-paquets-debian-ubuntu. Cependant cette méthode requiert un logiciel dédié.

Ce lien est mort, mais il y a une doc PDF : Installer un miroir de paquets Debian / Ubuntu

Vous pouvez aussi utiliser le script suivant: script automatique pour depot local (en 2006).

Un autre script, par Fanch (en 2007).


Contributeurs : niber, yomega, Laurent Bellegarde, bruno sanchiz


tutoriel/comment_installer_un_depot_local.txt · Dernière modification: Le 12/12/2013, 09:32 par 194.250.1.208
Le contenu de ce wiki est sous licence : CC BY-SA v3.0