Git 2.4.8 从 kernel.org 来源构建,缺少 HTTP/HTTPS 助手
Git 2.4.8 built from kernel.org sources and missing HTTP/HTTPS helpers
这类似于。这与其他类似问题略有不同。另一个类似的问题是关于 Ubuntu 并且有一个包管理器提供了最新的组件。
这个设置基本上是废弃的OS。没有现有的 Git,也没有可用的包管理器(如 Yum、Apt-Get、Homebrew 或 Macports)。 Git 和 cURL 所需的一切都是从头开始构建并安装在 /usr/local
中,它包括:
- libz(Zlib 库)
- libssl 和 libcrypto(OpenSSL 库)
- libidn(IDN 库)
- libiconv(iConvert 库)
- libpcre(PERL RE 库)
- libcurl(cURL 库)
我正在使用下面的 cURL 方法。 cURL 同时支持 HTTP 和 HTTPS。 cURL 可以很好地配置、构建、测试和安装。
我正在使用 Git 的以下食谱。 Git 配置和构建良好。根据 configure --help
我只需要调出 cURL 即可获得 HTTP 和 HTTPS 支持:
$ ./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)
但是,Git 尝试通过 HTTP 和 HTTPS 执行克隆时失败。我已经从头开始构建了两次,所以无论我做错了什么,我现在已经做了两次。
为什么 Git 无法构建所需的助手?
Git 食谱
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 食谱
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
食谱中对 sed
的调用确保我使用的是静态链接。它在 OS X 上是必需的,因为 Apple 总是使用 *.dylibs
如果它们可用(即使有像 -Bstatic
这样的选项)。更糟糕的是,这是 PowerPC 上的旧 PowerMac 运行 OS X 10.5。它用于在处理器上测试软件。
Why is Git failing to build the helpers it needs?
似乎至少有两个问题。首先,Git的configure不报错。相反,它会默默地吞噬他们。它也默默地吞下了 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"
对问题没有影响。
有一个相关的后续问题正在追踪
处的行为
这类似于。这与其他类似问题略有不同。另一个类似的问题是关于 Ubuntu 并且有一个包管理器提供了最新的组件。
这个设置基本上是废弃的OS。没有现有的 Git,也没有可用的包管理器(如 Yum、Apt-Get、Homebrew 或 Macports)。 Git 和 cURL 所需的一切都是从头开始构建并安装在 /usr/local
中,它包括:
- libz(Zlib 库)
- libssl 和 libcrypto(OpenSSL 库)
- libidn(IDN 库)
- libiconv(iConvert 库)
- libpcre(PERL RE 库)
- libcurl(cURL 库)
我正在使用下面的 cURL 方法。 cURL 同时支持 HTTP 和 HTTPS。 cURL 可以很好地配置、构建、测试和安装。
我正在使用 Git 的以下食谱。 Git 配置和构建良好。根据 configure --help
我只需要调出 cURL 即可获得 HTTP 和 HTTPS 支持:
$ ./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)
但是,Git 尝试通过 HTTP 和 HTTPS 执行克隆时失败。我已经从头开始构建了两次,所以无论我做错了什么,我现在已经做了两次。
为什么 Git 无法构建所需的助手?
Git 食谱
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 食谱
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
食谱中对 sed
的调用确保我使用的是静态链接。它在 OS X 上是必需的,因为 Apple 总是使用 *.dylibs
如果它们可用(即使有像 -Bstatic
这样的选项)。更糟糕的是,这是 PowerPC 上的旧 PowerMac 运行 OS X 10.5。它用于在处理器上测试软件。
Why is Git failing to build the helpers it needs?
似乎至少有两个问题。首先,Git的configure不报错。相反,它会默默地吞噬他们。它也默默地吞下了 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"
对问题没有影响。
有一个相关的后续问题正在追踪