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.