源码编译git 填坑 git 错误 fatal: Unable to find remote helper for http或https

问题产生:

git clone https://github.com/NVlabs/cub.git
fatal: Unable to find remote helper for 'http/https'
or
fatal: unable to access 'https://github.com/**.git/': Protocol "https" not supported or disabled in libcurl

问题原因:
git 依赖 curl, curl 依赖 openssl

解决办法

  • 尝试重装git无效
  • 尝试重装curl, 再重装git无效, 不过此时提示,似乎发现了什么原因…
    Protocol "https" not supported or disabled in libcurl
    -源码编译openssl curl git 最后完美解决
1. 最简单办法

改变git 克隆地址像下面这样操作

git clone git@github.com:NVlabs/cub.git

将前面的改成 即可,大部分用户修改后都能clone成功。
但是我这种情况,使用此方法无法解决问题(即使修改完所有仓库地址,还会有子仓库的情况,导致clone出错,所以请请接着下看~~)

2. 确认是否缺少git-remote-https
sudo find / -name git-remote-https
--> /usr/local/libexec/git-core/git-remote-https

如果出现上面情况,显示出git-remote-https所在路径,那么很简单,将/usr/local/libexec/git-core/* 拷贝到/usr/local/bin , 重开终端即可

sudo cp /usr/local/libexec/git-core/* /usr/local/bin/

当然,大部分用户是搜索不出来的…
因为系统压根没装相关依赖库…
那么请接着往下看

3. 编译openssl

点击 官方网站 下载如下版本, 也可直接点击此处下载对应版本

 	openssl-1.1.1g.tar.gz

在这里插入图片描述

tar zxf openssl-1.1.1g.tar.gz
cd openssl-1.1.1g
./config --prefix=/usr/local
make -j4
sudo make install
4. 编译curl

点击 官方网站 下载如下版本, 也可直接点击此处下载对应版本

 	curl-7.71.1.tar.gz
tar zxf curl-7.71.1.tar.gz
cd curl-7.71.1
# --with-ssl 参数设置为上一步中编译的open-ssl安装路径 
./configure --prefix=/usr/local --with-ssl=/usr/local
# 结果如下
-->
...
  curl version:     7.71.1
  SSL:              **enabled (OpenSSL)**
  SSH:              no      (--with-{libssh,libssh2})
  zlib:             enabled
  brotli:           no      (--with-brotli)
  GSS-API:          no      (--with-gssapi)

  SSH:              no      (--with-{libssh,libssh2})
  zlib:             enabled
  brotli:           no      (--with-brotli)
  GSS-API:          no      (--with-gssapi)

...
  HTTP2:            disabled (--with-nghttp2)
  HTTP3:            disabled (--with-ngtcp2, --with-quiche)
  ESNI:             no      (--enable-esni)
  Protocols:        DICT FILE FTP FTPS GOPHER **HTTP HTTPS** IMAP IMAPS POP3 POP3S RTSP SMB SMBS SMTP SMTPS TELNET TFTP

显示 SSL: enabled (OpenSSL) 和最后一行中显示HTTP HTTPS 即表示ok

然后接着继续编译

make -j4 
sudo make isntall

如果编译过程中出现如下错误

vtls/openssl.c:438:15: error: implicit declaration of function ‘RAND_egd’; did you mean ‘RAND_add’? [-Werror=implicit-function-declaration]
     int ret = RAND_egd(data->set.str[STRING_SSL_EGDSOCKET]?

是因为电脑里已经安装了openssl,将其卸载即可参考

# centos
sudo yum remove openssl-devel
# ubuntu
sudo apt-get remove libssl-dev

如果出现如下错误

checking run-time libs availability... failed
configure: error: one or more libs available at link-time are not available run-time. Libs used at link-time: -lssl -lcrypto -lz

则说明本机安装的ssl路径有问题,将其添加到环境变量即可
查看/usr/local/openssl /usr/local/ssl /usr/local/lib64下是否有相应的libssl.so

已经发现centos下动态库可能会装到/usr/local/openssl/usr/local/lib64

例如我的机器装到了/usr/local下,那么可执行文件在/usr/local/bin/下, 动态库在/usr/local/lib64下,那么我将按照如下方式添加环境变量

echo "export PATH=\"\$PATH:/usr/local/bin\"" >> ~/.bashrc
echo "export LD_LIBRARY_PATH=\"/usr/local/lib64\"" >> ~/.bashrc
source ~/.bashrc
ldconfig
5. 编译git

点击 github git 官网 下载如下版本, 也可直接点击此处下载对应版本

git-2.27.0.zip

解压编译

unzip zxf git-2.27.0.zip
cd git-2.27.0
yum install autoconf
make configure
./configure prefix=/usr/local
make -j4 
sudo make install

make -j4的时候如果出现找不到各种符号,那么就是链接libcurl.so的时候,链接到了系统的libcurl.so, 可以echo $PATH查看路径, 或者执行curl --version 打印出版本号不是我们刚刚编译的版本号,那么证明系统已经有了curl,那么我们只需要按照如下操作即可,改变环境变量里面路径的先后顺序即可

echo "export PATH=\"/usr/local/bin:\$PATH\"" >> ~/.bashrc
echo "export LD_LIBRARY_PATH=\"/usr/local/lib:\$LD_LIBRARY_PATH\"" >> ~/.bashrc
source ~/.bashrc
6. 测试

重开命令行测试

(base) [swls@MiWiFi-R3-srv ~]$ git clone https://github.com/NVlabs/cub.git
Cloning into 'cub'...
remote: Enumerating objects: 33207, done.
^Cceiving objects:   9% (3154/33207), 1.61 MiB | 220.00 KiB/s 

完美解决!!!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 这个错误提示意味着 Git 在尝试使用 HTTPS 协议与远程仓库通信时,无法找到相应的远程助手程序。可能是由于 Git 版本过低或者缺少必要的依赖库所致。您可以尝试更新 Git 版本或者安装相应的依赖库来解决这个问题。 ### 回答2: fatal: unable to find remote helper for 'https' 这个错误通常是由于Git在尝试克隆时无法找到合适的HTTPS远程助手。这可能是由于缺少SSL库或OpenSSL库而引起的。此外,可能是由于您的系统未启用HTTPS协议。 要解决此问题,您可以尝试以下几种方法: 1. 安装或更新SSL库或OpenSSL库。这可能会解决您的HTTP协议或SSL协议在Git上无法使用的问题。您可以通过更新您的操作系统或从官方网站下载安装包安装来更新这些库。 2. 检查是否启用了HTTPS协议。如果您的操作系统上没有启用HTTPS协议,则需要手动启用它。可以在设置或系统配置文件中查找并启用HTTPS协议。 3. 手动配置Git以使用HTTP协议或SSH协议。如果您仍然无法访问GitHub存储库,则需要手动配置Git以使用其他协议。您可以切换到HTTP或SSH协议,然后将您的凭证添加到Git配置文件中。具体操作请参考官方文档。 总之,fatal: unable to find remote helper for 'https'是由于Git无法找到正确的HTTPS远程助手所致的错误。通过升级SSL库、启用HTTPS协议或手动配置Git以使用其他协议,可以轻松解决这个问题。 ### 回答3: fatal: unable to find remote helper for 'https' 这个错误通常是由于 Git 客户端中没有安装对 HTTPS 协议的支持模块所致。 HTTPS(HyperText Transfer Protocol Secure,超文本传输安全协议)是一种安全的 HTTP 协议,它采用了 SSL/TLS 协议对 HTTP 请求和响应进行加密和认证,保证数据传输的安全性和完整性。当我们通过 Git 客户端使用 HTTPS 进行代码仓库的获取、提交等操作时,需要使用到相应的 HTTPS 支持模块,而如果没有安装对应的模块,则会出现这种错误。 解决这个问题的方法有两种: 1.安装 Git 客户端的 HTTPS 支持模块 可以通过执行以下命令来安装 Git 客户端的 HTTPS 支持模块: 如果你的操作系统是 Debian/Ubuntu ``` sudo apt-get install libcurl4-openssl-dev libssl-dev ``` 如果你的操作系统是 CentOS/Fedora/RHEL ``` sudo yum install curl-devel openssl-devel ``` 安装完成后,重新执行 Git 的相关操作,此时就应该可以正常使用 HTTPS 了。 2.使用 SSH 协议访问 Git 仓库 除了 HTTPSGit 客户端还支持使用 SSH 协议进行代码仓库的获取、提交等操作,而且 SSH 协议也比 HTTPS 更加安全。使用 SSH 协议访问 Git 仓库需要事先在本地生成一对 SSH 密钥,并将公钥添加到 Git 仓库的 SSH Keys 列表中,才能在 Git 客户端中使用 SSH 协议进行登录及操作。这个过程比较繁琐,但也是非常值得一试的。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亡命天涯ba

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值