Node.js安装:未安装openssl

时间:2010-10-20 04:13:49

标签: javascript ssl ubuntu node.js openssl

我已经安装了libssl-dev和openssl,但是当我安装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。但节点已成功安装。

为什么没有找到openssl?任何人都有同样的问题吗?

10 个答案:

答案 0 :(得分:49)

@weng:我遇到了同样的问题。解决方案很简单:sudo apt-get install pkg-config:)

答案 1 :(得分:35)

这不是一个编程问题。仍然...

快速回答

安装程序以两种方式检查OpenSSL支持。第一次检查失败,第二次检查成功。对我来说,第一次检查成功(见下文)。无论哪种方式都有效。

更长的答案

这是我建造它时得到的:

$ 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--->

假设您从node.js v0.2.3下载了http://nodejs.org/,配置主要由文件wscript中的waf完成。

相关的行是:

  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')

第一部分很简单。它运行pkgconfig。以下是当我手工完成等效操作时会发生的事情:

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

如果pkg-config无法确认已安装软件包,则运行第二组检查。在这种情况下,它尝试编译一个简单的gcc程序,它检查libcrypt和libssl中是否存在函数。如果这两个都成功,安装继续。如果其中一个失败,则会出现致命错误,并且脚本会爆炸。

答案 2 :(得分:26)

我使用Debian 6遇到了同样的问题。我必须安装libcurl4-openssl-dev。

切换到root用户,或使用sudo,然后运行:

apt-get install libcurl4-openssl-dev

这解决了我的问题。

答案 3 :(得分:10)

如果使用Centos 5.x,请确保在./configure之前安装openssl-devel。

yum install openssl-devel

这解决了我在centos中的同样问题。

答案 4 :(得分:3)

  1. 确认您的openssl已安装。
  2. 如果已安装,请在['/usr/lib', '/usr/local/lib', '/opt/local/lib', '/usr/sfw/lib'];
  3. 中确认其路径
  4. 如果不在这些路径中,请尝试使用正确的openssl路径执行以下选项 ./configure --openssl-libpath=/usr/local/ssl/lib --openssl-includes=/usr/local/ssl/include

答案 5 :(得分:3)

似乎我能做到:

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

在我使用Ubuntu 11.04或11.10进行全新的Rackspace部署时,始终如一地删除有关openssl的所有错误和警告,以防其他任何人离开。

这是一个关于脚本纲要的要点,我最终决定使用node.js来启动这些类型的实例:

https://gist.github.com/1606102

修改:更新了要点以反映对节点等所做的更新。

答案 6 :(得分:3)

我遇到了同样的问题。

我试过

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

即使我认为--openssl-libpath=/usr/local/lib/是不必要的

也解决了它

答案 7 :(得分:2)

在Ubuntu 12.04中解决此问题:

apt-get install pkg-config -y

答案 8 :(得分:1)

sudo apt-get install g ++ curl libssl-dev apache2-utils

答案 9 :(得分:1)

对于使用新Debian 6.0(更确切地说:Debian 6.0.2.1 i386)设置的人,需要安装以下软件包来运行node.js v.0.6.15(目前最新的稳定版): - build-essentials - pkg-config - libssl-dev

只需使用aptitude -y install“package”...希望对所有Debian人有所帮助。 :)