Установка Node.js: openssl не установлен

43

Я установил 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? У кого-то такая же проблема?

  • 6
    Краткий ответ: установите pkg-config. Я просто потратил полдня на установку узла & npm на сервере, к которому у меня нет доступа с правами root. Короче говоря, сначала соберите openssl & pkg-config из исходного кода в локальный каталог, и узел & npm будет работать просто отлично.
Теги:
ssl
openssl

10 ответов

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/, конфигурация в основном выполняется waf в файле wscript.

Соответствующие строки:

  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. Если это удастся, установка продолжится. Если один из них не работает, возникает фатальная ошибка, а script вылетает.

  • 2
    Хорошо, но проблема в том, почему узел не находит мой openssl. У меня это установлено "aptitude install libssl-dev openssl".
  • 1
    @weng Этот аспект вашего вопроса не имеет отношения к программированию, и если это то, что вас интересует, а не понимание программирования, стоящего за ним, вы должны спросить об ServerFault. Как я указал в своем ответе, проблема в том, что pkg-config не поддерживает openssl. Если вы запустите 'pkg-config openssl || echo "No OpenSSL" 'вы должны увидеть это. Смотрите man pkg-config, чтобы узнать, как создать файл .pc, чтобы сообщить pkg-config, что пакет установлен.
Показать ещё 1 комментарий
47

@weng: У меня была такая же проблема. Решение было простым: sudo apt-get install pkg-config:)

  • 2
    Итак, какова процедура? сначала запустить sun apt-get установить pkg-config?
  • 2
    Да, это исправило это для меня тоже. Файл wscript использует pkg-config для проверки openssl. comments.gmane.org/gmane.comp.lang.javascript.nodejs/11668
Показать ещё 1 комментарий
26

У меня была та же проблема с Debian 6. Мне пришлось установить libcurl4-openssl-dev.

Переключитесь на пользователя root или используйте sudo, затем запустите:

apt-get install libcurl4-openssl-dev

Это устранило проблему для меня.

  • 6
    Это устранило проблему для меня при установке узла на новую машину (Ubuntu 11.04), где вышеописанное решение (sudo apt-get install pkg-config) не помогло.
  • 2
    Это исправило проблему в Ubuntu
Показать ещё 7 комментариев
10

Если вы используете Centos 5.x, убедитесь, что вы устанавливаете openssl-devel перед. /configure.

yum install openssl-devel

Это решило ту же проблему для меня в centos.

  • 2
    в федоре это тоже решило мою проблему
  • 1
    Я могу подтвердить, что это работает для меня на Cent OS 6
3

У меня была та же проблема.

Я пробовал

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

который решил его, хотя я думаю, что --openssl-libpath=/usr/local/lib/ не требуется

3

Похоже, я могу сделать:

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

чтобы последовательно удалять все ошибки и предупреждения о openssl, когда я делаю новое развертывание Rackspace с Ubuntu 11.04 или 11.10, в случае, если кто-то может помочь.

Здесь сущность с сокращением script, я, наконец, решил закрутить эти типы экземпляров с помощью node.js:

https://gist.github.com/1606102

Изменить. Обновлен параметр, отражающий обновления, сделанные в Node и т.д.

  • 2
    Для чего используются эти библиотеки в этом случае?
  • 2
    Привет, мистер А. lib32z1-dev - это библиотека сжатия zlib ( launchpad.net/ubuntu/lucid/+package/lib32z1-dev ), а pkg-config используется для получения информации о библиотеках, установленных в вашей системе ( linux.die.net / man / 1 / pkg-config )
Показать ещё 1 комментарий
3
  • подтвердите, что ваш openssl установлен.
  • если установлен, подтвердите свой путь в ['/usr/lib', '/usr/local/lib', '/opt/local/lib', '/usr/sfw/lib'];
  • Если нет в этих путях, попробуйте выполнить следующие варианты с помощью правильного пути openssl ./configure --openssl-libpath=/usr/local/ssl/lib --openssl-includes=/usr/local/ssl/include
1

Чтобы решить эту проблему в Ubuntu 12.04:

apt-get install pkg-config -y
1

Для людей с новым Debian 6.0 (точнее: Debian 6.0.2.1 i386), необходимо установить следующие пакеты для запуска node.js v.0.6.15 (последняя стабильная на данный момент ): - сборка - pkg-config - libssl-dev

Просто используйте aptitude -y install "package"... надеюсь, что это поможет всем вам, ребятам из Debian.:)

1

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

  • 1
    Это сработало для меня в Ubuntu 11.04
  • 0
    Уверены, что apache2-utils требуются?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню