尝试根据Installing 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。任何建议。
答案 0 :(得分:16)
答案 1 :(得分:7)
对于RHEL和CentOS系统等RHEL衍生物,安装将解决此问题。
$ yum install -y openssl-devel
答案 2 :(得分:2)
如果您无法访问所需库的预构建包,则必须在包管理器之前使用古老的实践:在本地构建库,以及它们依赖的库,以及它们的库依赖等等。
换句话说,如果源代码没有开箱即用,你可能会遇到一个潜在的庞大而复杂的依赖追逐迷宫,其中可能包括修复平台的可移植性错误。
Debian PTS链接到许多软件包的上游项目,因此您可能不需要猜测从“openssl source”中选择Google结果的结果。参见例如http://packages.qa.debian.org/o/openssl.html(“浏览源代码”链接是一个好的开始;每个包的Debian版权文件也应该包含一个上游URL,尽管它可能是历史的。)
此外:
如果你在本地拥有一个包管理器(在Debian上,这将是基本的dpkg
),那么你可以避免查找和编译morass,只需从一个连接Internet的主机上复制所需的依赖包的层次结构;但同样,请确保获得完整的递归依赖项(依赖于您依赖的包依赖于递归)。例如。 https://packages.debian.org/stable/openssl显示了openssl
Debian软件包所依赖的软件包;其中一些将依次具有类似的依赖列表。
答案 3 :(得分:1)
以下使用ssl固定编译的python 3.8.1
locate ssl.h
/usr/include/openssl/ssl.h
$ pwd
/var/opt/python381/Python-3.8.1
$ ln -s /usr/include/openssl
结果
./configure
~~
checking whether compiling and linking against OpenSSL works... yes
checking for X509_VERIFY_PARAM_set1_host in libssl... yes
答案 4 :(得分:0)
如果您无法访问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
将构建目录中的bin和库路径添加到您的shell配置文件(即〜/ .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 :(得分:0)
对于 ubuntu ,我安装了 openssl 和 libssl-dev
sudo apt install openssl libssl-dev
检查配置文件代码后,我发现它正在预定义路径中搜索“ include / openssl / ssl.h”
您可以在系统上找到它,并可以使用--with-openssl
运行configure例如如果您在/usr/include/openssl/ssl.h中找到ssl.h,则可以在命令下运行
./ configure --with-openssl = / usr /
答案 6 :(得分:-1)
半个答案(覆盖apt,而不是yum):
如果您将--print-uris
添加到apt-get
命令,它会告诉您需要哪些文件以及可以下载哪些文件,那么您可以获取这些文件并dpkg -i
。或者将它们放在/var/cache/apt/archives
中并运行apt-get
(不使用--print-uris
),它会在缓存中找到它们而不是尝试下载它们。