这类似于git clone: fatal: Unable to find remote helper for 'https'。这与其他类似问题略有不同。另一个类似的问题是关于Ubuntu并且有一个包管理器提供了最新的组件。
此设置基本上是一个废弃的操作系统。没有现有的Git,也没有可用的包管理器(如Yum,Apt-Get,Homebrew或Macports)。 Git和cURL所需的一切都是从头开始构建并安装在/usr/local
中,它包括:
我正在使用下面的配方来获得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。它用于测试处理器上的软件。
答案 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
?