Article original : How to Install MongoDB with OpenSSL 3 Support on Fedora 39
Dans ce tutoriel, vous apprendrez comment installer MongoDB avec le support de la dernière version d'OpenSSL sur le système d'exploitation Fedora Linux.
Si vous l'avez déjà installé, ce tutoriel vous aidera à corriger l'erreur de configuration OpenSSL de mongosh.
Pour suivre ce guide, vous aurez besoin d'un terminal avec un accès root et d'une connexion Internet pour télécharger les paquets.
Voici ce que nous allons couvrir :
- Le Cœur du Problème
- Solution de Contournement pour Installer MongoDB
- Comprendre l'Erreur OpenSSL de Mongosh
- Solution de Contournement pour Corriger l'Erreur sur les Installations Existantes de MongoDB
- Comment Installer MongoDB avec le Support d'OpenSSL 3 à partir de Zéro
- Conclusion
Le Cœur du Problème
Si vous consultez la documentation officielle de MongoDB et cherchez des instructions sur la façon de l'installer sur le système d'exploitation Fedora Workstation, vous ne trouverez rien. Mais vous pouvez trouver des instructions sur la façon de l'installer sur le système d'exploitation Red Hat Enterprise Linux.
"Le projet Fedora est la distribution communautaire en amont de Red Hat® Enterprise Linux." (Source : Red Hat)
En d'autres termes, Fedora et Red Hat Enterprise Linux sont très similaires.
"La principale différence entre les distributions communautaires et entreprises réside dans la décision de ce qui est important pour les utilisateurs. La direction d'une distribution communautaire est définie par les contributeurs, qui choisissent et maintiennent les paquets parmi la large variété d'options open source. La direction d'une distribution entreprise est définie par un fournisseur, en fonction des besoins de ses clients." (Source : Red Hat)
Maintenant, vous pourriez penser que vous pouvez installer MongoDB sur Fedora en suivant le tutoriel pour l'installer sur Red Hat. D'ailleurs, ce tutoriel est disponible à l'adresse Installer MongoDB Community Edition sur Red Hat ou CentOS.
Le problème est que cela ne fonctionnera pas – et pour le prouver, je vais essayer de l'installer et vous montrer ce qui se passe.
Note : J'utilise le pilote MongoDB pour Node.js qui, au moment où j'écris cet article, ne supporte pas la version actuelle de MongoDB (7.0). Je vais donc essayer d'installer sa version précédente (6.0).
Les étapes requises pour installer MongoDB sur Fedora sont les suivantes :
- Configurer le système de gestion des paquets
- Installer les paquets MongoDB
Pour effectuer la première étape, ouvrez votre terminal, obtenez un accès root et tapez ce qui suit :
# touch /etc/yum.repos.d/mongodb-org-6.0.repo
Maintenant, ouvrez le fichier en utilisant votre éditeur de texte préféré (j'utilise l'éditeur de texte Gnome, car il est fourni avec Fedora) :
# gnome-text-editor /etc/yum.repos.d/mongodb-org-6.0.repo
Et collez ces lignes :
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
Enregistrez le fichier et fermez-le.
La deuxième étape peut être effectuée en exécutant la commande suivante :
# dnf install -y mongodb-org
Après avoir exécuté la commande, vous obtiendrez une erreur similaire à celle-ci :
Fedora 39 - x86_64 - Updates 34 kB/s | 46 kB 00:01
MongoDB Repository 63 B/s | 391 B 00:06
Errors during downloading metadata for repository 'mongodb-org-6.0':
- Status code: 404 for https://repo.mongodb.org/yum/redhat/39/mongodb-org/6.0/x86_64/repodata/repomd.xml (IP: 65.8.214.17)
Error: Failed to download metadata for repo 'mongodb-org-6.0': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
Ignoring repositories: mongodb-org-6.0
Last metadata expiration check: 0:00:02 ago on Thu 30 Nov 2023 09:15:21 AM -03.
No match for argument: mongodb-org
Error: Unable to find a match: mongodb-org
Il s'agit d'une erreur 404, ce qui signifie que vous devez changer le baseurl du fichier qui configure le dépôt.
Si vous essayez d'ouvrir le baseurl dans votre navigateur, vous obtiendrez également une erreur 404 :
Erreur 404 de baseurl
C'est le cœur du problème.
Solution de Contournement pour Installer MongoDB
Vous pouvez déduire que pour résoudre le problème, vous devez changer la valeur assignée au baseurl. La question devient : quelle est l'URL qui mène à la page contenant les paquets ?
La réponse est offerte par la documentation officielle de MongoDB :
"Vous pouvez également télécharger les fichiers
.rpmdirectement depuis le dépôt MongoDB. Les téléchargements sont organisés par version de Red Hat / CentOS (par exemple,7), puis par version de MongoDB (par exemple,6.0), puis par architecture (par exemple,x86_64)." (Source : MongoDB)
Maintenant, en visitant le dépôt MongoDB, vous arriverez sur cette page :
Page du dépôt MongoDB
À partir de là, j'ai navigué vers le dépôt approprié, en sélectionnant ma version préférée de MongoDB et l'architecture du système. Vous devriez faire de même.
J'ai abouti à l'URL suivante :
https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/6.0/x86_64/RPMS/
Cette URL mène au dépôt où se trouvent les paquets de MongoDB 6.0 pour les systèmes basés sur une architecture x86_64.
Voici ce que j'ai trouvé là-bas :
_Paquets MongoDB 6.0 pour les systèmes x8664
Après m'être assuré que les paquets pouvaient être trouvés, j'ai mis à jour le fichier qui configure le dépôt. Mais le baseurl doit pointer vers le parent du répertoire RPMS, ce qui a abouti à l'URL suivante :
https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/6.0/x86_64/
J'ai exécuté :
# gnome-text-editor /etc/yum.repos.d/mongodb-org-6.0.repo
J'ai mis à jour le baseurl :
[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc
Et j'ai installé les paquets :
# dnf install -y mongodb-org
Voici les paquets qui ont été installés :
Installed:
mongodb-database-tools-100.9.3-1.x86_64
mongodb-mongosh-2.1.0-1.el8.x86_64
mongodb-org-6.0.12-1.el9.x86_64
mongodb-org-database-6.0.12-1.el9.x86_64
mongodb-org-database-tools-extra-6.0.12-1.el9.x86_64
mongodb-org-mongos-6.0.12-1.el9.x86_64
mongodb-org-server-6.0.12-1.el9.x86_64
mongodb-org-tools-6.0.12-1.el9.x86_64
openssl-1:3.1.1-4.fc39.x86_64
Comprendre l'Erreur OpenSSL de Mongosh
Pour confirmer l'installation du serveur de base de données, exécutez cette commande :
# mongod --version
Vous obtiendrez un message similaire à celui-ci :
db version v6.0.12
Build Info: {
"version": "6.0.12",
"gitVersion": "21e6e8e11a45dfbdb7ca6cf95fa8c5f859e2b118",
"openSSLVersion": "OpenSSL 3.1.1 30 May 2023",
"modules": [],
"allocator": "tcmalloc",
"environment": {
"distmod": "rhel90",
"distarch": "x86_64",
"target_arch": "x86_64"
}
}
Pour confirmer l'installation du shell, exécutez cette commande :
# mongosh --version
Et voici le message que vous obtiendrez :
mongosh: OpenSSL configuration error:
00899523A67F0000:error:030000A9:digital envelope routines:alg_module_init:unknown option:../deps/openssl/openssl/crypto/evp/evp_cnf.c:61:name=rh-allow-sha1-signatures, value=yes
Oups ! Il y a eu une erreur.
J'ai vérifié la version installée d'OpenSSL en exécutant cette commande :
# openssl version
Et j'ai obtenu ce résultat :
OpenSSL 3.1.1 30 May 2023 (Library: OpenSSL 3.1.1 30 May 2023)
Avec cela, j'ai écarté une éventuelle incompatibilité entre les versions installées et requises d'OpenSSL.
Après quelques recherches, j'ai découvert que :
"Il y a deux nouveaux paquets PPA créés à partir de la source mongosh : En plus de mongodb-mongosh, mongodb-mongosh-shared-openssl11 et mongodb-mongosh-shared-openssl3 sont également fournis. Ceux-ci sont liés à une bibliothèque OpenSSL dynamique installée sur le système." (Source : MongoDB Jira)
Lorsque j'ai regardé les paquets qui étaient installés, j'ai vu le paquet mongodb-mongosh. J'ai donc su que je devais le remplacer par mongodb-mongosh-shared-openssl3.
D'ailleurs,
"Le nom du paquet indique qu'il s'agit de la version de mongosh compilée contre openssl3." – Jack Woehr
Maintenant que nous comprenons le problème, corrigeons-le.
Solution de Contournement pour Corriger l'Erreur sur les Installations Existantes de MongoDB
Si vous avez déjà installé MongoDB, voici les étapes nécessaires pour résoudre le problème :
- Arrêter MongoDB
- Supprimer le paquet mongodb-org
- Supprimer le paquet mongodb-mongosh
- Installer le paquet mongodb-mongosh-shared-openssl3
- Activer MongoDB
Vous devez effectuer ces étapes dans le bon ordre. Si vous essayez d'installer le paquet mongodb-mongosh-shared-openssl3 sans désinstaller d'abord le paquet mongodb-mongosh, vous obtiendrez une erreur de conflit :
Error: Transaction test error:
file /usr/bin/mongosh from install of mongodb-mongosh-shared-openssl3-2.1.0-1.el8.x86_64 conflicts with file from package mongodb-mongosh-2.1.0-1.el8.x86_64
Si vous essayez de désinstaller le paquet mongodb-mongosh sans désinstaller d'abord le paquet mongodb-org, vous obtiendrez une erreur de dépendance :
error: Failed dependencies:
mongodb-mongosh is needed by (installed) mongodb-org-6.0.12-1.el9.x86_64
Pour arrêter MongoDB, exécutez cette commande :
# systemctl stop mongod
Note : La commande ne produira aucune sortie si tout se passe bien.
Pour supprimer les paquets mongodb-org et mongodb-mongosh, exécutez :
# rpm -e mongodb-org mongodb-mongosh
Note : Je n'utilise pas la commande dnf car elle supprimerait mongodb-org et toutes ses dépendances.
Vous pouvez également confirmer que seuls les deux paquets ont été supprimés en exécutant :
# rpm -qa | grep mongodb-*
La sortie devrait être :
mongodb-org-database-tools-extra-6.0.12-1.el9.x86_64
mongodb-database-tools-100.9.3-1.x86_64
mongodb-org-tools-6.0.12-1.el9.x86_64
mongodb-org-server-6.0.12-1.el9.x86_64
mongodb-org-mongos-6.0.12-1.el9.x86_64
mongodb-org-database-6.0.12-1.el9.x86_64
Pour installer les paquets mongodb-org et mongodb-mongosh-shared-openssl3, exécutez :
# dnf install -y mongodb-org mongodb-mongosh-shared-openssl3
Enfin, pour démarrer MongoDB avec votre système d'exploitation, exécutez :
# systemctl start mongod
Si vous voulez être sûr que la solution de contournement a fonctionné, exécutez :
# mongod --version
Puis ceci :
# mongosh --version
Maintenant, si vous êtes préoccupé par la destruction des données, sachez que les journaux et les bases de données ne seront supprimés que si vous exécutez les commandes suivantes :
# rm -r /var/log/mongodb
Et ceci :
# rm -r /var/lib/mongo
Une dernière chose : si vous exécutez mongosh et obtenez l'erreur suivante :
MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017
redémarrez votre machine. Cela résoudra le problème.
Comment Installer MongoDB avec le Support d'OpenSSL 3 à partir de Zéro
Si vous installez MongoDB pour la première fois, vous n'avez qu'à effectuer deux étapes :
- Configurer le système de gestion des paquets
- Installer les paquets MongoDB en les spécifiant individuellement
Vous pouvez effectuer la première étape en suivant ce que j'ai fait dans les sections Le Cœur du Problème et Solution de Contournement pour Installer MongoDB de cet article.
Cependant, pour installer les bons paquets, vous devriez remplacer cette commande :
# dnf install -y mongodb-org
par celle-ci :
# dnf install -y mongodb-org mongodb-mongosh-shared-openssl3 openssl mongodb-org-database-tools-extra mongodb-database-tools mongodb-org-tools mongodb-org-server mongodb-org-mongos mongodb-org-database
Vous pouvez confirmer que tous les paquets ont été installés en exécutant :
# rpm -qa | grep mongodb-*
Ce qui devrait produire une sortie similaire à celle-ci :
mongodb-org-database-tools-extra-6.0.12-1.el9.x86_64
mongodb-database-tools-100.9.3-1.x86_64
mongodb-org-tools-6.0.12-1.el9.x86_64
mongodb-org-server-6.0.12-1.el9.x86_64
mongodb-org-mongos-6.0.12-1.el9.x86_64
mongodb-org-database-6.0.12-1.el9.x86_64
mongodb-mongosh-shared-openssl3-2.1.0-1.el8.x86_64
mongodb-org-6.0.12-1.el9.x86_64
Gardez à l'esprit que la commande précédente ne produira que les paquets liés à mongodb. Pour confirmer l'installation d'OpenSSL, exécutez :
# openssl version
Vous devriez obtenir quelque chose comme ceci :
OpenSSL 3.1.1 30 May 2023 (Library: OpenSSL 3.1.1 30 May 2023)
Les paquets seront mis à jour avec votre système comme vous pouvez le voir dans la capture d'écran ci-dessous.
Mise à jour de mongodb-mongosh-shared-openssl3
Conclusion
Les mises à jour des paquets sont importantes, car elles apportent de nouvelles fonctionnalités et/ou augmentent la sécurité des applications. Mais elles peuvent également causer des maux de tête lorsqu'elles provoquent des erreurs comme celle que nous avons traitée dans cet article.
Bien que vous puissiez être tenté de revenir en arrière pour vous débarrasser du problème, ne faites pas cela. Essayez plutôt de le résoudre.
Prêter attention aux messages d'erreur, lire la documentation officielle et rechercher sur le Web sera probablement suffisant pour résoudre la majorité des problèmes que vous rencontrez.
De plus, savoir comment différentes commandes affectent la manière dont les paquets sont installés/désinstallés sur votre système d'exploitation peut vous faire gagner du temps et des données (si vous êtes sur une connexion mesurée).
Si cet article vous a été utile, marquez-le et partagez-le avec vos amis. Vous pouvez également me suivre sur Twitter.
À la prochaine !