"openssl/ssl.h: нет такого файла или каталога" во время установки Git

Попытка установить git на машинах Unix и Linux на основе инструкций Установка Git, и он не работает с ошибка ниже

make prefix=/usr/local all
GIT_VERSION = 1.8.3.4
    * new build flags
    CC credential-store.o
In file included from cache.h:4,
                 from credential-store.c:1:
git-compat-util.h:221:25: warning: openssl/ssl.h: No such file or directory
git-compat-util.h:222:25: warning: openssl/err.h: No such file or directory
In file included from credential-store.c:1:
cache.h:11:21: warning: openssl/sha.h: No such file or directory
cache.h:19:18: warning: zlib.h: No such file or directory
In file included from credential-store.c:1:
cache.h:21: syntax error before "z_stream"
cache.h:21: warning: no semicolon at end of struct or union
cache.h:28: syntax error before '}' token
cache.h:28: warning: type defaults to `int' in declaration of `git_zstream'
cache.h:28: warning: data definition has no type or storage class
cache.h:30: syntax error before '*' token
cache.h:31: syntax error before '*' token
cache.h:32: syntax error before '*' token
cache.h:33: syntax error before '*' token
cache.h:35: syntax error before '*' token
cache.h:36: syntax error before '*' token
cache.h:37: syntax error before '*' token
cache.h:38: syntax error before '*' token
cache.h:39: syntax error before '*' token
cache.h:40: syntax error before '*' token
cache.h:41: syntax error before '*' token
cache.h:42: syntax error before '*' token
cache.h:769: syntax error before '*' token
make: *** [credential-store.o] Error 1

Я знаю, что это из-за недостающих библиотек для openssl, но я не могу получить эти библиотеки.

У меня нет yum/apt-get на моих машинах для запуска следующих команд:

$ yum install curl-devel expat-devel gettext-devel \
  openssl-devel zlib-devel

$ apt-get install libcurl4-gnutls-dev libexpat1-dev gettext \
  libz-dev libssl-dev

Что мне делать, чтобы получить эти библиотеки на этих машинах. У этих машин нет доступа в Интернет, я могу сделать scp, если потребуется. Любые предложения.

Ответ 1

этот ответ работал отлично для меня

fooobar.com/questions/42374/...

просто sudo apt-get install libssl-dev

Ответ 2

Для RHEL и RHEL-производных, таких как системы CentOS, установка решит эту проблему.

$ yum install -y openssl-devel

Ответ 3

Если у вас нет доступа к готовым пакетам для требуемых библиотек, вам необходимо прибегнуть к вековой практике, прежде чем появились менеджеры пакетов: сборка библиотек локально и библиотек, на которых они зависят, и библиотеки, которые они зависят от и т.д.

Другими словами, у вас есть потенциально большой и сложный лабиринт чеканки зависимостей, который может включать исправление ошибок переносимости для вашей платформы, если исходный код не компилируется из коробки.

В Debian PTS есть ссылки на восходящие проекты для многих пакетов, поэтому вам может не потребоваться угадать, какой результат выбрать из результатов Google для "openssl source". См. http://packages.qa.debian.org/o/openssl.html (ссылка "Просмотреть исходный код" - хороший старт; файл авторских прав Debian для каждого пакета также должен содержать URL вверх по течению, хотя он может быть историческим).

также:

Если у вас есть менеджер пакетов локально (на Debian, это будет основной dpkg), вы можете избежать поиска и компиляции morass и просто скопировать требуемую иерархию зависимых пакетов с хоста, подключенного к Интернету; но опять же, убедитесь, что вы получаете полный набор рекурсивных зависимостей (все, от чего зависит ваш пакет, в свою очередь зависит от рекурсивно). Например. https://packages.debian.org/stable/openssl показывает, от каких пакетов зависит пакет openssl Debian; в свою очередь, некоторые из них будут иметь аналогичный список собственных зависимостей.

Ответ 4

Если вы не можете получить доступ к yum, apt-get и т.д. (Например, на кластерной машине без доступа sudo), установите новую версию openssl локально и вручную следующим образом:

Получите исходный код, распакуйте его, войдите в каталог и создайте каталог сборки (очень важно):

wget https://www.openssl.org/source/openssl-1.0.2r.tar.gz
tar -xvzf openssl-1.0.2r.tar.gz
cd openssl-1.0.2r
mkdir builddir

Сконфигурируйте для локального назначения сборки (убедитесь, что он отличается от вашего исходного каталога, не используйте просто /home/yourdir/openssl-1.0.2r/), сделайте и установите:

./config --prefix=/home/yourdir/openssl-1.0.2r/builddir --openssldir=/home/yourdir/openssl-1.0.2r/builddir
make
make install

Добавьте пути к бинам и библиотекам из каталога сборки в соответствующие переменные в вашем конфигурационном файле оболочки (например, ~/.bashrc) и создайте его:

export PATH=/home/yourdir/openssl-1.0.2r/builddir/bin:$PATH
LD_LIBRARY_PATH="/your/other/dirs/libs:/home/yourdir/openssl-1.0.2r/builddir/lib:"
source ~/.bashrc

OpenSSL теперь должен быть в вашем новом каталоге по умолчанию:

which openssl
> /home/yourdir/openssl-1.0.2r/builddir/bin/openssl

Теперь попробуйте переустановить git, возможно, с помощью make distclean.

Ответ 5

Для Ubuntu я установил openssl и libssl-dev

sudo apt установить openssl libssl-dev

Проверив код файла конфигурации, я обнаружил, что он ищет "include/openssl/ssl.h" в предопределенных путях

Вы можете найти его в своей системе и запустить конфигурацию с --with-openssl

Например, если вы нашли ssl.h в /usr/include/openssl/ssl.h, вы можете запустить команду ниже

./configure --with-openssl =/usr/

Ответ 6

Половина ответа (покрытие apt, а не yum):

Если вы добавите --print-uris в команду apt-get, он расскажет вам, какие файлы ему нужны и где их можно скачать, вы можете получить эти файлы и dpkg -i их. Или поместите их в /var/cache/apt/archives и запустите apt-get (без --print-uris), и он найдет их в кеше и не попытается загрузить их.