Fedora-Fr - Communauté francophone Fedora - Linux

Planet de Fedora-Fr : la communauté francophone autour de la distribution Linux Fedora

A propos

Cette page est actualisée toutes les heures.

Cette page est une sélection de blogs autour de Fedora. Fedora-Fr.org décline toute responsabilité au sujet des propos tenus par les auteurs des blogs de ce planet. Leurs propos sont leur entière responsabilité.

Le contenu de ce planet appartient à leurs auteurs respectifs. Merci de consulter leur blogs pour obtenir les licences respectives.

Mesa git du 03/03/2018

Sylvain Réault Mesa git du 03/03/2018 VINDICATORs sam 03/03/2018 - 08:58

PHP version 5.6.34, 7.0.28, 7.1.15 et 7.2.3

Remi Collet

Les RPM de PHP version 7.2.3 sont disponibles dans le dépôt remi pour Fedora 28 et dans le dépôt remi-php72 pour Fedora 25-27 et Enterprise Linux 6 (RHEL, CentOS).

Les RPM de PHP version 7.1.15 sont disponibles dans le dépôt remi pour Fedora 26-27 et dans le dépôt remi-php71 pour Fedora 25 et Enterprise Linux (RHEL, CentOS).

Les RPM de PHP version 7.0.28 sont disponibles dans le dépôt remi pour Fedora 25 et dans le dépôt  remi-php70 pour Enterprise Linux.

Les RPM de PHP version 5.6.34 sont disponibles dans le dépôt remi-php56 pour Enterprise Linux.

emblem-important-2-24.pngPHP version 5.5 a atteint sa fin de vie et n'est plus maintenu par le projet.

Ces versions sont aussi disponibles en Software Collections dans le dépôt remi-safe.

security-medium-2-24.pngCes versions corrigent quelques failles de sécurité, la mise à jour est donc vivement recommandée.

Annonces des versions :

emblem-notice-24.pngInstallation : voir l'assistant de configuration et choisir la version et le mode d'installation.

Remplacement du PHP par défaut du système par la version 7.2 (le plus simple) :

yum-config-manager --enable remi-php72
yum update

Installation en parallèle, en Software Collection de PHP 7.2 (x86_64 uniquement) :

yum install php72

Remplacement du PHP par défaut du système par la version 7.1 (le plus simple) :

yum-config-manager --enable remi-php71
yum update

Installation en parallèle, en Software Collections de PHP 7.1 (x86_64 uniquement) :

yum install php71

Et bientôt dans les mises à jour officielles:

emblem-important-2-24.pngÀ noter :

  • la version EL7 est construite avec RHEL-7.4
  • la version EL6 est construite avec RHEL-6.9
  • beaucoup de nouvelles extensions sont aussi disponible, voir PECL extension RPM status page

emblem-notice-24.pngInformations, lire :

Paquets de base (php)

Software Collections (php56 / php70 / php71 / php72)

phpMyAdmin en route pour la version 4.8

Remi Collet

Les RPM pour installer et tester la prochaine nouvelle version majeure de phpMyAdmin sont disponibles dans le dépôt remi-test pour Fedora et Enterprise Linux (RHEL, CentOS...).

 

Site officiel : http://www.phpmyadmin.net/

Annonce du projet: phpMyAdmin 4.8.0-alpha1 is released

Comme toujours, pour Fedora :

dnf --enablerepo=remi-test install phpMyAdmin

Ou pour Enterprise Linux

yum --enablerepo=remi-test install phpMyAdmin

Je vous laisse découvrir cette nouvelle version qui intègre beaucoup de nouveautés, et remonter vos impressions.

 

Mise en place de l’HPKP en utilisant un certificat letsencrypt

Didier Fabert Par défaut, letsencrypt génère une clé et une demande de certificat à chaque renouvellement, ce qui modifie l’empreinte du certificat et rend donc HPKP inutilisable. Il existe pourtant un autre moyen de faire: générer un clé et une demande de certificat à la main et laisser à letsencrypt seulement le soin de générer le certificat à partir de ce dernier. Si letsencrypt est (ou a … Continue reading Mise en place de l’HPKP en utilisant un certificat letsencrypt »

Mise en place de l’HPKP en utilisant un certificat letsencrypt

Didier Fabert Par défaut, letsencrypt génère une clé et une demande de certificat à chaque renouvellement, ce qui modifie l’empreinte du certificat et rend donc HPKP inutilisable. Il existe pourtant un autre moyen de faire: générer un clé et une demande de certificat à la main et laisser à letsencrypt seulement le soin de générer le certificat à partir de ce dernier. Si letsencrypt est (ou a … Continue reading Mise en place de l’HPKP en utilisant un certificat letsencrypt »

Apports de Fedora à l'écosystème du Logiciel Libre

Charles-Antoine Couret

Il est courant, au sein de la communauté du Logiciel Libre, de présenter une distribution GNU/Linux comme une simple intégration, ou un assemblage de tous les logiciels qu'elle propose. Une sorte de glu entre eux.

Si c'est sans doute le cas de certaines d'entre elles, nous ne pouvons en conclure que c'est toujours le cas. En particulier, la distribution Fedora va au delà de ce constat. Ses objectifs et sa communauté lui permettent de réaliser d'autres choses. En effet depuis sa création Fedora est une vitrine technologique et à ce titre a essayé de mettre en avant ou de développer des solutions novatrices pour le Logiciel Libre. Mais depuis Fedora 21, sortie fin 2011, Fedora s'est découpée en trois produits distincts. Si finalement une Fedora Workstation et Server ont accès aux mêmes paquets, le projet a souhaité fournir des expériences utilisateur adaptées à chaque cas d'usage dès la fin de l'installation. Par conséquent, Fedora Workstation a sa liste de travail pour intégrer et développer de nouvelles solutions pour améliorer l'usage bureautique de l'utilisateur.

Et si la distribution Fedora est souvent considérée comme une version de tests pour la distribution Red Hat Enterprise Linux (RHEL) de Red Hat nous allons constater que finalement toute la communauté tire des bénéfices de ses travaux.

Le présent article est une adaptation des articles de blogs ici et de Christian Schaller qui m'en a donné l'autorisation. Il a fait l'objet d'une conférence lors des JM2L de fin novembre 2017 dont vous pouvez retrouver la diapo.

Expérience utilisateur

GNOME Logiciels

Logiciels_accueil.png Logiciels_GIMP.png Logiciels_GIMP_2.png

GNOME Logiciels est un pur produit de la vision Fedora Workstation de la distribution Linux à devenir pour simplifier la vie de ses utilisateurs. Essayer de reprendre certains codes provenant des magasins applicatifs concurrents, en proposant uniquement des applications graphiques (et donc visibles pour le commun des mortels), avec des captures d'écran, des notes des utilisateurs et des commentaires.

Mais l'objectif est de fournir un tout intégré. GNOME Logiciels est donc capable de détecter si vous avez une police qui manque pour afficher un contenu dans une langue exotique, ou encore un codec multimédia pour votre film. Ainsi il peut vous proposer de l'installer à la volée au travers d'une pop-up. Il gère également de manière transparente les extensions de GNOME Shell, les mises à jour et les mises à niveau du système en passant par les firmwares des différents périphériques.

L'ensemble repose sur un format de fichier nommé appdata qui se retrouve peu à peu dans les sources de tous les logiciels concernés. Cela ouvre la possibilité à partir des mêmes données d'offrir différentes expériences utilisateur, de ne remplir et de ne traduire ces métadonnées qu'une fois.

Fedora Media Writer

Fedora_Media_Writer.png

Fedora s'est attaqué au fameux problème de la création d'une image installable sur clé USB. D'habitude il faut télécharger un fichier ISO, l'installer en suivant des procédures pas toujours évidentes et tester l'image. Et comprendre ce qu'est un fichier ISO n'est pas évident pour tous les utilisateurs.

Fedora propose un utilitaire multiplateforme, pour Windows, macOS et Linux afin de choisir l'image souhaitée (Fedora GNOME ou KDE par exemple) et procéder automatiquement à l'installation sur le média choisi. Cela est plus clair et simple pour l'utilisateur qui a besoin de moins de compétences de base pour débuter. Cela permet également de simplifier la documentation et la communication autour du projet Fedora, cette étape étant maîtrisée et ne dépendant plus de la gestion des ISO sur différents systèmes.

De plus, certains se sont amusés à concevoir par impression 3D autour d'un Raspberry Pi, un petit ordinateur nommé Fedorator pour les salons où le visiteur peut enficher sa clé USB, choisir l'image qu'il souhaite et repartir avec une image de Fedora prête à l'emploi en totale autonomie.

L'outil fleet commander

FleetCommander.png

Fleet Commander est un outil pour gérer des flottes entières de machines sous Fedora ou RHEL, notamment pour les universités, les grosses entreprises ou les administrations et ainsi, de pouvoir gérer des milliers de machines. Il est possible de configurer les postes avec un navigateur Web ou l'outil Cockpit.

Actuellement il est capable de configurer tout ce qui est accessible pour dconf (l'utilitaire de configuration de GNOME), les extensions de cet environnement, Networkmanager (dont le VPN ou le proxy). Ou de facilement migrer la configuration de Evolution vers un autre serveur de courriels. Ou encore configurer Firefox, Libreoffice et quelques autres outils plus génériques.

La configuration est intégrée avec la solution FreeIPA, et donc les informations sont liées au compte LDAP ce qui évite devoir gérer un autre service en interne.

Les performances de GNOME Shell

Carlos Garnacho a travaillé quelque temps pour identifier et résoudre des soucis de performance dans GNOME Shell.

Que l'on aime ou pas GNOME Shell, réduire sa consommation en ressource est toujours une bonne chose.

Les portails captifs

Portail_d_acces.png

Dans les lieux publics, il y a souvent du Wifi offert aux clients que ce soit dans les aéroports ou hôtels par exemple. Pour permettre l'authentification de l'utilisateur, un portail captif est souvent en place pour que l'utilisateur saisisse ses identifiants et obtienne ainsi accès à Internet.

L'inconvénient de ce procédé est qu'il est indispensable d'ouvrir une page Web quelconque pour visualiser la page d'authentification et ainsi obtenir l'accès à Internet après la saisie. Si vous ne le faites pas, la machine sera considérée comme connectée au réseau mais n'aura pas accès aux ressources du réseau. Les requêtes pour collecter ses courriels échoueraient sans indication sur la raison de l'échec.

Fedora a travaillé pour que GNOME et NetworkManager ouvrent automatiquement une fenêtre dédiée si un portail captif a été détecté. Permettant la saisie des identifiants nécessaires sans que l'utilisateur ait besoin d'effectuer cette manipulation manuellement.

Améliorations de GNOME

Renommage_en_masse.png

Quelques fonctionnalités de GNOME sont lœuvre de la communauté de Fedora. Par exemple Carlos Soriano a apporté le renommage multiple dans Nautilus et un rafraîchissement de son interface.

Terminal_notification.png

GNOME Terminal notifie maintenant l'utilisateur quand une tâche est terminée (vraiment utile pour connaître la fin d'une longue compilation). GNOME Builder a reçu également quelques ajouts de ce côté là.

libratbag

Fedora a conçu cette bibliothèque pour faciliter la configuration des souris et d'autres périphériques d'entrées dont les manettes. Il a également une collaboration en cours avec des constructeurs pour améliorer la gestion des souris orientées jeux.

Un outil est en cours d'élaboration pour tirer partie de cette bibliothèque sous GNOME. Pour configurer les touches additionnelles, les différentes résolutions de la souris ou encore les LEDs qui arborent ces souris.

La libération des codecs audio

Ces deux dernières années, des brevets autour des codecs audio MP3, ACC et AC3 sont peu à peu tombés. Cela autorisait de fait les différents composants libres à fournir leur gestion par défaut sans devoir verser de contributions financières. Red Hat et Fedora étant des entités américaines légalement, il fallait s'assurer que tout était clair de ce côté avant de fournir le feu vert. Pour des questions légales, il vaut mieux éviter de se fier aux déclarations de personnes inconnues sur Internet.

Red Hat Legal a donc planché sur la question de la conformité des solutions libres sur le sujet (comme GStreamer) avec leur développeur pour s'assurer qu'ils ne violaient pas des brevets sur des sujets annexes encore en cours sur ces technologies ou que les brevets étaient vraiment bien tombés.

Le feu vert juridique a été donné, et normalement ces codecs ont pu intégrer la section codecs libres des différentes bibliothèques qui les implémentent.

L'intégration de Qt sous GNOME

Okular_sans_QGNOMEPlatform.png Okular-QGNOMEPlatform.png

Avec Fedora 25 et 26, il y a eu un travail pour concevoir QtGNOME plateforme. Un outil pour faire en sorte que les applications réalisées avec Qt (au lieu de GTK+ pour les applications de GNOME) se marient bien visuellement.

Cela passe aussi par l'intégration des différents paramètres, avec prise en compte du HiDPI, du thème sombre, du thème GTK+ actuel, etc. L'objectif est de minimiser au maximum l'écart visuel entre les deux écosystèmes et de s'assurer que les choix de l'utilisateur s'appliquent aux deux bibliothèques. Ainsi l'utilisateur en configurant son interface GNOME n'a pas à reproduire ces changements sous Qt également, cela est automatiquement pris en charge.

Gestion du matériel

Intégration du pilote propriétaire de nVidia

Hans de Goede et Simone Caronni ont collaboré sur les travaux de NVIDIA et d'Adam Jackson autour de glvnd. Donc si vous installez le pilote propriétaire NVIDIA provenant de dépôts correctement gérés, il n'y aura plus de conflits avec la pile graphique fournie par Mesa.

Et en cas de mise à jour du noyau, s'il y a incompatibilité, le pilote libre nouveau prendra automatiquement le relais le temps que le pilote propriétaire soit à nouveau disponible. Cela permet de corriger un souci récurrent du délai de la mise à disposition des derniers pilotes de nVidia pour le nouveau noyau.

Gestion native du pilote invité de VirtualBox dans le noyau Linux

Hans de Goede a travaillé pour incorporer dans le noyau Linux officiel le pilote invité de VirtualBox. D'habitude une fois votre système invité installé, il était nécessaire de télécharger les pilotes additionnels et les installer dans la machine virtuelle pour bénéficier du plein écran, du dossier partagé, etc.

Cette étape ne sera bientôt qu'un lointain souvenir, le pilote Linux a déjà été accepté une partie du pilote le mois dernier. La gestion du dossier partagé devrait suivre bientôt.

La mise à jour des firmwares

Richard Hughes, mainteneur de PackageKit, de GNOME Logiciels et fwup, a fourni un grand effort pour simplifier la mise à jour des différents firmwares de nos machines : l'UEFI de nos cartes mères, celui des souris, des cartes réseaux ou graphiques, etc. Il y a quelques mois, il a collaboré avec Logitech pour fournir la mise à jour automatique du firmware d'une souris de la marque suite à une faille de sécurité récemment découverte.

De nombreux ordinateurs portables de Dell sont aussi pris en charge par cette solution, qui est pleinement intégrée à GNOME Logiciels également. Des discussions seraient en cours avec d'autres marques.

Ce travail reste important pour garantir la sécurité de composants matériels souvent invisibles et même négligés dans la politique de mise à jour du système.

L'autonomie

GNOME_Battery_bench.png

Souvent Linux est considéré comme moins performant que Windows ou macOS sur la question de la gestion de l'énergie. Pour résoudre ce problème, Christian Kellner et Owen Taylor ont œuvré pour fournir un utilitaire Battery Bench Tool pour récupérer des données variées et exploitables pour identifier les problèmes réels et y apporter des solutions. En effet cet outil génère différents scénarios d'utilisation pour identifier les composants responsables de la baisse d'autonomie (le processeur, le disque dur, etc.) et ce de manière reproductible.

Pendant ce temps, Hans de Goede souhaite activer de manière générique la SATA Link Power Management dans le noyau ce qui améliorait la gestion de l'énergie des périphériques accessibles via SATA, soit des SSD ou disques dur principalement. Seulement par le passé, cela causait des corruptions de données sur certains SSD à cause d'un firmware foireux. Il souhaite des retours utilisateurs sur la question pour savoir le gain d'autonomie estimé et si des corruptions de données sont à signaler ou non.

Hans souhaite également désactiver les modules multimédia des processeurs quand ils ne sont pas actifs, ce qui permet de gagner un peu d'autonomie également.

RADV

Fedora a apporté l'implémentation libre et complète de Vulkan pour les GPU d'AMD qui sont certifiés compatibles avec la norme.

Travail de fond

Wayland

Wayland est le remplaçant de l'ancêtre X11 dans les systèmes UNIX ou Linux. La remise à plat du protocole comporte son lot de surprisses et de régressions. Après 8 ans de gestation, et 2 ans de tests intensifs sous Fedora, il a été proposé par défaut pour Fedora 25, première distribution à avoir fait ce changement nativement.

Cela a été possible grâce à Olivier Fourdan, Jonas Ådahl et la communauté Wayland pour notamment résoudre les derniers problèmes de stabilité et de rendu. L'attention a été portée notamment sur XWayland pour assurer la compatibilité ascendante avec les applications ne pouvant utiliser Wayland directement aujourd'hui.

Mais le travail continue. Actuellement, ils travaillent sur l'affichage distant du bureau.

libinput

Cette bibliothèque est le Wayland des entrées du système (claviers, souris, touchpad, tablettes tactiles, écrans tactiles, etc.). Mais contrairement à Wayland, il était possible d'utiliser libinput dans Xorg directement (à des fins de tests mais aussi pour améliorer ce dernier). Cela a permis l'apport de la gestion du multitouch par exemple et a rendu libinput fonctionnel plus rapidement.

Portage vers GTK+3

GTK+2 est une bibliothèque graphique qui fut très utilisée mais qui est aujourd'hui obsolète. Elle ne bénéficie plus d'évolutions, et ne gèrera jamais Wayland ou le HiDPI par exemple. La communauté Fedora a œuvré pour porter Libreoffice et Firefox sous GTK+3 en proposant des correctifs en ce sens, et en proposant ces logiciels en premier avec cette implémentation. Ce qui a donné lieu à l'identification de nombreux bogues qui ont pu être corrigés avant leur prise en charge par d'autres distributions.

Ce qui est prévu à l'avenir

Fedora n'est pas en reste pour l'avenir. Outre son évolution vers la modularité, la communauté a d'autres éléments à ajouter.

La construction des applications Flatpak

Owen Taylor travaille sur l'infrastructure de Fedora pour apporter de quoi construire des applications Flatpak directement, en parallèle des formats RPM classiques. L'objectif est de faciliter la vie du mainteneur qui pourra concevoir en une fois la construction des deux formats et les autres distributions ou utilisateurs pourront récupérer le Flatpak à jour directement s'ils le souhaitent.

Pipewire

Wim Taymans, co-auteur de GStreamer et grand contributeur de PulseAudio projette d'étendre le spectre de ses travaux avec Pipewire. Il souhaite avec ce composant unifier l'audio et la vidéo sous Linux. L'objectif au long terme n'est pas de gérer uniquement la vidéo, mais de prendre en compte également tout type de flux audio. Et non seulement il souhaite s'attaquer aux cas d'usage de PulseAudio, mais également à ceux de Jack (qui est plutôt dédié au traitement audio professionnel ou d'amateurs éclairés). Cela passera notamment par une compatibilité avec les applications existantes sans réécriture de leur part.

L'objectif est de rendre la plateforme Linux plus attirante pour les compositeurs et autres artistes du milieu. Pipewire a fait sa première apparition dans Fedora 27.

Optimus et équivalents

Adam Jackson travaille autour d'un nouveau composant glxmux pour permettre l'exploitation de plusieurs sessions GLX sur un même système. L'objectif est de pouvoir facilement passer de la pile Mesa, à celle d'Intel ou à celle de nVidia. Cela est bien sûr en lien pour un usage transparent de solutions hybrides comme Optimus.

Les contacts avec nVidia sont nombreux à ce sujet pour finir ce travail.

Prise en charge de Thunderbolt 3 et de sa politique de sécurité

Christian Kellner travaille sur un autre pan du matériel moderne de l'ordinateur : Thunderbolt 3. Cette norme concurrente de l'USB type C propose en plus des fonctionnalités usuelles de ce type de bus (affichage, transfert de données, etc.) un système de sécurité pour éviter qu'un périphérique inconnu ait accès de manière privilégiée à votre machine dans votre dos.

Grâce à son travail, l'utilisateur est notifié dans GNOME de la présence d'un nouveau périphérique et peut ainsi décider de lui octroyer l'accès ou non à certaines fonctionnalités de la machine.

Tests automatisés des ordinateurs portables

Les ordinateurs portables sont des machines ayant un grand nombre de périphériques en simultanée ce qui nécessite une bonne intégration avec le système d'exploitation pour en tirer pleinement partie.

Pour détecter les régressions dans ce domaine, et avoir une vue d'ensemble de la compatibilité actuelle du parc, Benjamin Berg conçoit une suite de tests dédiés à la question avec un site listant les fameux rapports.

Le HiDPI fractionnel

Les affichages à haute densité de pixels (HiDPI) sont de plus en plus fréquents dans les configurations milieu et haut de gamme. Ils permettent d'améliorer la finesse de l'affichage sans pour autant réduire la taille des éléments affichés. Cependant sur certains modèles d'écran, les ratios entiers du HiDPI produisent des affichages trop grands ou trop petits. Pour résoudre ce problème, on souhaite introduire des valeurs intermédiaires non entières. Le travail est en cours pour le permettre, d'autant qu'il faut s'assurer que cela s'applique également aux programmes tournant avec XWayland sans nécessiter une gestion directe depuis leur bibliothèque graphique ou de leur gestionnaire de fenêtre.

Le HDR

La technologie High Dynamic Range se répand de plus en plus sur les moniteurs et les ordinateurs aujourd'hui. L'objectif est de fournir une plus grande gamme de rendu des couleurs. Une collaboration est en cours avec Intel, nVidia et AMD sur le sujet pour fournir ce type de solution à Linux.

Fedora Atomic : c'est de la bombe

Fedora travaille beaucoup pour concevoir un système atomique, selon les travaux de Project Atomic. Actuellement c'est la version Cloud qui en bénéficie, mais les travaux sur la version Workstation sont en cours. Le but est d'améliorer la fiabilité du système, il sera ainsi possible de facilement mettre à jour le système en diminuant les risques liés à une procédure exécutée dans un ordre différent que prévu par exemple. Le retour à une situation antérieure en cas de problème sera également plus facile en sélectionnant l'état précédent du système dans GRUB.

Devant l'intérêt récent pour cette technologie, un groupe de travail a été constitué ce mois-ci pour faire avancer le sujet.

Conclusion

Comme nous pouvons le voir avec cette liste d'exemples, une distribution denvergure comme Fedora, mais aussi Ubuntu, Debian ou autres peuvent apporter bien plus qu'une liste de logiciels à installer. Ils proposent des nouveaux outils, participent au développement ou à la stabilisation des logiciels qu'ils fournissent, peuvent collaborer avec d'autres entreprises ou communautés pour améliorer la prise en charge de leur produit.

Et encore, nous ne parlons que des travaux significatifs de ces trois dernières années, Fedora a également œuvré pour PulseAudio, systemd, PackageKit, NetworkManager, le pilote libre nouveau et tant d'autres composants par le passé !

Et malgré les liens forts entre Red Hat et Fedora, nous pouvons voir que beaucoup des travaux de Fedora de ces dernières années ont bénéficié à la plupart des distributions aujourd'hui. Et cela n'est pas près de se terminer.

Petit bilan de Rawhide, épisode 6, février 2018

Charles-Antoine Couret

Cela fait longtemps que je n'ai pas discuté de Rawhide, il faut dire que j'ai été assez occupé et Rawhide n'a pas présenté de grandes nouveautés pendant quelques temps.

Mon ordinateur personnel est bien entendu passé à Rawhide dès la sortie de Fedora 27 finale, mi-novembre 2017.

Calendrier pour Fedora 28

Cette semaine, Fedora 28 et Fedora Rawhide se sont séparés. Maintenant Fedora Rawhide fait officiellement référence au futur Fedora 29. Cela fait suite à la recompilation de masse de début février, qui a permis de passer à GCC 8 pour la compilation de tous les logiciels (et donc d'identifier et de corriger pas mal de bogues liés à ce genre de changement, côté GCC comme des logiciels compilés).

Très bientôt Fedora 28 devrait bénéficier de l'activation de Bodhi, ce qui permettra d'utiliser le karma pour rapporter des problèmes rapidement. La fonction dnf downgrade sera aussi possible par conséquent.

Changements

Epiphany gère enfin la synchronisation avec Firefox. C'est fonctionnel et très appréciable. Si Firefox reste mon navigateur de prédilection, c'est sympa d'avoir une application GNOME qui peut exploiter mes données depuis Firefox convenablement lors de mes différents tests.

La calculette de GNOME corrige enfin une régression d'il y a près de 6-8 mois, il était impossible de réutiliser le résultat d'un calcul si le logiciel était en français. Cela venait en fait d'une confusion interne, le précédent résultat étant nommé par convention ans, comme la traduction de years en français. D'où l'importance de tester la traduction des logiciels pour chaque langue.

LibreOffice 6.0 est proposé, pas mal d'améliorations dont la compatibilité avec les fichiers de Microsoft Office.

Fedora 28 avance bien, près de 53 changements sont officiellement annoncés ce qui constitue normalement un record ! Si beaucoup sont sous le capots, d'autres devraient concerner pas mal de monde : augmentation de l'autonomie des ordinateurs portables, gestion native des pilotes invités de VirtualBox, gestion de la sécurité du protocole Thunderbolt 3, une refonte d'Anaconda et de la configuration post-installation, etc.

Problèmes

Pas mal de problèmes. J'ai de gros soucis de corruption d'affichage avec GNOME, en particulier lors de la lecture de vidéos. Le rapport de bogue à ce sujet patine, je ne parviens pas à identifier la partie responsable du problème pour le moment..

Je continue à subir le bogue d'IBus avec Wayland, si je change la disposition clavier (cas de mes portables en AZERTY qui peuvent bénéficier de mon clavier BÉPO externe) les raccourcis claviers utilisent la disposition des touches de la disposition par défaut. C'est très très frustrant.

Puis ce mois-ci, deux bogues coup sur coup qui sont assez importants. Tout d'abord GDM qui refuse de se lancer (à cause d'une incompatibilité dans Mutter). Puis GNOME sous Wayland qui ne prend plus en compte les clics souris suite à un changement dans mesa.

Utilisation de rkhunter

Edouard Bourguignon Il y a des outils assez simple à utiliser et qui permettent de s'assurer de l'intégrité de son système. Dans la recherche de rootkit et autres backdoors, l'outil incontournable est rkhunter. Nous allons d'abord rappeller ce qu'est un rootkit, puis voir, à la fin de ce billet comment installer et utiliser rkhunter.

Utilisation de rkhunter

Edouard Bourguignon

Il y a des outils assez simple à utiliser et qui permettent de s'assurer de l'intégrité de son système. Dans la recherche de rootkit et autres backdoors, l'outil incontournable est rkhunter. Nous allons d'abord rappeller ce qu'est un rootkit, puis voir, à la fin de ce billet comment installer et utiliser rkhunter.

Pour faire la chasse aux rootkits, il y a plusieurs pistes. Mais une des plus simples est de faire appelle à un bon chasseur : rkhunter.

Tout d'abord, qu'est-ce qu'un rootkit ?

Le but de tout rootkit est de permettre l'execution de programmes, si possible en tant qu'utilisateur root (tant qu'à faire), le tout en étant le plus discret possible (très important). La discrétion est le point clef de ce genre de pratique, et les pirates sont débordants d'idées pour y arriver. Souvent, vous ne verrez donc rien dans la liste des processus, ou dans la liste des ports en écoute etc. Certains rootkits savent même lire votre /etc/sysconfig/iptables pour voir un port dans une plage que vous aurez autorisée (merci aux clients bittorrent par ex).

Il est logique aussi de comparer le rootkit à un virus, vu que les plus évolués possèdent des mécanismes pour se reinstaller, voire se propager. Certains rootkits modifient par exemple la commande ls, pour qu'à chaque fois qu'elle est appellé s'assure que le rootkit est présent. Difficile du coup, de nettoyer une machine prise au piège avec un rootkit.

Qu'elle est la cible des rootkits ?

Malheureusement, comme souvent sur Internet, la faune sauvage est assez agressive et aveugle. Dû à l'automatisation des attaques (robots et autres scripts), du moment que vous laissez un service accessible sur internet (SSH, ou autres), vous êtes concernés. Que ce soit donc une machine personnelle, ou un serveur, peu importe. Tout le monde est potentiellement concernés !

Comment un rootkit s'installe ?

Comme expliqué juste avant, le premier point pour un attaquant (pirate, robots/scripts), c'est de trouver un point d'entrée sur la machine. Les scripts naviguent sur toutes les adresses internet, un peu au hasard, mais passeront plus de temps quand un service répondra sur un port donné. Ce peut donc être via l'exploitation d'une faille, sur un serveur Apache, sur un vieux démon SSH, ou même du brute force pour trouver votre mot de passe (qui n'aurait que 8 caractères par ex). Une fois la faille trouvée, l'installation du rootkit est elle aussi souvent automatisée. Le but étant la rapidité, et surtout de savoir s'installer sur n'importe quel Linux. Donc en quelques secondes, des fois via l'utilisation de certains exploit pour gagner des privilges supérieurs, le rootkit est posé. Souvent il y a même compilation de binaires, histoire d'être sûr de bien tourner sur l'architecture et l'OS de la machine en question !

Certains rootkits, les plus évolués, essayeront tout de suite de se repliquer sur les autres machines accessibles via le réseau de la 1ere machine infectée. Si vous avez des machines à peu près identiques, vous aurez droit à un rootkit sur chacunes. Merci aux outils modernes qui permettent tel que puppet, Ansible pour l'homogénéisation des configurations.

Comment tracer un rootkit ?

Tout comportement qui semblerait suspect, peut venir d'un rootkit. Par ex votre connexion SSH ne passe plus du premier coup, quelques commandes shell sont plus lentes que d'habitude. Ou alors des pics de charge à des horaires plutôt inhabituels.

Comme le rootkit est une espèce très discrète, ce sera très difficile de le voir tourner. L'installation du rootkit a pu remplacer la commande ps pour l'exclure de la liste des process. Il y a aussi quelques humoristes qui appellent leur démon rootkit "sshd " ou "crontab", bref vous ne verrez jamais un "rootkitd".

Rechercher les fichiers créés ou modifiées récemment est une bonne idée. Les rootkits ont souvent besoin de déposer des binaires, en compiler certains, et même s'ils pensent à nettoyer les logs, leurs fichiers doivent bien exister quelque part. La grosse partie du fonctionnement de rkhunter est basée la dessus.

Le point commun à une grosse partie des rootkits est qu'ils modifient des fichiers sur l'OS. Ils déposent ou modifient certains binaires. Je ferais sûrement un billet spécifique sur la recherche de modifications sur Fedora/CentOS, car avec RPM c'est assez efficace.

Heureusement il existe des outils dédiés à la recherche de rootkits. Revenons donc à rkhunter.

Comment installer rkhunter ?

Son installation est très simple vu qu'il est fournit dans les dépôts EPEL.

Si vous n'avez pas encore EPEL :

# yum install epel-release

Ensuite, tout simplement :

# yum install rkhunter

Et voilà !

Comment utiliser rkhunter ?

Pour lancer un scan complet :

# rkhunter --checkall

Le scan peut prendre un certain temps, et il faudra valider pour chaque categorie le passage à la suivante.

Nous verrons sûrement dans un autre billet les utilisations un peu plus poussées de rkhunter.

Participez à la journée de test consacrée au noyau Linux 4.15

Charles-Antoine Couret

Aujourd'hui, ce jeudi 22 février, est une journée dédiée à un test précis : sur le noyau Linux 4.15. En effet, durant le cycle de développement, l'équipe d'assurance qualité dédie quelques journées autours de certains composants ou nouveautés afin de remonter un maximum de problèmes sur le sujet.

Elle fournit en plus une liste de tests précis à effectuer. Il vous suffit de les suivre, comparer votre résultat au résultat attendu et le notifier.

En quoi consiste ce test ?

Le noyau Linux est le cœur du système Fedora (et des autres distributions GNU/Linux). C'est le composant qui fait le lien entre les logiciels et le matériel. C'est lui qui permet aux processus de travailler ensemble sur un même ordinateur et de pouvoir utiliser les périphériques (à travers des pilotes) disponibles sur chaque machine.

C'est donc un composant critique et il est nécessaire de s'assurer qu'il fonctionne.

Les tests du jour couvrent :

  • L'exécution des tests automatisés par défaut et ceux de performances ;
  • Vérifier que la machine démarre correctement ;
  • Vérifier que le matériel est bien exploité (affichage, claviers, souris, imprimantes, scanners, USB, carte graphique, carte son, webcam, réseau filaire et wifi, etc.)

Comment y participer ?

Vous pouvez vous rendre sur la page des tests pour lister les tests disponibles et rapporter vos résultats. La page wiki récapitule les modalités de la journée.

Si vous avez besoin d'aide lors du déroulement des tests, n'hésitez pas de faire un tour sur IRC pour recevoir un coup de main sur les canaux #fedora-test-day et #fedora-fr (respectivement en anglais et en français) sur le serveur Freenode.

En cas de bogue, il est nécessaire de le rapporter sur le BugZilla. Si vous ne savez pas faire, n'hésitez pas à consulter la documentation correspondante.

De plus, si une journée est dédiée à ces tests, il reste possible de les effectuer quelques jours plus tard sans problème ! Les résultats seront globalement d'actualité.

Le blog déménage !

Guillaume Kulakowski

Non, ce blog n'est pas mort !

Je vais bientôt le remettre en activité. Je commence déjà par le faire voler de ses propres ailles et par l'héberger sur son propre VPS. J'ai fais le choix pour ça d'un VC1M de chez Scaleway. Je reviendrais dans un prochain billet sur le choix de cet hébergement made in Online.fr a.k.a Free.fr mais également sur le pourquoi 4Go de RAM pour un simple blog (teaser: il n'y a pas que ça ;-)).

Pour ce qui est de l'architecture, comme pour famas, je suis passé sur du 100% Docker via mes containers migrés pour l'occasion de CentOS vers Alpine. Pour finir, j'ai également fait le choix du full https via Let's encrypt.

Voila, maintenant il ne reste plus qu'à bloguer à nouveau, j'ai déjà quelques idées d'articles autour de la domotique, de Docker voir peut-être un peu de Trail.

PHP version 7.1.15RC1 et 7.2.3RC1

Remi Collet

Les versions Release Candidate sont disponibles dans le dépôt remi-test pour Fedora et Enterprise Linux (RHEL / CentOS) afin de permettre au plus grand nombre de les tester. Elles sont  fournit en Software Collections, pour une installation en parallèle, solution idéale pour ce type de tests. (uniquement pour x86_64) et également en paquets de base.

Les RPM de PHP version 7.2.3RC1 sont disponibles en SCL dans le dépôt remi-test et les paquets de base dans le dépôt remi-php72-test pour Fedora 25-27 et Enterprise Linux.

Les RPM de PHP version 7.1.15RC1 sont disponibles en SCL dans le dépôt remi-test et les paquets de base dans le dépôt remi-test pour Fedora 26-27 ou  remi-php71-test pour Fedora 24-25 et Enterprise Linux.

PHP Version 7.0 est désormais en mode maintenance de sécurité, il n'y aura donc plus de Release Candidate.

emblem-notice-24.pngInstallation : voir la Configuration du dépôt et choisir la version.

Installation en parallèle, en Software Collections de PHP 7.2 :

yum --enablerepo=remi-test install php72

Installation en parallèle, en Software Collections de PHP 7.1 :

yum --enablerepo=remi-test install php71

Mise à jour, de PHP 7.2 :

yum --enablerepo=remi-php72,remi-php72-test update php\*

Mise à jour, de PHP 7.1:

yum --enablerepo=remi-php71,remi-php71-test update php\*

A noter : la version 7.2.3RC1 est aussi disponible dans Fedora rawhide pour la QA.

emblem-notice-24.pngLes paquets pour EL-7 on été construit à partir de RHEL-7.4.

emblem-notice-24.pngLa version RC est généralement identique à la version finale (aucun changement accepté, à l'exception de correctifs de sécurité).

Software Collections (php71, php72)

Paquets standards (php)

FreeIPA deuxième partie en approche...

Sylvain Réault FreeIPA deuxième partie en approche... VINDICATORs mar 13/02/2018 - 21:53

Votez pour les fonds d'écran supplémentaires de Fedora 28 !

Charles-Antoine Couret

nuancier-f24-voted.png

Depuis Fedora 20, la livrée du système par défaut contient quelques fonds d'écrans additionnels. Et comme d'habitude, les contributeurs pouvaient soumettre leurs propres dessins ou photographies pour décorer cette nouvelle version.

Maintenant que la période de soumission s'est achevée, nous passons à la phase de vote. Tout possesseur d'un compte FAS peut en sélectionner 16 parmi les dizaines qui sont disponibles. Les plus populaires seront bien évidemment choisis et disponibles dans la Fedora 28 à sa sortie.

Le vote se déroule dans l'application Nuancier jusqu'au 26 février !

Pour ceux que cela intéresse, le badge associé à cette action nécessite une action manuelle. Il suffit de cliquer sur un lien, proposé sur la page après le vote.

FreeIPA-French Client (en Français)

Sylvain Réault FreeIPA-French Client (en Français) VINDICATORs dim 11/02/2018 - 11:51

Optimisation de script et autres...

Sylvain Réault Optimisation de script et autres... VINDICATORs ven 09/02/2018 - 19:44

En hivers met tes chaussettes

Matthieu Saulnier

Et oui! c'est la saison des chaussettes, histoire de pas attraper froid. On peut même enfiler plusieurs paires, pour avoir encore plus chaud! Dans mon précédent article, je vous parlais de Dotclear, et d'une feature très attendue, à propos de socket. Depuis la sortie de la toute dernière version, il est désormais possible de brancher l'application PHP au serveur de base de données via socket Unix (aussi appelé UDS: Unix Domain Socket).

Avant, on avait pas le choix, on était obligé de passer par le socket TCP. La plupart d'entre nous, pour ne pas dire "tout le monde", passe par les sockets TCP. Lorsque qu'une application quelconque se connecte au serveur de base de données par son port d'écoute, on passe par le socket TCP sans même s'en rendre compte. Et pourquoi on fait tous cela ? Parce que c'est facile, il faut l'admettre. Pourtant, des fichiers verrou (socket Unix), il y en a beaucoup dans les systèmes GNU/Linux et pour cause, ils sont plus performants et plus rapides que les sockets TCP. Je laisse le soin au lecteur de chercher des comparatifs de test de performances, c'est pas ce qui manque sur le web. Et donc des fichiers verrou il y en a partout, il y en a même un fourni par le serveur de base de données MariaDB.

Dans l'optique de faire gagner quelques millisecondes à Dotclear, d'augmenter la réactivité du site, et d'alléger la charge sur la machine, le choix d'UDS s'impose de par ses perfs au banc d'essai. Pour rajouter un peu de challenge (sinon où est le fun ?), la migration aura lieu dans un environnement entièrement full stack Docker, avec SELinux activé.

Présentation du système

L'infrastructure se découpe en trois containers docker, le premier est pour Apache, il communique déjà avec PHP-FPM par UDS. Le second est pour PHP-FPM, il communique initialement avec MariaDB par socket TCP. Enfin la 3ème brique est pour MariaDB, qui doit maintenir un nom de container constant pour permettre le linkage entre containers avec PHP-FPM (à cause du socket TCP).

Avant toute opération de mise à jour des unités systemd, un travail préparatoire avait déjà été réalisé sur les containers Docker de PHP-FPM et Mariadb quelques mois auparavant. Les unités systemd de MariaDB et PHP-FPM s'étaient vu assigner un volume supplémentaire pour la socket Unix de MariaDB: /run/mariadb/. Comme vous le constaterez dans les unités systemd, les images Docker utilisées sont des images custom, les sources sont disponibles dans mes dépôts Git.

À titre de comparatif uniquement, je joins la version initiale de mes unités systemd:

Les contextes SELinux de certains volumes ne sont pas en MLS (option :Z) dès que le volume est partagé entre deux containers (par exemple /run/mariadb), sinon cela entraine des conflits, et indubitablement des AVC denied. Il sont donc volontairement abaissés en Targeted (option :z) ce qui reste toutefois raisonnable.

Étape 1

Mise à jour manuelle du code de Dotclear. Ce mode de mise à jour est très bien documenté, aussi je ne ne m'attarderais pas trop sur cette étape, à un détail près: Je travaille dans un nouveau répertoire! Si le répertoire racine se nomme /var/www/html, alors je fais tout dans /var/www/html.new et je vous invite à en faire autant! Allez-y, décompressez...

Pour ceux qui ont une politique de permissions en écriture très restrictive, n'oubliez pas de donner les droits en écriture des répertoires suivant au serveur web:

  • themes/
  • plugins/

Sinon ça marche moins bien.

Étape 2

Modification du fichier inc/config.php. C'est à cette étape que l'on va reconfigurer l'accès à la base de données en utilisant la socket Unix. Dans le nouveau fichier (/var/www/html.new/inc/config.php), remplacer:

define('DC_DBHOST','nom_d_hote_du_serveur');

par:

define('DC_DBHOST','localhost:/run/mariadb/mariadb.socket');

La clé ici c'est "localhost:". Après vous pouvez renseigner n'importe quel chemin vers le fichier verrou. Toutes les autres options de configuration restent inchangées.

Restez vigilent par rapport au nom d'utilisateur mariadb, l'accès par le fichier verrou est encore différent des hôtes '@192.168.0.X', '@localhost' et '@%' (et oui, socket TCP oblige...). Il est évident qu'un léger paramétrage de l'utilisateur mariadb est requis.

Étape 3

Couper les services systemd. Pas tous les services, seulement ceux qui accèdent à la base de données, pour pouvoir faire un dernier dump de backup. On coupe:

  1. apache-casper-site.service
  2. php-fpm-casper-site.service

Étape 4

Lancer le backup de la base de données... Comment ça vous n'avez pas de script de backup automatique ?!? Non je rigole, évidemment que vous en avez un. Même quelque chose de simple, une tâche Cron.daily qui contient ce qui suit est largement suffisant:

# setup mdp user mysql
MYSQL_USER_PASSWORD=truc

# utliser mysqldump à la place
mysqldump --opt -S /contener/mariadb-casper-site/run/mariadb/mariadb.socket \
          -u casperlefantom \
          -p$MYSQL_USER_PASSWORD \
          casperlefantom > db-casperlefantom-$(date +%Y%m%d).dump

# compresser les fichiers de dump
pxz db-*-$(date +%Y%m%d).dump

# garder ici les 30 derniers jours
find . -name "db-*.dump.xz" -atime +30 -delete

Il va falloir que je remplace un jour mes tâches Cron par des timers systemd, mais on verra ça une autre fois...

Étape 5

On remplace /var/www/html par /var/www/html.new. Les services sont coupés, on peut y aller sereinement. Par mesure de précaution, on garde l'ancien répertoire sous le nom /var/www/html.old, on est jamais trop prudent.

Puis on peut relancer les services systemd précédemment coupés:

  1. php-fpm-casper-site.service
  2. apache-casper-site.service

Et le tour est joué. Grâce à ce mode opératoire, le site est resté down moins d'une minute, c'est juste parfait. Cerise sur le gâteau, Dotclear passe par la socket Unix pour mettre à jour la base de données à la dernière version installée.

Étape 6

Rendez vous sur la page web /admin/ pour terminer la mise à jour.

Capture décran_2018-01-01_09-06-08.png

Pas besoin de commenter, je trouve le message ma foi explicite. On a terminé l'upgrade de Dotclear.

Et maintenant que l'on a eu ce qu'on voulait, on peut fignoler la mise à jour des unités systemd. Il y a en effet un certain nombre de modifications à effectuer avant que tout soit parfait. Comptons-les ensemble :-)

Étape 7

Modification des unités systemd, ou plutôt nettoyage de printemps.

Souvenez-vous, en début d'article j'avais écrit que MariaDB devait avoir un nom de container constant afin que le linkage inter-container fonctionne à tous les coups. Le linkage, c'est pour les ports d'écoute, et donc les sockets TCP. Sauf que nous ne les utilisons plus à présent, ce qui signifie que l'option --name peut être supprimée.

De même, si le container porte à présent un nom aléatoire, la commande ExecStartPre ne sert plus à rien, puisqu'il n'y a plus d'ancien container portant ce nom-là à supprimer.

Et enfin, l'option -p pour exposer le port d'écoute servait à la fois pour le script de dump de backup, mais aussi pour mes opérations de maintenance sur le serveur de base de données (gestion des utilisateurs mariadb, mots de passe, etc...). Je n'en ai plus l'utilité puisque je passe par UDS pour le backup.

Voici la version finale de mariadb-casper-site.service.

Parlons à présent de l'unité de PHP-FPM. On peut supprimer toute dépendance au service MariaDB car il n'y a plus de linkage inter-container nécessaire. Concrètement, les options BindTo et --link passent à la trappe, les services After seront juste épurés.

Et voilà le résultat final de php-fpm-casper-site.service.

Étape 8

Reload systemd. Faudrait pas oublier, quand même.

En une commande c'est réglé, et pas besoin de rebooter:

# systemctl daemon-reload

Étape 9

Modifier le script de dump de backup.

L'infrastructure vient d'être profondément remaniée. Ce remaniement engendre des modifications et des adaptations de tout ce qu'il y a autour, notamment les scripts de backup. N'oubliez pas de contrôler tout ce qui gravite autour des services principaux, c'est malheureusement trop facile de casser un backup automatique avec un petit changement d'architecture de rien du tout.

En hivers met tes chaussettes

Matthieu Saulnier

Et oui! c'est la saison des chaussettes, histoire de pas attraper froid. On peut même enfiler plusieurs paires, pour avoir encore plus chaud! Dans mon précédent article, je vous parlais de Dotclear, et d'une feature très attendue, à propos de socket. Depuis la sortie de la toute dernière version, il est désormais possible de brancher l'application PHP au serveur de base de données via socket Unix (aussi appelé UDS: Unix Domain Socket).

Avant, on avait pas le choix, on était obligé de passer par le socket TCP. La plupart d'entre nous, pour ne pas dire "tout le monde", passe par les sockets TCP. Lorsque qu'une application quelconque se connecte au serveur de base de données par son port d'écoute, on passe par le socket TCP sans même s'en rendre compte. Et pourquoi on fait tous cela ? Parce que c'est facile, il faut l'admettre. Pourtant, des fichiers verrou (socket Unix), il y en a beaucoup dans les systèmes GNU/Linux et pour cause, ils sont plus performants et plus rapides que les sockets TCP. Je laisse le soin au lecteur de chercher des comparatifs de test de performances, c'est pas ce qui manque sur le web. Et donc des fichiers verrou il y en a partout, il y en a même un fourni par le serveur de base de données MariaDB.

Dans l'optique de faire gagner quelques millisecondes à Dotclear, d'augmenter la réactivité du site, et d'alléger la charge sur la machine, le choix d'UDS s'impose de par ses perfs au banc d'essai. Pour rajouter un peu de challenge (sinon où est le fun ?), la migration aura lieu dans un environnement entièrement full stack Docker, avec SELinux activé.

Présentation du système

L'infrastructure se découpe en trois containers docker, le premier est pour Apache, il communique déjà avec PHP-FPM par UDS. Le second est pour PHP-FPM, il communique initialement avec MariaDB par socket TCP. Enfin la 3ème brique est pour MariaDB, qui doit maintenir un nom de container constant pour permettre le linkage entre containers avec PHP-FPM (à cause du socket TCP).

Avant toute opération de mise à jour des unités systemd, un travail préparatoire avait déjà été réalisé sur les containers Docker de PHP-FPM et Mariadb quelques mois auparavant. Les unités systemd de MariaDB et PHP-FPM s'étaient vu assigner un volume supplémentaire pour la socket Unix de MariaDB: /run/mariadb/. Comme vous le constaterez dans les unités systemd, les images Docker utilisées sont des images custom, les sources sont disponibles dans mes dépôts Git.

À titre de comparatif uniquement, je joins la version initiale de mes unités systemd:

Les contextes SELinux de certains volumes ne sont pas en MLS (option :Z) dès que le volume est partagé entre deux containers (par exemple /run/mariadb), sinon cela entraine des conflits, et indubitablement des AVC denied. Il sont donc volontairement abaissés en Targeted (option :z) ce qui reste toutefois raisonnable.

Étape 1

Mise à jour manuelle du code de Dotclear. Ce mode de mise à jour est très bien documenté, aussi je ne ne m'attarderais pas trop sur cette étape, à un détail près: Je travaille dans un nouveau répertoire! Si le répertoire racine se nomme /var/www/html, alors je fais tout dans /var/www/html.new et je vous invite à en faire autant! Allez-y, décompressez...

Pour ceux qui ont une politique de permissions en écriture très restrictive, n'oubliez pas de donner les droits en écriture des répertoires suivant au serveur web:

  • themes/
  • plugins/

Sinon ça marche moins bien.

Étape 2

Modification du fichier inc/config.php. C'est à cette étape que l'on va reconfigurer l'accès à la base de données en utilisant la socket Unix. Dans le nouveau fichier (/var/www/html.new/inc/config.php), remplacer:

define('DC_DBHOST','nom_d_hote_du_serveur');

par:

define('DC_DBHOST','localhost:/run/mariadb/mariadb.socket');

La clé ici c'est "localhost:". Après vous pouvez renseigner n'importe quel chemin vers le fichier verrou. Toutes les autres options de configuration restent inchangées.

Restez vigilent par rapport au nom d'utilisateur mariadb, l'accès par le fichier verrou est encore différent des hôtes '@192.168.0.X', '@localhost' et '@%' (et oui, socket TCP oblige...). Il est évident qu'un léger paramétrage de l'utilisateur mariadb est requis.

Étape 3

Couper les services systemd. Pas tous les services, seulement ceux qui accèdent à la base de données, pour pouvoir faire un dernier dump de backup. On coupe:

  1. apache-casper-site.service
  2. php-fpm-casper-site.service

Étape 4

Lancer le backup de la base de données... Comment ça vous n'avez pas de script de backup automatique ?!? Non je rigole, évidemment que vous en avez un. Même quelque chose de simple, une tâche Cron.daily qui contient ce qui suit est largement suffisant:

# setup mdp user mysql
MYSQL_USER_PASSWORD=truc

# utliser mysqldump à la place
mysqldump --opt -S /contener/mariadb-casper-site/run/mariadb/mariadb.socket \
          -u casperlefantom \
          -p$MYSQL_USER_PASSWORD \
          casperlefantom > db-casperlefantom-$(date +%Y%m%d).dump

# compresser les fichiers de dump
pxz db-*-$(date +%Y%m%d).dump

# garder ici les 30 derniers jours
find . -name "db-*.dump.xz" -atime +30 -delete

Il va falloir que je remplace un jour mes tâches Cron par des timers systemd, mais on verra ça une autre fois...

Étape 5

On remplace /var/www/html par /var/www/html.new. Les services sont coupés, on peut y aller sereinement. Par mesure de précaution, on garde l'ancien répertoire sous le nom /var/www/html.old, on est jamais trop prudent.

Puis on peut relancer les services systemd précédemment coupés:

  1. php-fpm-casper-site.service
  2. apache-casper-site.service

Et le tour est joué. Grâce à ce mode opératoire, le site est resté down moins d'une minute, c'est juste parfait. Cerise sur le gâteau, Dotclear passe par la socket Unix pour mettre à jour la base de données à la dernière version installée.

Étape 6

Rendez vous sur la page web /admin/ pour terminer la mise à jour.

Capture décran_2018-01-01_09-06-08.png

Pas besoin de commenter, je trouve le message ma foi explicite. On a terminé l'upgrade de Dotclear.

Et maintenant que l'on a eu ce qu'on voulait, on peut fignoler la mise à jour des unités systemd. Il y a en effet un certain nombre de modifications à effectuer avant que tout soit parfait. Comptons-les ensemble :-)

Étape 7

Modification des unités systemd, ou plutôt nettoyage de printemps.

Souvenez-vous, en début d'article j'avais écrit que MariaDB devait avoir un nom de container constant afin que le linkage inter-container fonctionne à tous les coups. Le linkage, c'est pour les ports d'écoute, et donc les sockets TCP. Sauf que nous ne les utilisons plus à présent, ce qui signifie que l'option --name peut être supprimée.

De même, si le container porte à présent un nom aléatoire, la commande ExecStartPre ne sert plus à rien, puisqu'il n'y a plus d'ancien container portant ce nom-là à supprimer.

Et enfin, l'option -p pour exposer le port d'écoute servait à la fois pour le script de dump de backup, mais aussi pour mes opérations de maintenance sur le serveur de base de données (gestion des utilisateurs mariadb, mots de passe, etc...). Je n'en ai plus l'utilité puisque je passe par UDS pour le backup.

Voici la version finale de mariadb-casper-site.service.

Parlons à présent de l'unité de PHP-FPM. On peut supprimer toute dépendance au service MariaDB car il n'y a plus de linkage inter-container nécessaire. Concrètement, les options BindTo et --link passent à la trappe, les services After seront juste épurés.

Et voilà le résultat final de php-fpm-casper-site.service.

Étape 8

Reload systemd. Faudrait pas oublier, quand même.

En une commande c'est réglé, et pas besoin de rebooter:

# systemctl daemon-reload

Étape 9

Modifier le script de dump de backup.

L'infrastructure vient d'être profondément remaniée. Ce remaniement engendre des modifications et des adaptations de tout ce qu'il y a autour, notamment les scripts de backup. N'oubliez pas de contrôler tout ce qui gravite autour des services principaux, c'est malheureusement trop facile de casser un backup automatique avec un petit changement d'architecture de rien du tout.

En hivers met tes chaussettes

Matthieu Saulnier

Et oui! c'est la saison des chaussettes, histoire de pas attraper froid. On peut même enfiler plusieurs paires, pour avoir encore plus chaud! Dans mon précédent article, je vous parlais de Dotclear, et d'une feature très attendue, à propos de socket. Depuis la sortie de la toute dernière version, il est désormais possible de brancher l'application PHP au serveur de base de données via socket Unix (aussi appelé UDS: Unix Domain Socket).

Avant, on avait pas le choix, on était obligé de passer par le socket TCP. La plupart d'entre nous, pour ne pas dire "tout le monde", passe par les sockets TCP. Lorsque qu'une application quelconque se connecte au serveur de base de données par son port d'écoute, on passe par le socket TCP sans même s'en rendre compte. Et pourquoi on fait tous cela ? Parce que c'est facile, il faut l'admettre. Pourtant, des fichiers verrou (socket Unix), il y en a beaucoup dans les systèmes GNU/Linux et pour cause, ils sont plus performants et plus rapides que les sockets TCP. Je laisse le soin au lecteur de chercher des comparatifs de test de performances, c'est pas ce qui manque sur le web. Et donc des fichiers verrou il y en a partout, il y en a même un fourni par le serveur de base de données MariaDB.

Dans l'optique de faire gagner quelques millisecondes à Dotclear, d'augmenter la réactivité du site, et d'alléger la charge sur la machine, le choix d'UDS s'impose de par ses perfs au banc d'essai. Pour rajouter un peu de challenge (sinon où est le fun ?), la migration aura lieu dans un environnement entièrement full stack Docker, avec SELinux activé.

Présentation du système

L'infrastructure se découpe en trois containers docker, le premier est pour Apache, il communique déjà avec PHP-FPM par UDS. Le second est pour PHP-FPM, il communique initialement avec MariaDB par socket TCP. Enfin la 3ème brique est pour MariaDB, qui doit maintenir un nom de container constant pour permettre le linkage entre containers avec PHP-FPM (à cause du socket TCP).

Avant toute opération de mise à jour des unités systemd, un travail préparatoire avait déjà été réalisé sur les containers Docker de PHP-FPM et Mariadb quelques mois auparavant. Les unités systemd de MariaDB et PHP-FPM s'étaient vu assigner un volume supplémentaire pour la socket Unix de MariaDB: /run/mariadb/. Comme vous le constaterez dans les unités systemd, les images Docker utilisées sont des images custom, les sources sont disponibles dans mes dépôts Git.

À titre de comparatif uniquement, je joins la version initiale de mes unités systemd:

Les contextes SELinux de certains volumes ne sont pas en MLS (option :Z) dès que le volume est partagé entre deux containers (par exemple /run/mariadb), sinon cela entraine des conflits, et indubitablement des AVC denied. Il sont donc volontairement abaissés en Targeted (option :z) ce qui reste toutefois raisonnable.

Étape 1

Mise à jour manuelle du code de Dotclear. Ce mode de mise à jour est très bien documenté, aussi je ne ne m'attarderais pas trop sur cette étape, à un détail près: Je travaille dans un nouveau répertoire! Si le répertoire racine se nomme /var/www/html, alors je fais tout dans /var/www/html.new et je vous invite à en faire autant! Allez-y, décompressez...

Pour ceux qui ont une politique de permissions en écriture très restrictive, n'oubliez pas de donner les droits en écriture des répertoires suivant au serveur web:

  • themes/
  • plugins/

Sinon ça marche moins bien.

Étape 2

Modification du fichier inc/config.php. C'est à cette étape que l'on va reconfigurer l'accès à la base de données en utilisant la socket Unix. Dans le nouveau fichier (/var/www/html.new/inc/config.php), remplacer:

define('DC_DBHOST','nom_d_hote_du_serveur');

par:

define('DC_DBHOST','localhost:/run/mariadb/mariadb.socket');

La clé ici c'est "localhost:". Après vous pouvez renseigner n'importe quel chemin vers le fichier verrou. Toutes les autres options de configuration restent inchangées.

Restez vigilent par rapport au nom d'utilisateur mariadb, l'accès par le fichier verrou est encore différent des hôtes '@192.168.0.X', '@localhost' et '@%' (et oui, socket TCP oblige...). Il est évident qu'un léger paramétrage de l'utilisateur mariadb est requis.

Étape 3

Couper les services systemd. Pas tous les services, seulement ceux qui accèdent à la base de données, pour pouvoir faire un dernier dump de backup. On coupe:

  1. apache-casper-site.service
  2. php-fpm-casper-site.service

Étape 4

Lancer le backup de la base de données... Comment ça vous n'avez pas de script de backup automatique ?!? Non je rigole, évidemment que vous en avez un. Même quelque chose de simple, une tâche Cron.daily qui contient ce qui suit est largement suffisant:

# setup mdp user mysql
MYSQL_USER_PASSWORD=truc

# utliser mysqldump à la place
mysqldump --opt -S /contener/mariadb-casper-site/run/mariadb/mariadb.socket \
          -u casperlefantom \
          -p$MYSQL_USER_PASSWORD \
          casperlefantom > db-casperlefantom-$(date +%Y%m%d).dump

# compresser les fichiers de dump
pxz db-*-$(date +%Y%m%d).dump

# garder ici les 30 derniers jours
find . -name "db-*.dump.xz" -atime +30 -delete

Il va falloir que je remplace un jour mes tâches Cron par des timers systemd, mais on verra ça une autre fois...

Étape 5

On remplace /var/www/html par /var/www/html.new. Les services sont coupés, on peut y aller sereinement. Par mesure de précaution, on garde l'ancien répertoire sous le nom /var/www/html.old, on est jamais trop prudent.

Puis on peut relancer les services systemd précédemment coupés:

  1. php-fpm-casper-site.service
  2. apache-casper-site.service

Et le tour est joué. Grâce à ce mode opératoire, le site est resté down moins d'une minute, c'est juste parfait. Cerise sur le gâteau, Dotclear passe par la socket Unix pour mettre à jour la base de données à la dernière version installée.

Étape 6

Rendez vous sur la page web /admin/ pour terminer la mise à jour.

Capture décran_2018-01-01_09-06-08.png

Pas besoin de commenter, je trouve le message ma foi explicite. On a terminé l'upgrade de Dotclear.

Et maintenant que l'on a eu ce qu'on voulait, on peut fignoler la mise à jour des unités systemd. Il y a en effet un certain nombre de modifications à effectuer avant que tout soit parfait. Comptons-les ensemble :-)

Étape 7

Modification des unités systemd, ou plutôt nettoyage de printemps.

Souvenez-vous, en début d'article j'avais écrit que MariaDB devait avoir un nom de container constant afin que le linkage inter-container fonctionne à tous les coups. Le linkage, c'est pour les ports d'écoute, et donc les sockets TCP. Sauf que nous ne les utilisons plus à présent, ce qui signifie que l'option --name peut être supprimée.

De même, si le container porte à présent un nom aléatoire, la commande ExecStartPre ne sert plus à rien, puisqu'il n'y a plus d'ancien container portant ce nom-là à supprimer.

Et enfin, l'option -p pour exposer le port d'écoute servait à la fois pour le script de dump de backup, mais aussi pour mes opérations de maintenance sur le serveur de base de données (gestion des utilisateurs mariadb, mots de passe, etc...). Je n'en ai plus l'utilité puisque je passe par UDS pour le backup.

Voici la version finale de mariadb-casper-site.service.

Parlons à présent de l'unité de PHP-FPM. On peut supprimer toute dépendance au service MariaDB car il n'y a plus de linkage inter-container nécessaire. Concrètement, les options BindTo et --link passent à la trappe, les services After seront juste épurés.

Et voilà le résultat final de php-fpm-casper-site.service.

Étape 8

Reload systemd. Faudrait pas oublier, quand même.

En une commande c'est réglé, et pas besoin de rebooter:

# systemctl daemon-reload

Étape 9

Modifier le script de dump de backup.

L'infrastructure vient d'être profondément remaniée. Ce remaniement engendre des modifications et des adaptations de tout ce qu'il y a autour, notamment les scripts de backup. N'oubliez pas de contrôler tout ce qui gravite autour des services principaux, c'est malheureusement trop facile de casser un backup automatique avec un petit changement d'architecture de rien du tout.

PHPUnit 7.0

Remi Collet

Les RPM de PHPUnit version 7.0 sont disponibles dans le dépôt remi pour Fedora ≥ 24 et pour Enterprise Linux (CentOS, RHEL...)

Documentation :

emblem-notice-24.pngCette nouvelle version nécessite PHP ≥ 7.1 et n'est pas rétro-compatible avec les versions précédentes, donc s'installe en parallèle des versions 5 et 6.

Installation, Fedora :

dnf --enablerepo=remi install phpunit7

Installation, Enterprise Linux :

yum --enablerepo=remi install phpunit7

Remarque: cet outil est une pièce essentielle de la QA PHP dans Fedora. Je prévois rapidement, une mise à jour dans Fedora 28, dès que les revues des dépendances seront approuvées :

  • 1541346: phpunit7 - The PHP Unit Testing framework
  • 1541343: php-phpunit-php-code-coverage6 - PHP code coverage information
  • 1541342: php-phpunit-php-token-stream3 - Wrapper around PHP tokenizer extension
  • 1541340: php-phpunit-mock-objects6 - Mock Object library for PHPUnit
  • 1541337: php-sebastian-diff3 - Diff implementation
  • 1541334: PHP Utility class for timing - php-phpunit-php-timer2
  • 1539554: php-phpunit-php-invoker2 - Invoke callables with a timeout

Page générée le 13 oct 2019 à 06:15