1 votes

Commandes Apache échouant avec : AH00141 : Impossible d'initialiser le générateur de nombres aléatoires

De nombreuses commandes Apache, telles que apache2 -v y apachectl graceful échouent avec ce message :

(38)Function not implemented: AH00141: Could not initialize random number generator

Des recherches en ligne ont suggéré que cela pourrait être causé par les caractères chinois dans le système de gestion de l'information. PATH ; je ne vois aucun personnage sauf a-z et de l'entaille. D'autres ont suggéré d'omettre /dev/random y /dev/urandom les deux sont présents sur mon système.

Si je cours cat /proc/sys/kernel/random/entropy_avail J'obtiens des chiffres compris entre 130 et 250. Est-ce trop bas ? Cela pourrait-il avoir un rapport avec le problème ?

D'autres possibilités ?

Ubuntu 16.04.7 LTS
Apache 2.4.46

1voto

Zakaria Points 175

Selon ce rapport de bogue Debian il semble qu'Apache s'attende à ce qu'une fonction du noyau soit présente, ce qui n'est pas nécessairement le cas pour tous les noyaux :

Le problème est que si la bibliothèque est configurée (au moment de la construction) pour USE_GETRANDOM, alors elle suppose que l'appel getrandom() sera disponible et s'il échoue, cela devient une erreur fatale. Sur mon système, je n'ai pas de getrandom() parce que j'utilise un ancien noyau, mais d'autres pourraient (plus légitimement) avoir l'option désactivée sur un noyau récent construit sur mesure.

La meilleure solution serait probablement de passer à une version plus récente d'Ubuntu. Ubuntu 16.04 a plus de cinq ans ou dix cycles de publication et ne sera plus supportée dans moins d'un mois. Ou comme le mainteneur du PPA mentionné l'a dit :

Avec l'expérience d'Ubuntu 14.04 Trusty EOL, je ne peux pas assez insister sur le fait que vous devriez planifier à l'avance et avoir vos serveurs déjà mis à niveau dès maintenant. Hier, c'était trop tard.

1voto

Guy D Points 11

Je voudrais remercier @Liam Morland pour sa réponse ci-dessus qui m'a permis de rectifier ce problème après une mise à jour apt-get peu judicieuse sur Ubuntu 16.04. Pour ceux qui pourraient trouver cela utile, voici exactement ce que j'ai fait :

  1. J'ai vérifié le journal d'apt-get pour voir exactement quels logiciels avaient été mis à jour lors du dernier tour, et donc ce qui devait être déclassé. sudo tail /var/log/apt/history.log

  2. J'ai cherché dans les données pour savoir quelles variantes de libapr1 et libutil1 j'avais installées. J'ai constaté que pour moi c'était :

  • libapr1
  • libaprutil1
  • libaprutil1-dbd-sqlite3
  • libaprutil1-ldap

Votre système peut varier !

  1. Aptitude installée ( sudo apt-get install aptitude ). Il est incroyablement utile et m'a donné des indications sur la façon de corriger les dépendances, alors qu'apt-get me donnait du charabia lorsque j'essayais de rétrograder.

  2. En utilisant la commande sudo aptitude versions libapr1 sudo aptitude versions libaprutil1 J'ai noté les numéros de version exacts qu'aptitude pouvait fournir. Dans mon cas, la version de libaprutil1 ne pouvait pas être simplement 1.5.4, elle devait être 1.5.4-1build1.

  3. En utilisant le signe = pour spécifier la version, j'ai exécuté sudo aptitude install libapr1=1.5.2-3 . Aptitude m'a ensuite donné une liste d'autres logiciels qui auraient été rétrogradés ou cesseraient de fonctionner si je continuais. J'ai quitté le processus d'installation, et en utilisant l'erreur, j'ai créé une commande unique pour rétrograder tous les logiciels qu'aptitude avait identifiés. C'était à moi :

sudo aptitude install libapr1=1.5.2-3 libaprutil1=1.5.4-1build1 libaprutil1-ldap=1.5.4-1build1 libaprutil1-dbd-sqlite3=1.5.4-1build1 apache2=2.4.18-2ubuntu3.17 apache2-bin=2.4.18-2ubuntu3.17 apache2-data=2.4.18-2ubuntu3.17

Ceci est basé sur mon installation spécifique, donc veuillez vérifier ce que vous avez avant d'exécuter cette commande.

  1. J'ai redémarré Apache et tout a fonctionné à nouveau !

J'espère que cela aidera les autres personnes sur la route.

0voto

Liam Morland Points 41

Je l'ai résolu en rétrogradant libapr1 de la 1.7.0 à la 1.5.2. Pour que cela fonctionne, j'ai dû rétrograder libaprutil1 (et deux libaprutil1-* ) de 1.6.1 à 1.5.4. J'ai également dû m'en tenir à Apache 2.4.18.

0voto

Votre machine fonctionne-t-elle dans Solus / openvz ? alors le noyau d'openvz est trop vieux... Les machines ici ont le même problème sous Solus / Openvz (noyau 2.6.xx).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X