Translate

[Git] How to install Git in an offline environment (오프라인 Linux 환경 Git 설치 방법)

 


https://git-scm.com/download/linux

Git Downlaod 페이지에서는 Linux 용 바이너리 파일을 제공하지 않는다.
아래의 URL에서 Source를 다운 받아서 직접 컴파일/빌드를 수행해서 실행 가능한 Git 바이너리를 제작해야 한다.
https://mirrors.edge.kernel.org/pub/software/scm/git/
https://github.com/git/git/tags



실습 환경

OS : (RedHat Enterprise Linux) RHEL 8.6  (or CentOS)

Git Source Version : v2.43.0




조건 (중요!!!)

- 아래의 두가지 조건을 충족해야만 오프라인 설치가 가능하다.
  1. (root) sudo 권한 사용가능
  2. (Local) Yum_Repository 사용가능

- 위 조건이 충족되지 않으면 인터넷이 연결된 다른 PC에서 아래와 같이 Git 소스 컴파일 후 생성된 Git 바이너리 파일을 압축하여 가져와야 한다.
  (1~3번의 작업을 Online 가능 Linux에서 작업 수행)



1. Git 소스 파일 업로드 및 압축해제

Git 소스파일은 아래의 경로에서 다운로드 가능하다.
https://github.com/git/git/tags



[1004lucifer@rhel8 ~]$
# 현재 위치 확인
[1004lucifer@rhel8 ~]$ pwd
/home/1004lucifer
[1004lucifer@rhel8 ~]$
[1004lucifer@rhel8 ~]$
# git-2.43.0.tar.gz 압축 해제
[1004lucifer@rhel8 ~]$ tar zxvf git-2.43.0.tar.gz
git-2.43.0/
git-2.43.0/.cirrus.yml
git-2.43.0/.clang-format
git-2.43.0/.editorconfig
git-2.43.0/.gitattributes
git-2.43.0/.github/
git-2.43.0/.github/CONTRIBUTING.md

... (생략)

git-2.43.0/xdiff/xprepare.h
git-2.43.0/xdiff/xtypes.h
git-2.43.0/xdiff/xutils.c
git-2.43.0/xdiff/xutils.h
[1004lucifer@rhel8 ~]$
[1004lucifer@rhel8 ~]$ ls -l
total 10744
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Desktop
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Documents
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Downloads
drwxrwxr-x. 28 1004lucifer 1004lucifer    16384 Nov 19 20:28 git-2.43.0
-rw-rw-r--.  1 1004lucifer 1004lucifer 10967997 Dec 22 08:31 git-2.43.0.tar.gz
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Music
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Pictures
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Public
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Templates
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Videos
[1004lucifer@rhel8 ~]$



2. 필요한 패키지 설치

- 필요한 패키지를 모두 설치하지 않으면 빌드가 되지 않거나 일부기능(sub command)가 누락되어 빌드가 될 수 있다.


[1004lucifer@rhel8 ~]$
# 필요한 패키지 설치
[1004lucifer@rhel8 ~]$ sudo yum install gcc make autoconf curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel
[sudo] password for 1004lucifer:
Updating Subscription Management repositories.
Unable to read consumer identity

This system is not registered with an entitlement server. You can use subscription-manager to register.

Last metadata expiration check: 48 days, 6:31:53 ago on Sat 04 Nov 2023 03:00:58 AM EDT.
Dependencies resolved.
==================================================================================================================================================
 Package                                Architecture      Version                                         Repository                         Size
==================================================================================================================================================
Installing:
 autoconf                               noarch            2.69-29.el8                                     InstallMedia-AppStream            711 k
 expat-devel                            x86_64            2.2.5-8.el8                                     InstallMedia-BaseOS                57 k
 gcc                                    x86_64            8.5.0-10.el8                                    InstallMedia-AppStream             23 M
 gettext-devel                          x86_64            0.19.8.1-17.el8                                 InstallMedia-BaseOS               331 k
 libcurl-devel                          x86_64            7.61.1-22.el8                                   InstallMedia-BaseOS               834 k
 make                                   x86_64            1:4.2.1-11.el8                                  InstallMedia-BaseOS               498 k
 openssl-devel                          x86_64            1:1.1.1k-6.el8_5                                InstallMedia-BaseOS               2.3 M
 perl-devel                             x86_64            4:5.26.3-421.el8                                InstallMedia-AppStream            599 k
 zlib-devel                             x86_64            1.2.11-18.el8_5                                 InstallMedia-BaseOS                58 k
Installing dependencies:
 annobin                                x86_64            10.29-3.el8                                     InstallMedia-AppStream            117 k
 cpp                                    x86_64            8.5.0-10.el8                                    InstallMedia-AppStream             10 M
 dwz                                    x86_64            0.12-10.el8                                     InstallMedia-AppStream            109 k
 efi-srpm-macros                        noarch            3-3.el8                                         InstallMedia-AppStream             22 k
 gettext-common-devel                   noarch            0.19.8.1-17.el8                                 InstallMedia-BaseOS               419 k
 ghc-srpm-macros                        noarch            1.4.2-7.el8                                     InstallMedia-AppStream            9.4 k
 glibc-devel                            x86_64            2.28-189.1.el8                                  InstallMedia-BaseOS                79 k

... (생략)

  python-rpm-macros-3-41.el8.noarch                                                 python-srpm-macros-3-41.el8.noarch
  python3-pyparsing-2.1.10-7.el8.noarch                                             python3-rpm-macros-3-41.el8.noarch
  qt5-srpm-macros-5.15.2-1.el8.noarch                                               redhat-rpm-config-129-1.el8.noarch
  rust-srpm-macros-5-2.el8.noarch                                                   systemtap-sdt-devel-4.6-4.el8.x86_64
  zlib-devel-1.2.11-18.el8_5.x86_64

Complete!
[1004lucifer@rhel8 ~]$

참고
https://git-scm.com/book/en/v2/Getting-Started-Installing-Git

* Fedora 또는 Debian 기반의 Ubuntu 같은 시스템은 아래와 같이 설치한다.


(Fedora)
$ sudo dnf install dh-autoreconf curl-devel expat-devel gettext-devel openssl-devel perl-devel zlib-devel

(Debian or Ubuntu)
$ sudo apt-get install dh-autoreconf libcurl4-gnutls-dev libexpat1-dev gettext libz-dev libssl-dev



3. Source Build & Install

- 소스를 빌드하고 원하는 경로에 설치한다.


[1004lucifer@rhel8 ~]$
# Git Source 디렉토리로 이동
[1004lucifer@rhel8 ~]$ cd git-2.43.0/
[1004lucifer@rhel8 git-2.43.0]$
[1004lucifer@rhel8 git-2.43.0]$
# configure 파일 생성
[1004lucifer@rhel8 git-2.43.0]$ make configure
GIT_VERSION = 2.43.0
    GEN configure
[1004lucifer@rhel8 git-2.43.0]$
[1004lucifer@rhel8 git-2.43.0]$
# configure 실행 (설치 하려는 디렉토리에 쓰기 권한이 있어야 한다.)
[1004lucifer@rhel8 git-2.43.0]$ ./configure --prefix=/home/1004lucifer/git
configure: Setting lib to 'lib' (the default)
configure: Will try -pthread then -lpthread to enable POSIX Threads.
configure: CHECKS for site configuration
checking for gcc... gcc
checking whether the C compiler works... yes
checking for C compiler default output file name... a.out
checking for suffix of executables...

... (생략)

checking for library containing getdelim... none required
checking for BSD sysctl... no
checking for POSIX Threads with ''... no
checking for POSIX Threads with '-mt'... no
checking for POSIX Threads with '-pthread'... yes
configure: creating ./config.status
config.status: creating config.mak.autogen
config.status: executing config.mak.autogen commands
[1004lucifer@rhel8 git-2.43.0]$
[1004lucifer@rhel8 git-2.43.0]$
# Build 실행
[1004lucifer@rhel8 git-2.43.0]$ make
    * new build flags
    CC oss-fuzz/fuzz-commit-graph.o
    CC oss-fuzz/fuzz-pack-headers.o
    CC oss-fuzz/fuzz-pack-idx.o
    CC daemon.o
    * new link flags
    CC common-main.o
    CC abspath.o
    CC add-interactive.o

... (생략)

    GEN bin-wrappers/test-fake-ssh
    GEN bin-wrappers/test-tool
    GEN gitweb/gitweb.cgi
    GEN gitweb/static/gitweb.js
[1004lucifer@rhel8 git-2.43.0]$
[1004lucifer@rhel8 git-2.43.0]$
# Build된 Git Binary를 설치 경로로 설치
[1004lucifer@rhel8 git-2.43.0]$ make install
    SUBDIR git-gui
    SUBDIR gitk-git
    SUBDIR templates
install -d -m 755 '/home/1004lucifer/git/share/gitweb'
install -m 755 gitweb/gitweb.cgi '/home/1004lucifer/git/share/gitweb'
install -d -m 755 '/home/1004lucifer/git/share/gitweb/static'
install -m 644 gitweb/static/gitweb.js gitweb/static/gitweb.css gitweb/static/git-logo.png gitweb/static/git-favicon.png \
        '/home/1004lucifer/git/share/gitweb/static'
install -d -m 755 '/home/1004lucifer/git/bin'
install -d -m 755 '/home/1004lucifer/git/libexec/git-core'

... (생략)

remote_curl_aliases="git-remote-https git-remote-ftp git-remote-ftps" && \
for p in $remote_curl_aliases; do \
        rm -f "$execdir/$p" && \
        test -n "" && \
        ln -s "git-remote-http" "$execdir/$p" || \
        { test -z "" && \
          ln "$execdir/git-remote-http" "$execdir/$p" 2>/dev/null || \
          ln -s "git-remote-http" "$execdir/$p" 2>/dev/null || \
          cp "$execdir/git-remote-http" "$execdir/$p" || exit; } \
done
[1004lucifer@rhel8 git-2.43.0]$
[1004lucifer@rhel8 git-2.43.0]$
# 설치된 Git Binary 확인 (/home/1004lucifer/git)
[1004lucifer@rhel8 git-2.43.0]$ cd /home/1004lucifer
[1004lucifer@rhel8 ~]$
[1004lucifer@rhel8 ~]$ ls -l
total 10756
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Desktop
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Documents
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Downloads
drwxr-xr-x.  5 1004lucifer 1004lucifer       45 Dec 22 09:17 git
drwxrwxr-x. 31 1004lucifer 1004lucifer    28672 Dec 22 09:17 git-2.43.0
-rw-rw-r--.  1 1004lucifer 1004lucifer 10967997 Dec 22 08:31 git-2.43.0.tar.gz
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Music
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Pictures
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Public
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Templates
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Videos
[1004lucifer@rhel8 ~]$



3.1 Git Binary 파일 압축 및 배포

- Offline Linux 에서 Source Build를 할 수 없는 상황인경우 1~3번의 작업을 인터넷이 되는 동일한 OS에서 작업하여 아래와 같이 생성된 바이너리 파일을 Offline Linux 로 (업로드)배포한다.


[1004lucifer@rhel8 ~]$
# Git Binary 파일 압축
[1004lucifer@rhel8 ~]$ tar zcvf git-binary.tar.gz git/
git/
git/share/
git/share/gitweb/
git/share/gitweb/gitweb.cgi
git/share/gitweb/static/
git/share/gitweb/static/gitweb.js
git/share/gitweb/static/gitweb.css
git/share/gitweb/static/git-logo.png

... (생략)

git/libexec/git-core/git-stage
git/libexec/git-core/git-status
git/libexec/git-core/git-switch
git/libexec/git-core/git-version
git/libexec/git-core/git-whatchanged
[1004lucifer@rhel8 ~]$
[1004lucifer@rhel8 ~]$
[1004lucifer@rhel8 ~]$
[1004lucifer@rhel8 ~]$
[1004lucifer@rhel8 ~]$
# 압축된 파일 확인 (해당 파일을 동일 OS의 Offline Linux 로 가져간다.)
[1004lucifer@rhel8 ~]$ ls -l
total 71004
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Desktop
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Documents
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Downloads
drwxr-xr-x.  5 1004lucifer 1004lucifer       45 Dec 22 09:17 git
drwxrwxr-x. 31 1004lucifer 1004lucifer    28672 Dec 22 09:17 git-2.43.0
-rw-rw-r--.  1 1004lucifer 1004lucifer 10967997 Dec 22 08:31 git-2.43.0.tar.gz
-rw-rw-r--.  1 1004lucifer 1004lucifer 61690824 Dec 22 09:27 git-binary.tar.gz
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Music
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Pictures
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Public
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Templates
drwxr-xr-x.  2 1004lucifer 1004lucifer        6 Nov  4 01:42 Videos
[1004lucifer@rhel8 ~]$



4. 환경설정

- 아래의 환경설정은 본인의 환경 / 취향에 맞게 작업


[1004lucifer@rhel8 ~]$
[1004lucifer@rhel8 ~]$ cd git/bin/
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$ ls -l
total 117440
-rwxr-xr-x. 141 1004lucifer 1004lucifer 22905472 Dec 22 09:17 git
-rwxr-xr-x.   2 1004lucifer 1004lucifer   163765 Dec 22 09:17 git-cvsserver
-rwxr-xr-x.   1 1004lucifer 1004lucifer   402054 Dec 22 09:17 gitk
-rwxr-xr-x. 141 1004lucifer 1004lucifer 22905472 Dec 22 09:17 git-receive-pack
-rwxr-xr-x.   2 1004lucifer 1004lucifer 13944064 Dec 22 09:17 git-shell
-rwxr-xr-x. 141 1004lucifer 1004lucifer 22905472 Dec 22 09:17 git-upload-archive
-rwxr-xr-x. 141 1004lucifer 1004lucifer 22905472 Dec 22 09:17 git-upload-pack
-rwxr-xr-x.   2 1004lucifer 1004lucifer 14104232 Dec 22 09:17 scalar
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$
# Git Binary 파일 위치 확인
[1004lucifer@rhel8 bin]$ pwd
/home/1004lucifer/git/bin
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$
# PATH 환경변수 설정 전
[1004lucifer@rhel8 bin]$ git --version
bash: git: command not found...
Install package 'git-core' to provide command 'git'? [N/y] ^C
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$ ./git --version
git version 2.43.0
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$
# 해당 내용을 파일의 제일 마지막에 추가 (경로는 본인 설치한 경로로 수정)
[1004lucifer@rhel8 bin]$ vi ~/.bash_profile
export PATH=$PATH:/home/1004lucifer/git/bin

[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$
# 환경변수 Reload
[1004lucifer@rhel8 bin]$ source ~/.bash_profile
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$ git --version
git version 2.43.0
[1004lucifer@rhel8 bin]$

1004lucifer


4.1 추가 환경설정 (중요!!)

- 처음 소스 빌드의 설치한 경로와 현재의 Git 디렉토리 경로가 다른경우 아래 작업 필요
  1. Online => Offline Linux 로 가져온 후 다른 경로에 Git을 구성한경우
  2) 소스 빌드 설치 후 생성된 바이너리 Git 경로가 변경된경우


[1004lucifer@rhel8 bin]$
# Git 명령어 정상 동작 하지만..
[1004lucifer@rhel8 bin]$ git
usage: git [-v | --version] [-h | --help] [-C <path>] [-c <name>=<value>]
           [--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
           [-p | --paginate | -P | --no-pager] [--no-replace-objects] [--bare]
           [--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
           [--config-env=<name>=<envvar>] <command> [<args>]

These are common Git commands used in various situations:

... (생략)

collaborate (see also: git help workflows)
   fetch     Download objects and refs from another repository
   pull      Fetch from and integrate with another repository or a local branch
   push      Update remote refs along with associated objects

'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
See 'git help git' for an overview of the system.
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$
# Git의 Sub Command 동작하지 않음.
[1004lucifer@rhel8 bin]$ git remote-http
git: 'remote-http' is not a git command. See 'git --help'.
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$
# Git Sub Command 실행경로 셋팅값 확인 
[1004lucifer@rhel8 bin]$ git --exec-path
/home/1004lucifer/git/libexec/git-core
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$
# 실제 Git이 설치된 경로와 다름
[1004lucifer@rhel8 bin]$ pwd
/home/1004lucifer/git-binary/bin
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$ cd ../
[1004lucifer@rhel8 git-binary]$ ll
total 0
drwxr-xr-x. 2 1004lucifer 1004lucifer 154 Dec 22 09:17 bin
drwxr-xr-x. 3 1004lucifer 1004lucifer  22 Dec 22 09:17 libexec
drwxr-xr-x. 8 1004lucifer 1004lucifer  90 Dec 22 09:17 share
[1004lucifer@rhel8 git-binary]$
[1004lucifer@rhel8 git-binary]$ cd libexec/
[1004lucifer@rhel8 libexec]$ ll
total 12
drwxr-xr-x. 3 1004lucifer 1004lucifer 8192 Dec 22 09:17 git-core
[1004lucifer@rhel8 libexec]$ cd git-core/
[1004lucifer@rhel8 git-core]$
[1004lucifer@rhel8 git-core]$
[1004lucifer@rhel8 git-core]$ ll
total 3231864
-rwxr-xr-x. 141 1004lucifer 1004lucifer 22905472 Dec 22 09:17 git
-rwxr-xr-x. 141 1004lucifer 1004lucifer 22905472 Dec 22 09:17 git-add
-rwxr-xr-x. 141 1004lucifer 1004lucifer 22905472 Dec 22 09:17 git-am
-rwxr-xr-x. 141 1004lucifer 1004lucifer 22905472 Dec 22 09:17 git-annotate

... (생략)

-rwxr-xr-x. 141 1004lucifer 1004lucifer 22905472 Dec 22 09:17 git-whatchanged
-rwxr-xr-x. 141 1004lucifer 1004lucifer 22905472 Dec 22 09:17 git-worktree
-rwxr-xr-x. 141 1004lucifer 1004lucifer 22905472 Dec 22 09:17 git-write-tree
drwxr-xr-x.   2 1004lucifer 1004lucifer     4096 Dec 22 09:17 mergetools
-rwxr-xr-x.   2 1004lucifer 1004lucifer 14104232 Dec 22 09:17 scalar
[1004lucifer@rhel8 git-core]$
# 실제 Git Sub Command 위치한 경로를 확인
[1004lucifer@rhel8 git-core]$ pwd
/home/1004lucifer/git-binary/libexec/git-core
[1004lucifer@rhel8 git-core]$
[1004lucifer@rhel8 git-core]$
[1004lucifer@rhel8 git-core]$
[1004lucifer@rhel8 git-core]$
# Git의 GIT_EXEC_PATH 환경변수를 설정 (경로는 본인 경로 맞게..)
[1004lucifer@rhel8 git-core]$ vi ~/.bash_profile
export GIT_EXEC_PATH=/home/1004lucifer/git-binary/libexec/git-core

[1004lucifer@rhel8 git-core]$
[1004lucifer@rhel8 git-core]$
# Git Sub Command 정상 동작 확인
[1004lucifer@rhel8 git-core]$ git remote-http
error: remote-curl: usage: git remote-curl <remote> [<url>]
[1004lucifer@rhel8 git-core]$



- system config 를 사용할 시 오류가 발생하는 경우
(위애서 git 설치 시 system config의 경로를 지정하지 않았음, prefix 경로인 /home/1004lucifer/git 경로에 etc/gitconfig 가 기본 셋팅됨)


[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$ git config --system -l
fatal: unable to read config file '/home/1004lucifer/git/etc/gitconfig': No such file or directory
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$
[1004lucifer@rhel8 bin]$ git config --system --edit
hint: Waiting for your editor to close the file... fatal: Invalid path '/home/1004lucifer/git/etc': No such file or directory
[1004lucifer@rhel8 bin]$

# 다음과 같이 작업이 가능하다.

[1004lucifer@rhel8 git]$
# 현재위치 확인 (Git 설치된 디렉토리)
[1004lucifer@rhel8 git]$ pwd
/home/1004lucifer/git
[1004lucifer@rhel8 git]$
[1004lucifer@rhel8 git]$ ls -l
total 0
drwxr-xr-x. 2 1004lucifer 1004lucifer 154 Jan 20 02:06 bin
drwxr-xr-x. 3 1004lucifer 1004lucifer  22 Jan 20 02:06 libexec
drwxr-xr-x. 8 1004lucifer 1004lucifer  90 Jan 20 02:06 share
[1004lucifer@rhel8 git]$
# etc 디렉토리를 생성해 준다.
[1004lucifer@rhel8 git]$ mkdir etc
[1004lucifer@rhel8 git]$
[1004lucifer@rhel8 git]$ ls -l
total 0
drwxr-xr-x. 2 1004lucifer 1004lucifer 154 Jan 20 02:06 bin
drwxrwxr-x. 2 1004lucifer 1004lucifer   6 Jan 20 03:17 etc
drwxr-xr-x. 3 1004lucifer 1004lucifer  22 Jan 20 02:06 libexec
drwxr-xr-x. 8 1004lucifer 1004lucifer  90 Jan 20 02:06 share
[1004lucifer@rhel8 git]$
[1004lucifer@rhel8 git]$ cd etc
[1004lucifer@rhel8 etc]$
# etc 디렉토리안에 gitconfig 파일 생성 (system config 파일)
[1004lucifer@rhel8 etc]$ touch gitconfig
[1004lucifer@rhel8 etc]$
[1004lucifer@rhel8 etc]$ pwd
/home/1004lucifer/git/etc
[1004lucifer@rhel8 etc]$
[1004lucifer@rhel8 etc]$ ls -l
total 0
-rw-rw-r--. 1 1004lucifer 1004lucifer 0 Jan 20 03:17 gitconfig
[1004lucifer@rhel8 etc]$
# system config 파일 환경변수를 추가해 준다. (경로는 본인PC의 경로에 맞게..)
[1004lucifer@rhel8 etc]$ vi ~/.bash_profile
[1004lucifer@rhel8 etc]$
[1004lucifer@rhel8 etc]$
[1004lucifer@rhel8 etc]$ cat ~/.bash_profile
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

# User specific environment and startup programs
export PATH=$PATH:/home/1004lucifer/git-binary/bin
export GIT_EXEC_PATH=/home/1004lucifer/git-binary/libexec/git-core
export GIT_CONFIG_SYSTEM=/home/1004lucifer/git/etc/gitconfig
[1004lucifer@rhel8 etc]$
[1004lucifer@rhel8 etc]$
# 추가한 환경변수를 현재 쉘에 바로 적용
[1004lucifer@rhel8 etc]$ source ~/.bash_profile
[1004lucifer@rhel8 etc]$
# 에러 발생하지 않음 확인
[1004lucifer@rhel8 etc]$ git config --system -l
[1004lucifer@rhel8 etc]$






PS.

- 혹시나 소스 빌드 시 --exec-path 경로를 상대경로로 지정 가능할까 싶어 configure 파일을 뒤져서 --exec-prefix 옵션을 알아냈지만.. 상대 경로로는 설정 및 빌드가 불가능했었다.
- 결국 Online 에서 가져온 Git Binary 설치 시 GIT_EXEC_PATH 환경변수는 무조건 셋팅이 필요한 상황이다.


[1004lucifer@rhel8 git-2.43.0]$ ./configure --prefix=/home/1004lucifer/git --exec-prefix=../libexec/git-core
configure: error: expected an absolute directory name for --exec_prefix: ../libexec/git-core
[1004lucifer@rhel8 git-2.43.0]$


참고
https://raw.githubusercontent.com/git/git/master/INSTALL
https://yoosejin.github.io/etc/2021/01/09/upgrade-git.html
https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
https://git-scm.com/book/en/v2/Git-Internals-Environment-Variables
https://git-scm.com/download/linux


댓글