Apt-mirror

De Dinfadom - Wiki
Aller à : navigation, rechercher
Logo ubuntu.png

Difficultés : Etoile.pngEtoile.pngEtoile.png


Apt-Mirror

Définitions : En informatique, un dépôt ou référentiel (de l’anglais repository) est un stockage centralisé et organisé de données. Ce peut être une ou plusieurs bases de données où les fichiers sont localisés en vue de leur distribution sur le réseau ou bien un endroit directement accessible aux utilisateurs. Sources : https://fr.wikipedia.org/

Objectifs :

La création d’un miroir pour les paquets accessibles par votre gestionnaire de paquets va vous permettre de créer et de maintenir la copie conforme de dépôts (officiels dans notre cas ) en local. La raison principale est de ne plus avoir besoin de connexion internet pour pouvoir installer un paquet ou bien faire des mises à jour – Soit une économie de notre bande passante internet (sur un parc de plus de 20 postes c’est non négligeable !) C’est donc une solution pratique et efficace pour la mise à jour d’un parc de machines.

Sources : https://doc.ubuntu-fr.org/

pré-requis :

Serveur sous Ubuntu (VM ou Physique) avec au moins 500GB d’espace de stockage (voyons large surtout si vous voulez cibler plusieurs versions d’Ubuntu et/ou plusieurs architectures)

  • Dans notre cas je me suis basé sur une Ubuntu 16.04 LTS (xeial) cette version LTS est suivi jusqu’en 2021
  • Connexion internet configurée pour ce serveur.
  • Connexion internet avec un débit suffisamment élevé pour les échanges de fichiers.(du moins à la creation uniquement, le maintient ou « update » peux se faire sur des débits plus bas)
  • Un DNS privé (si vous souhaitez qu’une utilisation local) ou public (si vous décidez de le rendre accessible sur internet) vous aurez donc besoin de créer des enregistrements A et CNAME nécessaire à notre configuration (non détaillé ici)

Informations utiles :

Pour exemple :

  • Société : Dinfadom
  • Nom d’hôte (nom DNS du serveur) : mirror.dinfadom.com
  • /var/www/html : seras notre dossier racine pour les sites du serveur Apache

  • /var/spool/apt-mirror : seras notre dossier racine pour nos « mirroir »

Configuration de « apt-mirror » :

  • Architectures souhaitées : i386 et amd64 (défaut aujourd'hui)
  • Version d'Ubuntu souhaitée : bionic (18.04 LTS)
  • Dépôts souhaités :
    • bionic
    • bionic-updates
    • bionic-security
    • partner

Par défaut, apt-mirror utilise son propre fichier de configuration : /etc/apt/mirror.list. – Nous conserverons les configurations par défaut et emplacements par défaut à savoir /var/spool/apt-mirror

mirror.list :

 vim /etc/apt/mirror.list

Modifiez le fichier comme suivant :

 
############# config ##################
#
set base_path    /var/spool/apt-mirror
#
set mirror_path  $base_path/mirror
set skel_path    $base_path/skel
set var_path     $base_path/var
set cleanscript  $var_path/clean.sh
set defaultarch i386
set postmirror_script $var_path/postmirror.sh
set run_postmirror 0
set nthreads     10
set _tilde 0
#
############# end config ##############

######################################################
##           UBUNTU VERSION bionic - 18.04          ##
##                 i386 - 32bits                    ##
######################################################

## Dépôts officiels ##
deb http://fr.archive.ubuntu.com/ubuntu bionic main
deb http://fr.archive.ubuntu.com/ubuntu bionic restricted
deb http://fr.archive.ubuntu.com/ubuntu bionic universe
deb http://fr.archive.ubuntu.com/ubuntu bionic multiverse

#Debian - Installation - Netboot et PXE
deb http://fr.archive.ubuntu.com/ubuntu bionic main/debian-installer
deb http://fr.archive.ubuntu.com/ubuntu bionic restricted/debian-installer

# Dépôts Updates
deb http://fr.archive.ubuntu.com/ubuntu bionic-updates main
deb http://fr.archive.ubuntu.com/ubuntu bionic-updates restricted
deb http://fr.archive.ubuntu.com/ubuntu bionic-updates multiverse
deb http://fr.archive.ubuntu.com/ubuntu bionic-updates universe

# Dépôts Security
deb http://fr.archive.ubuntu.com/ubuntu/ bionic-security main 
deb http://fr.archive.ubuntu.com/ubuntu/ bionic-security restricted 
deb http://fr.archive.ubuntu.com/ubuntu/ bionic-security universe 
deb http://fr.archive.ubuntu.com/ubuntu/ bionic-security multiverse 

### Dépôt commercial ##
deb http://archive.canonical.com/ubuntu bionic partner

### Dépôt 'extras'.##
#deb http://extras.ubuntu.com/ubuntu bionic main

####################################################
##           UBUNTU VERSION bionic - 18.04        ##
##               AMD-64 - 64bits                  ##
####################################################

## Dépôts officiels ##
deb-amd64 http://fr.archive.ubuntu.com/ubuntu bionic main
deb-amd64 http://fr.archive.ubuntu.com/ubuntu bionic restricted
deb-amd64 http://fr.archive.ubuntu.com/ubuntu bionic universe
deb-amd64 http://fr.archive.ubuntu.com/ubuntu bionic multiverse

#Debian - Installation - Netboot et PXE
deb-amd64 http://fr.archive.ubuntu.com/ubuntu bionic main/debian-installer
deb-amd64 http://fr.archive.ubuntu.com/ubuntu bionic restricted/debian-installer

# Dépôts Updates
deb-amd64 http://fr.archive.ubuntu.com/ubuntu bionic-updates main
deb-amd64 http://fr.archive.ubuntu.com/ubuntu bionic-updates restricted
deb-amd64 http://fr.archive.ubuntu.com/ubuntu bionic-updates multiverse
deb-amd64 http://fr.archive.ubuntu.com/ubuntu bionic-updates universe

# Dépôts Security
deb-amd64 http://fr.archive.ubuntu.com/ubuntu/ bionic-security main 
deb-amd64 http://fr.archive.ubuntu.com/ubuntu/ bionic-security restricted 
deb-amd64 http://fr.archive.ubuntu.com/ubuntu/ bionic-security universe 
deb-amd64 http://fr.archive.ubuntu.com/ubuntu/ bionic-security multiverse

### Dépôt commercial ##
deb-amd64 http://archive.canonical.com/ubuntu bionic partner

### Dépôt 'extras'.##
#deb-amd64 http://extras.ubuntu.com/ubuntu bionic main


############# clean ##############

clean http://fr.archive.ubuntu.com/ubuntu/ bionic
clean http://fr.archive.ubuntu.com/ubuntu/ bionic-updates
clean http://fr.archive.ubuntu.com/ubuntu/ bionic-security
clean http://fr.archive.ubuntu.com/ubuntu/ bionic partner

Détaillons notre fichier de configuration ci-dessus :

Les lignes dont vous devez vous soucier sont :

  • set base_path /var/spool/apt-mirror : Dossier de destination par défaut pour les dépôts
  • set defaultarch i386 : précise que je ne désire récupérer que les paquets pour l’architecture i386. (Par défaut identique à l’architecture de la machine)

Si vous voulez avoir plusieurs architectures dans votre miroir il suffit de le préciser dans les dépôts.
Quelques explications : « deb » seul revient à dire « deb-i386 », car c’est l’architecture de base dans la configuration.
Pour les autres, il faut le déclarer avec deb-amd64 pour l’architecture AMD64 ou deb-‘autre-architecture’ pour les autres architectures.


Plus d’informations : ici

Viennent ensuite les lignes qui précisent quels sont les dépôts dont je souhaite faire une copie.

Ces lignes sont celles par défaut pour l’installation d’une Bionic (18.04LTS), libre à vous de les modifier et/ou d’en ajouter, dans notre cas nous utiliserons les dépôts suivants :

  • fr.archive.ubuntu.com

Vous pouvez tout à fait ajouter d’autres dépôts de votre choix – Attention de ne pas oublier de les ajouter pour toutes vos architectures souhaitées à savoir dans notre cas (i386 et amd64 soit « deb » et « deb-amd64 »)

Les lignes qui suivent la section « clean » vous permettront de supprimer les paquets obsolètes de votre miroir, il faut les rentrer pour chaque adresse voulue (idéalement toutes).
Si vous avez ajouter d’autres dépôts vous pouvez aussi les ajouter dans cette rubrique afin que le scripts nettoie aussi ces dépôts

Icon-quote.png Si vous souhaitez pouvoir utiliser votre dépôt pour faire vos installation d’Ubuntu en local (via Netboot ou autres moyen) ajoutez ces lignes, pour toutes les architectures souhaités (dans notre cas i386 et amd64) :

* main/debian-installer
* restricted/debian-installer

Plus d'informations sur les dépôts et leurs roles : ici

Récupération des paquets :

Lancez la création de votre miroir par :

apt-mirror

Vous devriez obtenir : (Plusieurs Go…soyez patient…très patient….:D)

 Downloading 144 index files using 10 threads...
 Begin time: Tue Jun 24 10:29:28 2014
 [10]... [9]... [8]... [7]... [6]... [5]... [4]... [3]... [2]... [1]... [0]...
 End time: Tue Jun 24 10:29:34 2014
 Proceed indexes: [PPPPPPPPPPPPPPPPPPPPPPPP]
 90.8 GiB will be downloaded into archive.
 Downloading 63505 archive files using 10 threads...
 Begin time: Tue Jun 24 10:31:16 2014
 [10]... [9]... [8]... [7]... [6]... [5]... [4]... [3]... [2]... [1]... [0]...
 End time: Thu Jun 26 08:54:50 2014
 93.9 MiB in 267 files and 0 directories can be freed.
 Run /media/Depots/trusty/clean.sh for this purpose.

Vérifions la présence de notre dépôt :

ll /var/spool/apt-mirror/mirror/
 drwxr-xr-x 7 apt-mirror apt-mirror 4096 déc. 10 13:21 ./
 drwxr-xr-x 5 apt-mirror apt-mirror 4096 déc. 3 12:12 ../
 drwxr-xr-x 3 root root 4096 déc. 3 12:18 fr.archive.ubuntu.com/

Mise à jour du miroir :

Manuellement:

Il suffit pour cela de relancer apt-mirror :

apt-mirror

Automatiquement

Création de l'arborescence pour les "Logs"

mkdir -p /var/log/apt/apt-mirror/

Création d’une tache CRON (crontab)

crontab -e

Ajoutez :

 0 1 * * * /usr/bin/apt-mirror > /var/log/apt/apt-mirror/cron_update_mirror.log 
 0 2 * * * /var/spool/apt-mirror/var/clean.sh > /var/log/apt/apt-mirror/cron_clean_mirror.log

Explications :

/usr/bin/apt-mirror > /var/log/apt/apt-mirror/cron_update_mirror.log : s'exécutera tous les jours à 1:00 du matin
/var/spool/apt-mirror/var/clean.sh > /var/log/apt/apt-mirror/cron_clean_mirror.log : s'exécutera tous les jours à 2:00 du matin
Icon-quote.png  Vous pouvez tout à fait changer ces horaires si elles ne vous conviennent pas !

Configuration d’Apache2 :

Rappel : Le logiciel libre Apache HTTP Server (Apache) est un serveur HTTP créé et maintenu au sein de la fondation Apache. C’est le serveur HTTP le plus populaire du World Wide Web. Il est distribué selon les termes de la licence Apache. Commencez par installer le paquet apache2. Puis créez un lien symbolique pour que le dépôt soit accessible via le serveur web : sources : wikipedia


apt-get install -y apache2
ln -s /var/spool/apt-mirror/mirror/ /var/www/html/mirror


Maintenant notre miroir est accessible depuis un navigateur web : http://mirror.dinfadom.com/mirror/

Screenshot :

Mirror scr.png

Encode Explorer [facultatif]

Icon-quote.png Vous pouvez au besoin rendre cette interface un peu plus jolie : 
Voici une petite application écrite en PHP, XHTML et CSS, que j'affectionne tous particulièrement, de par sa simplicité de mise en place ainsi que la souplesse de sa configuration : 


Encode Explorer is a file browser written in PHP, XHTML and CSS. It displays the list of files in a folder. It was designed to be used in safe mode and so it is kept simple and functional. Free for everyone.

  • Files can be sorted by name, size and editing time
  • You can move in folders
  • Thumbnails for images and pdf files.
  • File uploading (needs PHP full mode)
  • Logging and notifications
  • Optional password protection
  • Interface for mobile devices

Sources : http://encode-explorer.siineiolekala.net/

Installation et personnalisation de l'interface
On installe le moteur PHP:
apt-get install php7.0-common php7.0-dev php7.0-cli libapache2-mod-php7.0 zip
On récupère et on extrait Encode Explorer :
cd /var/www/html/
wget http://kent.dl.sourceforge.net/project/encode-explorer/encode-explorer/encode-explorer_6.4.1/encode_explorer_6.4.1.zip
unzip encode_explorer_6.4.1.zip 
rm encode_explorer_6.4.1.zip 
cd encode_explorer_6.4.1/
mv * ..
chmod 755 -R .
chown www-data:www-data -R .
On personnalise l'interface :
mkdir /var/www/html/img
vim /var/www/html/index.php

Déposé dans votre logo dans ce dossier, moi j'ai récupérer un logo officiel Ubuntu (via sur Google images)

cd  /var/www/html/img
wget http://design.ubuntu.com/wp-content/uploads/logo-ubuntu_su-orange-hex.png
mv logo-ubuntu_su-orange-hex.png ubuntu_logo.png

Ajout de notre logo :

(..)
<!DOCTYPE HTML>

<center>
<img src="img/ubuntu_logo.png" alt=logo ubuntu  width="400px">
<br>
<br>
<br>
</center>
(...)

On masque le dossier "img"

(...)
//
// The array of folder names that will be hidden from the list.
// Default: $_CONFIG['hidden_dirs'] = array();
//
$_CONFIG['hidden_dirs'] = array("img");
(...)
Icon-quote.png Et Hop ! on se retrouve avec une interface nettement plus classe et professionnelle, j'aime m'attarder ce type de detail :D

Screenshot :

Capture d’écran 2016-04-30 à 16.57.52.png

Sur le poste client :

sauvegardez le fichier de configuration:

cp /etc/apt/sources.list /etc/apt/sources.list.ori

Ouvrez le fichier « /etc/apt/sources.list » afin de le faire pointer vers notre serveur : mirror.dinfadom.com

Voici le fichier à mettre en place :


vim /etc/apt/sources.list
 #------------------------------------------------------------------------------#
 #                            LOCAL UBUNTU REPOS                                #
 #------------------------------------------------------------------------------#
 
 ###### Ubuntu Main Repos
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu/ bionic main restricted universe multiverse 
 
 ###### Ubuntu Update Repos
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu/ bionic-security main restricted universe multiverse 
 deb http://mirror.dinfadom.com/mirror/fr.archive.ubuntu.com/ubuntu/ bionic-updates main restricted universe multiverse  
 
 ###### Ubuntu Partner Repo
 deb http://mirror.dinfadom.com/mirror/archive.canonical.com/ubuntu bionic partner

ensuite mettez à jour la liste des dépôts sur votre client :

sudo apt-get update

Vérifiez bien que votre client interroge bien votre nouveau serveur !!!