Git 2.4.8是从kernel.org源代码构建的,并且缺少HTTP / HTTPS帮助程序

时间:2015-08-24 21:39:57

标签: git macos curl configuration makefile

这类似于git clone: fatal: Unable to find remote helper for 'https'。这与其他类似问题略有不同。另一个类似的问题是关于Ubuntu并且有一个包管理器提供了最新的组件。

此设置基本上是一个废弃的操作系统。没有现有的Git,也没有可用的包管理器(如Yum,Apt-Get,Homebrew或Macports)。 Git和cURL所需的一切都是从头开始构建并安装在/usr/local中,它包括:

  • libz(Zlib库)
  • libssl和libcrypto(OpenSSL库)
  • libidn(IDN图书馆)
  • libiconv(iConvert库)
  • libpcre(PERL RE library)
  • libcurl(cURL library)

我正在使用下面的配方来获得cURL。 cURL同时支持HTTP和HTTPS。 cURL配置,构建,测试和安装都很好。

我正在使用Git的以下配方。 Git配置和构建正常。根据{{​​1}},我只需要调用cURL来获得HTTP和HTTPS支持:

configure --help

但是,尝试通过HTTP和HTTPS执行克隆时,Git失败。我已经从头开始构建了两次,所以不管我做错了什么,我现在已经完成了两次。

为什么Git无法构建所需的助手?

Git Recipe

$ ./configure --help | egrep -i "(http|openssl)"
  --with-openssl          use OpenSSL library (default is YES)
                          ARG can be prefix for openssl library and headers
  --with-curl             support http(s):// transports (default is YES)

cURL食谱

curl -k https://www.kernel.org/pub/software/scm/git/git-2.4.8.tar.gz -o git-2.4.8.tar.gz
tar zf git-2.4.8.tar.gz
cd git-2.4.8
make configure
sed -i "" 's|-lcrypto|/usr/local/lib/libcrypto.a|g' configure.ac configure Makefile
sed -i "" 's|-lssl|/usr/local/lib/libssl.a|g' configure.ac configure Makefile
sed -i "" 's|-lcurl|/usr/local/lib/libcurl.a|g' configure.ac configure Makefile
sed -i "" 's|-lpcre|/usr/local/lib/libpcre2-posix.a|g' configure.ac configure Makefile
./configure --with-openssl=/usr/local --with-libpcre=/usr/local --with-curl=/usr/local \
--with-zlib=/usr/local --with-iconv=/usr/local --prefix=/usr/local

在食谱中调用curl -k http://curl.haxx.se/download/curl-7.44.0.tar.gz -o curl-7.44.0.tar.gz tar zf curl-7.44.0.tar.gz cd curl-7.44.0 sed -i "" 's|-lidn|/usr/local/lib/libidn.a|g' configure.ac configure lib/Makefile.m32 src/Makefile.m32 ./configure --enable-optimize --disable-ldap --disable-ldaps --disable-rtsp --disable-dict \ --disable-ntlm-wb --disable-tls-srp --enable-http --enable-file --enable-proxy \ --enable-telnet --enable-tftp --enable-pop3 --enable-imap --enable-ftp --enable-smb \ --enable-smtp --enable-gopher --enable-manual --enable-ipv6 --enable-unix-sockets \ --enable-cookies --without-darwinssl --without-libssh2 --without-winidn --with-gnu-ld \ --with-libidn=/usr/local --with-glib=/usr/local --with-ssl=/usr/local \ --with-ca-path=/usr/share/curl --prefix=/usr/local 可确保我使用静态链接。它在OS X上是必需的,因为如果可用,Apple总是使用sed(即使使用*.dylibs等选项)。更糟糕的是,这是在PowerPC上运行OS X 10.5的旧版PowerMac。它用于测试处理器上的软件。

1 个答案:

答案 0 :(得分:0)

  

为什么Git无法构建所需的助手?

似乎至少有两个问题。首先,Git的配置不会报告错误。相反,它默默地吞下它们。它也默默地吞噬了PCRE库的错误。

其次,cURL架构-arch ppc正在更改-arch ppc7400。所以八个左右的依赖库看起来像:

$ file /usr/local/lib/libcrypto.a
/usr/local/lib/libcrypto.a: Mach-O universal binary with 2 architectures
/usr/local/lib/libcrypto.a (for architecture ppc):    current ar
archive random library
/usr/local/lib/libcrypto.a (for architecture ppc64):    current ar
archive random library

但是cURL看起来像:

$ file /usr/local/lib/libcurl.a
/usr/local/lib/libcurl.a: Mach-O universal binary with 2 architectures
/usr/local/lib/libcurl.a (for architecture ppc7400):    current ar
archive random library
/usr/local/lib/libcurl.a (for architecture ppc64):    current ar
archive random library

我验证了它不是我的设置:

export CFLAGS="-arch ppc"
./configure ...
make

然后:

$ find . -name libcurl.a
./lib/.libs/libcurl.a
$ lipo -info ./lib/.libs/libcurl.a
...
Non-fat file: ./lib/.libs/libcurl.a is architecture: ppc7400

export LDFLAGS="-arch ppc"对此问题没有影响。

有一个相关的跟进问题正在追踪Cause of change from -arch ppc to -arch ppc7400?

的行为