로컬로 빌드된 Git 설치를 원격 저장소에 연결할 수 없습니다. 원격 https가 누락되었습니다.

로컬로 빌드된 Git 설치를 원격 저장소에 연결할 수 없습니다. 원격 https가 누락되었습니다.

이전 Gentoo Linux 상자에서 Git을 작동시키려고 하는데 루트/상승된 권한이 없습니다. ~/bin 폴더에 Git을 로컬로 빌드하고 설치할 수 있어야 한다고 생각했는데 그렇게 할 수 있고 작동하지만 원격 HTTPS 저장소에 연결할 수 없습니다(필수이며 다른 저장소를 사용할 수 없음). Git 원격 프로토콜).

지금까지의 빌드 프로세스는 온라인에서 찾을 수 있는 다양한 가이드와 팁을 통해 문서화되어 있습니다. PATH 시작 부분에 ~/bin을 추가하세요.

CURL 8.4.0 다운로드 및 빌드 - Git에 HTTP 액세스의 일부로 CURL이 필요하고 처음에 컬/curl.h를 찾을 수 없으면 Git 빌드가 완료되지 않을 것이라고 가정합니다.

cd ~/src/curl-8.4.0
./configure --prefix=$HOME --with-openssl
make
make install

Curl은 이제 ~/bin에 있으며 작동 중입니다. HTTPS 소스에서 데이터를 가져올 수 있습니다.

더 자세히 읽어보니 Expat이 필요하다는 사실이 밝혀졌습니다. 그래서 해당 소스 코드도 가져와서 다음을 빌드했습니다.

cd ~/src/expat-2.5.0
./configure --prefix=$HOME
make
make install

마지막은 Git 2.42.1 버전입니다.

cd ~/src/git-2.42.1
make clean
make configure
./configure -prefix=$HOME -with-curl=~/bin CFLAGS="$CFLAGS -std=gnu99" --with-expat=~/bin
make
make install

이제 Git이 설치되어 있으며 새로 생성된 로컬 저장소를 서버에 푸시하려고 할 때를 제외하고 대부분 ~/bin에서 작동합니다.

$ git push -u origin master
git: 'remote-https' is not a git command. See 'git --help'.

그래서 원격 https가 누락되었습니다. 하지만 왜 이것이 누락되었는지 알 수 없습니다. 빌드 중에 발견되지 않은 항목에 대한 오류를 표시하는 대신 어딘가에서 자동으로 실패한다고 가정합니까?

고쳐 쓰다 이 문제를 더 해결한 결과 구성 스크립트의 출력에서 ​​Curl이 Git 빌드에 포함되지 않은 것으로 표시되는 것을 발견했습니다(Git에서 이 기능을 제공하려면 이것이 필요하다고 가정합니다). checking for curl_global_init in -lcurl... no

그럼 더 깊이 파고들어구성 로그Git의 구성 스크립트로 생성된 파일입니다. Curl 라이브러리의 테스트가 실패한 것 같습니다.

configure:5237: checking for curl_global_init in -lcurl
configure:5262: gcc -o conftest  -std=gnu99 -I~/include  -L~/lib  conftest.c -lcurl   >&5
/usr/lib/gcc/x86_64-pc-linux-gnu/4.5.3/../../../../x86_64-pc-linux-gnu/bin/ld: cannot find -lcurl
collect2: ld returned 1 exit status
configure:5262: $? = 1

이 부분에 대해서는 아직 잘 모르겠습니다. ~/include에는 Curl 빌드용 헤더가 포함된 Curl 디렉토리가 있고 ~/lib에는 libcurl 라이브러리인 libcurl.so 및 libcurl.so4가 있습니다. 그렇다면 Git 구성 스크립트에서 이러한 라이브러리를 보거나 사용할 수 없는 이유는 무엇입니까? 아마도 올바르게 빌드하지 않은 것일 수 있습니까?

답변1

문제는 Git의 구성 스크립트가 이전 로컬 설치 위치가 아닌 기본 시스템 위치에서만 Curl 라이브러리와 헤더를 찾으려고 시도한다는 것입니다. 컴파일러 및 라이브러리 플래그 옵션을 통해 이러한 위치를 수동으로 추가하는 것이 수정 사항입니다. ( CPPFLAGS="$CPPFLAGS -I/home/username/include" LDFLAGS="$LDFLAGS -L/home/username/lib"이상하게도 이러한 옵션 경로에 ~ 약어를 사용하는 것은 무시됩니다.)

Git 구성 스크립트에 전달할 수 있는 옵션에 대한 자세한 내용은 를 실행하여 찾을 수 있습니다 ./configure --help. 여기에서 위의 플래그와 옵션을 찾을 수 있습니다.

업데이트된 최종 작업 Git 빌드 단계는 다음과 같습니다.

cd ~/src/git-2.42.1
make clean
make configure
./configure -prefix=$HOME --with-curl=$HOME CFLAGS="$CFLAGS -std=gnu99" CPPFLAGS="$CPPFLAGS -I/home/username/include" LDFLAGS="$LDFLAGS -L/home/username/lib"
make
make install

그러나 딜레마가 남아 있습니다. 이 추가 단계를 통해 헤더 파일과 라이브러리의 위치를 ​​전달해야 하는 경우 --with-curl=$HOME해당 옵션은 무엇을 하고 있습니까?

관련 정보