44 votes

Installation de Node.js : openssl non installé

J'ai installé libssl-dev et openssl mais j'obtiens ceci lorsque j'installe node.js :

> ./configure && make && make install                                                                                          
Checking for program g++ or c++          : /usr/bin/g++                                                                                                               
Checking for program cpp                 : /usr/bin/cpp                                                                                                               
Checking for program ar                  : /usr/bin/ar                                                                                                                
Checking for program ranlib              : /usr/bin/ranlib                                                                                                            
Checking for g++                         : ok                                                                                                                         
Checking for program gcc or cc           : /usr/bin/gcc                                                                                                               
Checking for gcc                         : ok                                                                                                                         
Checking for library dl                  : yes                                                                                                                        
Checking for openssl                     : not found                                                                                                                  
Checking for function SSL_library_init   : yes                                                                                                                        
Checking for header openssl/crypto.h     : yes                                                                                                                        
Checking for library rt                  : yes                                                                                                                        
Checking for fdatasync(2) with c++       : yes 

Openssl n'est pas trouvé. Mais le nœud a été installé avec succès.

Pourquoi openssl n'est-il pas trouvé ? Quelqu'un a le même problème ?

49voto

Ashwin Bharambe Points 469

@weng : J'ai eu le même problème. La solution a été facile : sudo apt-get install pkg-config :)

35voto

Conspicuous Compiler Points 4762

Ce n'est pas exactement une question de programmation. Mais...

Réponse rapide

Le programme d'installation vérifie la prise en charge d'OpenSSL de deux manières. La première vérification a échoué pour vous, la seconde a réussi. Pour moi, la première vérification a réussi (voir ci-dessous). Les deux méthodes fonctionnent.

Réponse plus longue

Voici ce que j'ai obtenu quand je l'ai construit :

$ sudo apt-get install libssl-dev
$ ./configure
Checking for program g++ or c++          : /usr/bin/g++ 
Checking for program cpp                 : /usr/bin/cpp 
Checking for program ar                  : /usr/bin/ar 
Checking for program ranlib              : /usr/bin/ranlib 
Checking for g++                         : ok  
Checking for program gcc or cc           : /usr/bin/gcc 
Checking for gcc                         : ok  
Checking for library dl                  : yes 
Checking for openssl                     : yes 
Checking for library rt                  : yes 
<---snip--->

En supposant que vous avez téléchargé node.js v0.2.3 de http://nodejs.org/ la configuration est principalement effectuée par waf dans le fichier wscript.

Les lignes pertinentes sont :

  if not Options.options.without_ssl:
    if conf.check_cfg(package='openssl',
                      args='--cflags --libs',
                      uselib_store='OPENSSL'):
      Options.options.use_openssl = conf.env["USE_OPENSSL"] = True
      conf.env.append_value("CPPFLAGS", "-DHAVE_OPENSSL=1")
    else:
      libssl = conf.check_cc(lib='ssl',
                             header_name='openssl/ssl.h',
                             function_name='SSL_library_init',
                             libpath=['/usr/lib', '/usr/local/lib', '/opt/local/lib', '/usr/sfw/lib'],
                             uselib_store='OPENSSL')
      libcrypto = conf.check_cc(lib='crypto',
                                header_name='openssl/crypto.h',
                                uselib_store='OPENSSL')

La première partie est assez simple. Elle lance pkgconfig. Voici ce qui se passe lorsque je fais l'équivalent à la main :

 $ pkg-config openssl --cflags --libs
 -lssl -lcrypto  

La deuxième série de vérifications est exécutée si pkg-config ne parvient pas à confirmer que le paquetage est installé. Dans ce cas, il essaie de compiler un programme gcc trivial qui vérifie l'existence de fonctions dans libcrypt et libssl. Si les deux réussissent, l'installation continue. Si l'un d'entre eux échoue, il y a une erreur fatale, et le script explose.

26voto

joshbennett Points 437

J'ai eu le même problème avec Debian 6. J'ai dû installer libcurl4-openssl-dev.

Passez en utilisateur Root, ou utilisez sudo, puis exécutez :

apt-get install libcurl4-openssl-dev

Cela a réglé le problème pour moi.

10voto

Hal Points 783

Si vous utilisez Centos 5.x, assurez-vous d'installer openssl-devel avant de faire ./configure.

yum install openssl-devel

Cela a résolu le même problème pour moi dans centos.

3voto

mindon Points 21
  1. confirmez que votre openssl est installé.
  2. s'il est installé, confirmez son chemin dans ['/usr/lib', '/usr/local/lib', '/opt/local/lib', '/usr/sfw/lib'] ;
  3. si ce n'est pas dans ces chemins, essayez les options suivantes avec votre chemin openssl correct ./configure --openssl-libpath=/usr/local/ssl/lib --openssl-includes=/usr/local/ssl/include

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X