Компиляция Httrack на MAC OS X

Я пытаюсь скомпилировать httrack на моем MAC. ./configure успешно. Но при компиляции пакета я получаю следующую ошибку и не могу ее исправить.

In file included from htscore.c:40:
In file included from ./htscore.h:81:
In file included from ./htslib.h:67:
./htsbasenet.h:76:10: fatal error: 'openssl/ssl.h' file not found
#include <openssl/ssl.h>
      ^
2 warnings and 1 error generated.
make[2]: *** [libhttrack_la-htscore.lo] Error 1
make[1]: *** [all-recursive] Error 1
make: *** [all] Error 2

Также пробовал это решение, но не повезло https://serverfault.com/questions/283271/how-to-get-httrack-to-work-with-ssl-on-mac-os-x-libssl-so-not-found

Openssl находится по адресу / usr / include / openssl

5 ответов

Если вы можете жить без HTTPS, то

./configure --enable-https=no

должно быть достаточно.

Похоже, у вас нет OpenSSL на пути, или Httrack не подхватывает его. Также кажется, что Httrack не имеет configure возможность указать каталог OpenSSL.

Также кажется, что Httrack отклоняет что-либо меньшее, чем OpenSSL 1.0.1g (Heartbleed). OS X предоставляет OpenSSL 0.9.8 по умолчанию, поэтому вам следует загрузить и установить последнюю версию OpenSSL.

Получив обновленную версию OpenSSL, экспортируйте необходимые пути через CFLAGS а также LDFLAGS, Httrack забирает LDLIBS сам по себе.

$ export CFLAGS="-I/usr/local/ssl/macosx-x64/include"
$ export LDFLAGS="-L/usr/local/ssl/macosx-x64/lib"

$ ./configure 
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for a thread-safe mkdir -p... ./install-sh -c -d
checking for gawk... no
checking for mawk... no
checking for nawk... no
checking for awk... awk
...
config.status: executing depfiles commands
config.status: executing libtool commands

$ cat ./config.log | grep -i openssl
| #define HTS_USEOPENSSL 1
| #define HTS_USEOPENSSL 1
OPENSSL_LIBS='-lcrypto -lssl'
#define HTS_USEOPENSSL 1

Это из OS X 10.8.5 и Htrack 3.48.21


Вы можете проверить, что OpenSSL был связан с:

$ find . -name *.dylib
./libtest/.libs/libbaselinks.dylib
...
./src/.libs/libhtsjava.dylib
./src/.libs/libhttrack.dylib

А потом:

$ otool -L ./src/.libs/libhttrack.dylib | grep -i ssl
    /usr/local/ssl/macosx-x64/lib/libcrypto.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)
    /usr/local/ssl/macosx-x64/lib/libssl.1.0.0.dylib (compatibility version 1.0.0, current version 1.0.0)

Вы должны быть в состоянии проверить сборку перед установкой с make check:

$ make
...

$ make check
...
PASS: 00_runnable.test
PASS: 01_engine-charset.test
PASS: 01_engine-entities.test
md5 selftest succeeded
hashtable summary: size=262144 (lg2=18) used=72619 stash-size=0 pool-size=6693195 pool-capacity=8388608 pool-used=6480537 writes=6600000 (new=175000) moved=44471 stashed=4 max-stash-size=1 avg-moved=0.25412 rehash=14 pool-compact=15 pool-realloc=30 memory=14680688
all hashtable tests were successful!
PASS: 01_engine-hashtable.test
PASS: 01_engine-idna.test
PASS: 01_engine-simplify.test
online tests are disabled
skipping online unit tests
SKIP: 10_crawl-simple.test
online tests are disabled
skipping online unit tests
SKIP: 11_crawl-cookies.test
online tests are disabled
skipping online unit tests
SKIP: 11_crawl-idna.test
online tests are disabled
skipping online unit tests
SKIP: 11_crawl-international.test
online tests are disabled
skipping online unit tests
SKIP: 11_crawl-longurl.test
online tests are disabled
skipping online unit tests
SKIP: 11_crawl-parsing.test
online tests are disabled
skipping online unit tests
SKIP: 12_crawl_https.test
======================
All 6 tests passed
(7 tests were not run)
======================
make[2]: Leaving directory '/Users/.../httrack-3.48.21/tests'
make[1]: Leaving directory '/Users/.../httrack-3.48.21/tests'
make[1]: Entering directory '/Users/.../httrack-3.48.21'
make[1]: Nothing to be done for 'check-am'.
make[1]: Leaving directory '/Users/.../httrack-3.48.21'

Я не знаю, почему онлайн-тесты не проводились, так как они включены по умолчанию:

$ ./configure --help | grep -i online
    --enable-online-unit-tests=[yes/no/auto]
                                    Enable online-unit-tests [default=yes]

Также см. Выпуск 92: "сделать проверку" и "uname: недопустимый параметр - o" в OS X.


Их использование OpenSSL выглядит так, как будто есть место для улучшений... Вы могли бы рассмотреть возможность открытия src/htslib.c, прокручивая вниз до строки 5166:

// OpenSSL_add_all_algorithms();
openssl_ctx = SSL_CTX_new(SSLv23_client_method());
if (!openssl_ctx) {
  fprintf(stderr,
          "fatal: unable to initialize TLS: SSL_CTX_new(SSLv23_client_method)\n");
  abortLog("unable to initialize TLS: SSL_CTX_new(SSLv23_client_method)");
  assertf("unable to initialize TLS" == NULL);
}

И изменив это на что-то вроде:

// OpenSSL_add_all_algorithms();
openssl_ctx = SSL_CTX_new(SSLv23_client_method());
if (!openssl_ctx) {
  fprintf(stderr, "fatal: unable to initialize TLS: SSL_CTX_new(SSLv23_client_method)\n");
  abortLog("unable to initialize TLS: SSL_CTX_new(SSLv23_client_method)");
  assertf("unable to initialize TLS" == NULL);
}

const long flags = SSL_OP_NO_SSLv2 | SSL_OP_NO_SSLv3 | SSL_OP_NO_COMPRESSION;
SSL_CTX_set_options(openssl_ctx, flags);

const char PREFERRED_CIPHERS[] = "HIGH:!aNULL:!kRSA:!PSK:!SRP:!MD5:!RC4";
long res = SSL_CTX_set_cipher_list(openssl_ctx, PREFERRED_CIPHERS);
if (res != 1) {
  fprintf(stderr, "fatal: unable to initialize TLS: SSL_CTX_set_cipher_list(PREFERRED_CIPHERS)\n");
  abortLog("unable to initialize TLS: SSL_CTX_set_cipher_list(PREFERRED_CIPHERS)");
  assertf("unable to initialize TLS" == NULL);
}

Есть и другие вещи, которые вы можете сделать. См. Клиент SSL / TLS в вики OpenSSL.

Сделайте себе одолжение, если вы хотите установить не-Apple пакеты и установить менеджер пакетов, такой как homebrew это вопрос копирования и вставки одной строки с сайта доморощенного.

Затем вы можете найти любые пакеты, которые вы хотите с:

brew search httrack

и установить их и собрать их с

brew install httrack

и удалите их с

brew rm httrack

и обновите все установленные пакеты

brew update && brew upgrade --all && brew cleanup

Ответ @jww помог мне понять проблему, но вместо того, чтобы загружать ее вручную, вы можете использовать версию openssl для варки .

  1. Установите его:

            brew install openssl@1.1
    
  2. Бегатьbrew info openssl@1.1, вы должны увидеть что-то вроде этого:

            $ brew info openssl@1.1
    
    ...
    For compilers to find openssl@1.1 you may need to set:
      export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib"
      export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include"
    ...
    
  3. Вам нужны эти дваexportлинии сCPPFLAGSиLDFLAGS- путь может отличаться в зависимости от процессора на базе Intel/ARM. Запустите их передconfigure:

            export LDFLAGS="-L/opt/homebrew/opt/openssl@1.1/lib"
    export CPPFLAGS="-I/opt/homebrew/opt/openssl@1.1/include"
    ./configure --prefix=$HOME/usr && make -j8 && make install
    

Вы можете установить httrack на Mac с помощью диспетчера пакетов homebrow. Выполните следующие действия, чтобы запустить и клонировать любой веб-сайт с помощью httrack.

  1. Открыть терминал.

  2. Введите эти команды в Терминале:

    ruby -e «$ (curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install )» </ dev / null 2> /dev / null

  3. Введите эту команду

    варить установить httrack

httrack будет загружен в эту папку «/ usr / local / Cellar / httrack /».

  1. После загрузки введите эту команду в терминале

    CD /

    cd /usr/local/Cellar/httrack/3.49.2_1/bin

  2. Тип httrack и нажмите Enter (откроется приложение httrack в терминале)

  3. Введите название вашего проекта и нажмите Enter

  4. Введите Базовый путь, в который вы хотите сохранить файлы, и нажмите

  5. введите Введите URL-адрес веб-сайта, который вы хотите клонировать, и нажмите

  6. enter Введите число, относящееся к «Зеркало веб-сайтов», и заполните все параметры

  7. Введите «Y» в поле «Готово к запуску зеркала»? и нажмите ввод

Другие вопросы по тегам