【问题标题】:Node.js installation: openssl not installedNode.js 安装:未安装 openssl
【发布时间】:2011-04-27 20:16:54
【问题描述】:

我已经安装了 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。但是node安装成功了。

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

【问题讨论】:

  • 简答:安装 pkg-config。我刚刚花了半天时间在我没有 root 访问权限的服务器上安装 node 和 npm。长话短说,首先将 openssl 和 pkg-config 从源代码构建到本地目录,然后 node 和 npm 就可以正常构建了。

标签: javascript ssl ubuntu node.js openssl


【解决方案1】:

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

【讨论】:

  • 那么,程序是什么?先运行 sun apt-get install pkg-config?
  • 是的,这也为我解决了问题。 wscript 文件使用 pkg-config 检查 openssl。 comments.gmane.org/gmane.comp.lang.javascript.nodejs/11668
  • 为我修复了它。我还必须先进行 apt-get update。 2011 年 4 月编译使用 node 没问题,不过好像是在这期间突然冒出来的。
【解决方案2】:

这不完全是一个编程问题。还是……

快速解答

安装程序以两种方式检查 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--->

假设你是从http://nodejs.org/下载的node.js v0.2.3,配置主要是由文件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 中是否存在函数。如果两者都成功,则继续安装。如果其中一个失败,则会出现致命错误,并且脚本会爆炸。

【讨论】:

  • 好的,但问题是为什么节点找不到我的openssl。我通过“aptitude install libssl-dev openssl”安装了它。
  • @weng 您的问题的这方面与编程无关,如果您关心的是而不是了解其背后的编程,您应该询问 ServerFault。正如我在回答中指出的那样,问题是 pkg-config 不存在 openssl 。如果你运行 'pkg-config openssl || echo "No OpenSSL"' 你应该看到这个。请参阅“man pkg-config”,了解如何构建 .pc 文件来告诉 pkg-config 已安装软件包。
  • sudo apt-get install pkg-config
【解决方案3】:

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

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

apt-get install libcurl4-openssl-dev

这解决了我的问题。

【讨论】:

  • 这解决了我在新机器(Ubuntu 11.04)上安装节点时遇到的问题,上面的解决方案(sudo apt-get install pkg-config)没有。
  • 这解决了 Ubuntu 上的问题
  • 也为我工作! Ubuntu 服务器 11.04
  • 在 ubuntu 10.04 上使用 nodejs 0.6.1 为我工作
  • 如果这对您有用,那么您没有遇到与原始问题相同的问题。用户 had 已安装 openssl,但未安装 pkg-config(或 pkg-config 不知道 openssl 包)。如果您查看您的安装消息,您会发现您收到了Checking for function SSL_library_init : no
【解决方案4】:

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

yum install openssl-devel

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

【讨论】:

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

    【讨论】:

      【解决方案6】:

      我遇到了同样的问题。

      我试过了

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

      尽管我认为 --openssl-libpath=/usr/local/lib/ 没有必要,但它解决了它

      【讨论】:

        【解决方案7】:

        看来我可以做到:

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

        当我使用 Ubuntu 11.04 或 11.10 进行全新的 Rackspace 部署时,始终删除有关 openssl 的所有错误和警告,以防其他人有所帮助。

        以下是我最终决定使用 node.js 启动这些类型的实例的脚本概要:

        https://gist.github.com/1606102

        编辑:更新了要点以反映对 Node 等所做的更新。

        【讨论】:

        【解决方案8】:

        在 Ubuntu 12.04 中解决这个问题:

        apt-get install pkg-config -y
        

        【讨论】:

          【解决方案9】:

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

          【讨论】:

          • 确定需要 apache2-utils 吗?
          【解决方案10】:

          对于安装了新的 Debian 6.0(更准确地说:Debian 6.0.2.1 i386)的人,需要安装以下软件包才能运行 node.js v.0.6.15(目前最新稳定版): - 构建要素 - 包配置 - libssl-dev

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-10-17
            • 2017-03-04
            • 2014-05-06
            相关资源
            最近更新 更多