web-dev-qa-db-fra.com

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 est introuvable. Mais le nœud a été installé avec succès.

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

44
ajsie

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

Réponse rapide

Le programme d'installation vérifie la prise en charge d'OpenSSL de deux manières. Le premier contrôle a échoué pour vous, le second a réussi. Pour moi, le premier contrôle a réussi (voir ci-dessous). De toute façon ça marche.

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 ayez téléchargé node.js v0.2. à partir de http://nodejs.org/ , la configuration est principalement effectuée par waf dans le fichier wscript.

Les lignes concernées 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. Il exécute pkgconfig. Voici ce qui se passe lorsque je fais l'équivalent à la main:

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

Le deuxième ensemble de vérifications est exécuté si pkg-config ne parvient pas à confirmer que le package 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 ces deux réussissent, l'installation continue. Si l'un d'entre eux échoue, il y a une erreur fatale et le script explose.

35

@weng: J'ai eu le même problème. La solution était simple: Sudo apt-get install pkg-config :)

49
Ashwin Bharambe

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

Basculez vers l'utilisateur root ou utilisez Sudo, puis exécutez:

apt-get install libcurl4-openssl-dev

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

26
joshbennett

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

yum install openssl-devel

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

10
Hal

J'ai eu le même problème.

J'ai essayé

./configure --prefix=/opt/node --openssl-libpath=/usr/local/lib/

qui l'a résolu même si je pense que --openssl-libpath=/usr/local/lib/ n'est pas nécessaire

3
chatfeed
  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 de suivre les options avec votre chemin openssl correct ./configure --openssl-libpath=/usr/local/ssl/lib --openssl-includes=/usr/local/ssl/include
3
mindon

On dirait que je peux faire:

apt-get install lib32z1-dev
apt-get install pkg-config

pour supprimer systématiquement toutes les erreurs et avertissements concernant openssl lorsque je fais un nouveau déploiement de Rackspace avec Ubuntu 11.04 ou 11.10, au cas où cela aiderait quelqu'un d'autre.

Voici un Gist avec un aperçu du script sur lequel j'ai finalement choisi de faire tourner ces types d'instances avec node.js:

https://Gist.github.com/1606102

Modifier : mise à jour de l'essentiel pour refléter les mises à jour apportées au nœud, etc.

3
mikermcneil

Pour résoudre ce problème dans Ubuntu 12.04:

apt-get install pkg-config -y
2
bithavoc

Sudo apt-get install g ++ curl libssl-dev Apache2-utils

1
j03m

Pour les personnes disposant d'une nouvelle configuration Debian 6.0 (pour être plus précis: Debian 6.0.2.1 i386), les packages suivants doivent être installés pour exécuter node.js v.0.6.15 (la dernière version stable pour le moment): - build- essentiels - pkg-config - libssl-dev

Utilisez simplement aptitude -y install "package" ... j'espère que cela vous aidera tous les gars Debian. :)

1
Bouncner