Ответ 1
Это не совсем вопрос программирования. Тем не менее...
Быстрый ответ
Установщик проверяет поддержку 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 вылетает.