linux 构建源代码时未安装Git“remote-https”

jv4diomz  于 2023-01-25  发布在  Linux
关注(0)|答案(1)|浏览(188)

我正在运行CentOS Linux 7.7.1908的服务器上安装git,但我没有root权限。
我以前用过Conda来安装Git和其他一些工具,因为它不需要root访问权限,但它不是一个干净的解决方案,我不得不关闭环境几次才能使用某些程序。所以我尝试从源代码安装到我的~/.local树,作为一个学习练习和方便。
从源目录安装到我的用户目录后,我可以使用git可执行文件克隆SSH remote,但不能克隆HTTPS。

$ git clone https://github.com/test/test.git ~/tmp/test_repo
Cloning into '/home/group/user/tmp/test_repo'...
git: 'remote-https' is not a git command. See 'git --help'.

这个问题似乎是由Git构建系统无法识别我系统上的curl/libcurl引起的。
大多数人的解决方案是使用软件包管理器来安装libcurl-devel,或者类似的,我不能这么做。
我确实安装了curl,不管这个CentOS版本附带了什么,我假设:

$ curl -V
curl 7.29.0 (x86_64-redhat-linux-gnu) libcurl/7.29.0 NSS/3.44 zlib/1.2.7 libidn/1.28 libssh2/1.8.0
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: AsynchDNS GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz unix-sockets

我也尝试过从用户目录的源代码安装openSSL和curl,但在尝试构建Git后得到了相同的结果:

$ curl -V
curl 7.85.0 (x86_64-pc-linux-gnu) libcurl/7.85.0 OpenSSL/1.1.1q zlib/1.2.7
Release-Date: 2022-08-31
Protocols: dict file ftp ftps gopher gophers http https imap imaps mqtt pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: alt-svc AsynchDNS HSTS HTTPS-proxy IPv6 Largefile libz NTLM NTLM_WB SSL TLS-SRP UnixSockets

My Git安装步骤如下:

$ make configure
$ ./configure --prefix=$HOME/tmp/git_test
$ make all -j
$ make install

运行新生成的二进制文件后,我得到了相同的结果:

$ ./bin/git clone https://github.com/test/test.git ~/tmp/clone_test
Cloning into '/home/user/tmp/clone_test'...
git: 'remote-https' is not a git command. See 'git --help'.

我认为这个问题与我的libcurl安装有关,但我不知道连接在哪里出错了!
编辑:我试着通过解压一个RPM二进制包来安装libcurl-devel,现在我有了如下的目录结构:

├── bin
│   └── curl-config
├── include
│   └── curl
│       ├── curlbuild-64.h
│       ├── curlbuild.h
│       ├── curl.h
│       ├── curlrules.h
│       ├── curlver.h
│       ├── easy.h
│       ├── mprintf.h
│       ├── multi.h
│       ├── stdcheaders.h
│       └── typecheck-gcc.h
├── lib64
│   ├── libcurl.so -> libcurl.so.4.3.0
│   ├── libcurl.so.4 -> libcurl.so.4.3.0
│   ├── libcurl.so.4.3.0
│   └── pkgconfig
│       └── libcurl.pc
└── share
    ├── aclocal
    │   └── libcurl.m4
    ├── doc
    │   └── libcurl-devel-7.29.0
    └── man
        ├── man1
        └── man3

为了解决我的问题,我需要知道Git的configure/make工具检测系统是否安装了libcurl的机制。

n3ipq98p

n3ipq98p1#

您需要使用--with-curl--with-openssl,也可能使用--with-expat

$ ./configure --prefix=$HOME/tmp/git_test --with-curl=/curl/install/prefix ... etc.

相关问题