Création des dépôts locaux dans Oracle Linux 7

Création des dépôts locaux dans Oracle Linux 7

Pour changer un peu, je vous propose un petit article autour d’Oracle Linux. Je décris rapidement la création des dépôts locaux (local yum repository) pour Oracle Linux 7.

Je dispose au préalable d’un système enregistré Unbreakable Linux Network (ULN) et connecté (utile pour télécharger les paquets). La liste des dépôts enregistrés sur ce système est la suivante :

[root@droopy ~]# yum repolist
Loaded plugins: ulninfo
repo id                       repo name                                                                                       status
ol7_Dtrace_userspace/x86_64   Oracle Linux 7Server Dtrace Userspace Tools (x86_64) - Latest                                       10
ol7_UEKR4/x86_64              Unbreakable Enterprise Kernel Release 4 for Oracle Linux 7Server (x86_64) - Latest                 189
ol7_addons/x86_64             Oracle Linux 7Server Add ons (x86_64)                                                              135
ol7_internal                  Oracle Linux 7Server Internal Mirror                                                                 6
ol7_ksplice/x86_64            Ksplice for Oracle Linux 7Server (x86_64)                                                        1,377
ol7_latest/x86_64             Oracle Linux 7Server Latest (x86_64)                                                            13,745
ol7_optional_latest/x86_64    Oracle Linux 7Server Latest Optional Packages (x86_64)                                          10,422
ol7_userspace_ksplice/x86_64  Latest packages for Ksplice aware userspace packages for Oracle Linux 7Server (x86_64)             151
repolist: 26,035

Même si je dispose d’un système Oracle Linux enregistré (ULN), j’utilise une méthode différente pour créer / utiliser les dépôts que celle décrite dans cet article.

Pour ce faire, il faut au préalable installer les utilitaires relatifs à la gestion des dépôts :

[root@droopy ~]# yum install yum-utils createrepo
Loaded plugins: ulninfo
Package yum-utils-1.1.31-40.el7.noarch already installed and latest version
Package createrepo-0.9.9-26.el7.noarch already installed and latest version
Nothing to do

Dans cet exemple, les dépôts sont créés dans l’arborescence suivante :

[root@droopy yum]# mkdir -p /var/www/html/yum

Pour synchroniser les dépôts, j’utilise la syntaxe suivante :

[root@droopy yum]# /usr/bin/reposync --newest-only --repoid=ol7_latest -p /var/www/html/yum
No Presto metadata available for ol7_latest
(1/4917): 389-ds-base-libs-1.3.5.10-11.el7.x86_64.rpm                     | 663 kB  00:00:02     
(2/4917): ElectricFence-2.2.2-39.el7.i686.rpm                             |  34 kB  00:00:00 
[...]

Cette opération est à effectuer pour l’ensemble des dépôts que vous souhaitez synchroniser en local. Vous pouvez parc exemple utiliser la syntaxe suivante pour synchroniser directement plusieurs dépôts de paquets :

[root@droopy ~]# /usr/bin/reposync --newest-only --repoid=ol7_latest \
--repoid=ol7_UEKR4 --repoid=ol7_addons --repoid=ol7_ksplice \
-p /var/www/html/yum
[...]

Une fois que tous les paquets de chaque dépôts sont disponibles localement (sur votre serveur), il est nécessaire de créer les références des dépôts via la commande suivante :

[root@droopy ~]# /usr/bin/createrepo /var/www/html/yum/ol7_latest
Saving Primary metadata
Saving file lists metadata
Saving other metadata
Generating sqlite DBs
Sqlite DBs complete

Les informations concernant le dépôts sont disponibles ici :

[root@droopy ~]# ls -l /var/www/html/yum/ol7_latest/repodata
total 15376
-rw-r--r--. 1 root root 3615937 Dec  5 19:40 00aa865b08e7688b1963502040af6673808e75d4d61e7b9ff0b8994c6dc796f8-filelists.sqlite.bz2
-rw-r--r--. 1 root root 1068542 Dec  5 19:40 043ede1cdeed2a584bc4de6f95ca1421f783f8d0651a52d87d5fec4499b4375b-other.xml.gz
-rw-r--r--. 1 root root 1578249 Dec  5 19:40 3191b278e3b5f2add275a823f682a2725f95eabd1debb6047c8199823a637460-other.sqlite.bz2
-rw-r--r--. 1 root root 1903473 Dec  5 19:40 394a69663abaf011f4092d2282b5f8a905f8a62199f7f8a1e0c3d1226b1722f0-primary.xml.gz
-rw-r--r--. 1 root root 4152624 Dec  5 19:40 6a7c6b2e9efcc321dff0a6f73ce8e9bb6979e9b438a36b6813ecf219c5d40471-primary.sqlite.bz2
-rw-r--r--. 1 root root 3413472 Dec  5 19:40 75905ac43d07849dc8369c18139857e6f33145919e614678e2e2c76f0fc017d6-filelists.xml.gz
-rw-r--r--. 1 root root    3010 Dec  5 19:40 repomd.xml

Notez que cette opérations est à répéter pour l’ensemble de vos dépôts.

Maintenant que ces dépôts sont disponibles localement sur votre serveur, il est intéressant de les rendre accessibles aux autres serveurs de votre réseau. Le plus simple est d’utiliser le protocole http (donc un serveur web) pour partager ces paquets.

On installe d’abord le serveur web (ici apache) :

[root@droopy ~]# yum install httpd
Loaded plugins: ulninfo
Resolving Dependencies
--> Running transaction check
---> Package httpd.x86_64 0:2.4.6-45.0.1.el7 will be installed
--> Processing Dependency: httpd-tools = 2.4.6-45.0.1.el7 for package: httpd-2.4.6-45.0.1.el7.x86_64
--> Processing Dependency: /etc/mime.types for package: httpd-2.4.6-45.0.1.el7.x86_64
--> Processing Dependency: libapr-1.so.0()(64bit) for package: httpd-2.4.6-45.0.1.el7.x86_64
--> Processing Dependency: libaprutil-1.so.0()(64bit) for package: httpd-2.4.6-45.0.1.el7.x86_64
--> Running transaction check

[...]
Complete!

Il faut éditer la configuration du serveur apache notamment pour modifier le paramètre « ServerName ».

ServerName droopy.homeunix.org:80

Si comme moi, SELinux et le firewall sont toujours activés, n’oubliez pas de saisir les commandes suivantes :

[root@droopy ~]# /usr/sbin/semanage fcontext -a -t httpd_sys_content_t "/var/www/html/yum(/.*)?"
[root@droopy ~]# /sbin/restorecon -R -v /var/yum
[root@droopy ~]# firewall-cmd --add-service=http
[root@droopy ~]# firewall-cmd --permanent --add-service=http

Il reste plus qu’à activer le serveur web :

[root@droopy ~]# systemctl start httpd
[root@droopy ~]# systemctl enable httpd

Pour vérifier il suffit de tester le téléchargement d’un paquet depuis un autre serveur :

[root@snoopy ~]# wget http://droopy.homeunix.org/yum/ol7_latest/wget-1.14-13.el7.x86_64.rpm 
--2016-12-05 20:01:32--  http://droopy.homeunix.org/yum/ol7_latest/wget-1.14-13.el7.x86_64.rpm
Connecting to droopy.homeunix.org:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 556936 (544K) [application/x-rpm]
Saving to: ‘wget-1.14-13.el7.x86_64.rpm’

100%[=================================================================================>] 556,936     --.-K/s   in 0.003s  

2016-12-05 20:01:32 (192 MB/s) - ‘wget-1.14-13.el7.x86_64.rpm’ saved [556936/556936]

Vous pouvez maintenant mettre à jour le fichier de références de vos dépôts sur chaque client afin d’accéder à tous vos paquets.

[local_ol7_latest]
name=Oracle Linux $releasever Latest ($basearch)
baseurl=http://droopy.homeunix.org/repo/OracleLinux/OL7/latest/$basearch/
gpgkey=http://droopy.homeunix.org/RPM-GPG-KEY-oracle-ol7
gpgcheck=1
enabled=1

N’oubliez pas au préalable de copier la clé suivante sur votre serveur web :

[root@droopy ~]# cp -pr /etc/pki/rpm-gpg/RPM-GPG-KEY-oracle /var/www/html

Voilà rien de plus simple.

Votre commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s