web-dev-qa-db-fra.com

Existe-t-il un moyen simple de configurer apt-get pour optimiser les téléchargements à l’aide d’un lan apt-mirror lorsqu’il est disponible?

J'ai un ordinateur portable et une copie locale de plusieurs référentiels sur un disque dur externe connecté à mon routeur. Mon routeur fournit un accès à ces fichiers (avec les informations d'identification) en tant que partages Samba et/ou serveur ftp.

Je voudrais configurer apt-get pour vérifier ces dépôts quand ils sont disponibles et télécharger les mises à jour à partir d’eux pour accélérer le processus lorsque cela est possible.

Pour être plus clair: je veux qu’apt-get puisse vérifier à la fois les dépôts classiques sur Internet et mon dépôt local lorsque mon ordinateur portable est connecté à mon réseau wifi. Si les fichiers des référentiels externes sont plus récents que ceux de mon miroir local ou si le miroir n'est pas disponible, apt-get doit télécharger les fichiers depuis Internet.

3
Marcelo Ruiz

J'ai finalement réussi à résoudre ce problème et cela fonctionne plutôt bien. Je souhaite donc le partager avec des personnes qui souhaitent mettre en œuvre un système similaire.

Mon premier problème était que mon système prend en charge multi-Arch. Par conséquent, les référentiels en miroir doivent contenir les packages i386 et AMD64 (les sources ne sont pas en miroir) pour éviter les erreurs de téléchargement. Ceci est fait dans /etc/apt/mirror.list comme dans cet exemple:

deb-i386  http://archive.ubuntu.com/ubuntu trusty main restricted universe multiverse
deb-AMD64 http://archive.ubuntu.com/ubuntu trusty-security main restricted universe multiverse

Mon chemin_base défini dans ce fichier est /mnt/apt-mirrors , et je lance un script qui monte un disque dur externe connecté au port USB de mon routeur en tant que partage Samba (vous pouvez voir le script ici: comment utiliser apt-mirror pour sauvegarder des fichiers sur un disque dur connecté à un routeur LAN

Je souhaitais accéder aux référentiels en miroir à partir d’autres ordinateurs du réseau local. L’autre partie de la solution consiste donc à ajouter les définitions des référentiels FTP au début dans /etc/apt/sources.list . Cette configuration fait apt-get utiliser d’abord les référentiels FTP lors du téléchargement de fichiers, puis ceux définis dans /etc/apt/sources.list.d , à condition que les versions en miroir soient à jour.

Les référentiels locaux sont définis comme suit:

deb [Arch=AMD64,i386] ftp://user:password@lan-resource/apt-mirrors/mirror/archive.ubuntu.com/ubuntu trusty main restricted universe multiverse

où vous remplacez utilisateur par le nom d'utilisateur autorisé à accéder au serveur FTP, : mot de passe avec son mot de passe si nécessaire pour se connecter (sinon supprimer), et lan-resource avec l'adresse du serveur FTP de votre réseau local ( J'ai décidé de modifier /etc/hosts pour éviter de répéter une adresse IP codée en dur, où j'ai défini 192.168.0.1 comme lanftpserver à utiliser dans ce champ).

0
Marcelo Ruiz

Il y a 4 étapes pour configurer votre propre référentiel

  1. Installer dpkg-dev
  2. Mettre les paquets dans un répertoire
  3. Créez un script qui analysera les packages et créera un fichier que apt-get update peut lire
  4. Ajouter une ligne à votre sources.list pointant vers votre référentiel

Installer dpkg-dev

Ouvrez un terminal:

Sudo apt-get install dpkg-dev

Le répertoire

Créez un répertoire pour conserver vos paquets. Pour cet exemple, nous utiliserons /usr/local/lan-repo.

Sudo mkdir -p /usr/local/lan-repo

Maintenant, déplacez tous vos paquets dans ce nouveau répertoire.

Les packages déjà téléchargés sont généralement stockés sur votre système dans /var/cache/apt/archives. Si vous avez installé apt-cacher, vous aurez probablement des packages supplémentaires stockés dans le répertoire apt-cacher/packages.

Créez un script nommé update-lan-repo

C'est un script très simple de trois lignes:

#! /bin/bash
cd /usr/local/lan-repo
Sudo dpkg-scanpackages . /dev/null | gzip -9c > packages.gz

Copiez et collez ce qui précède dans votre éditeur de texte favori, puis enregistrez-le sous le nom update-lan-repo dans ~/bin. (~ désigne le répertoire de base. Si ~/bin n'existe pas encore, créez-le. Ubuntu le mettra automatiquement dans votre PATH. Cela en fait un bon endroit pour mettre des scripts personnels.)

Rendons maintenant le script exécutable:

chmod u+x ~/bin/update-lan-repo

Voici comment fonctionne le script:

dpkg-scanpackages examine tous les paquets contenus dans lan-repo et le résultat est compressé et écrit dans le fichier packages.gz, que apt-get update peut lire (voir ci-dessous une référence expliquant cette en détail). /dev/null est un fichier vide - c’est-à-dire - un fichier de substitution qui contient des informations supplémentaires sur les packages, ce qui dans notre cas n’est pas vraiment nécessaire. Voir deb-override(5) si vous voulez en savoir plus à ce sujet.

Nous devons ajouter votre dépôt local à votre fichier sources.list

echo "deb file:/usr/local/lan-repo ./" >> /etc/apt/sources.list

et c'est ce que vous avez terminé.

Option CD/DVD

Vous pouvez stocker le répertoire contenant le fichier .deb sur un CD/DVD et l'utiliser également comme référentiel (idéal pour le partage entre ordinateurs). Pour utiliser le CD en tant que référentiel:

lancez simplement la commande:

Sudo apt-cdrom add

en utilisant le nouveau référentiel.

Ensuite, chaque fois que vous stockez un nouveau paquet Debian dans le répertoire lan-repo, exécutez:

Sudo update-lan-repo
Sudo apt-get update

Maintenant, vos paquets locaux peuvent être manipulés avec Synaptic, aptitude et les commandes apt: apt-get, apt-cache, etc. Lorsque vous essayez d'installer apt-get, toutes les dépendances seront résolues pour vous, tant que ils peuvent être rencontrés.

1
jamiejackherer