서버에 git 설치하기
git 서버를 구축해봐야지 생각만 하다가 오늘 시도해 봤다. 의외로 간단했다. 하지만 관리자 권한이 없다보니 몇 가지 함정이 좀 있었다.
일단, apt-get 이나 yum 같은 설치 프로그램을 쓸 수 없었다. 그렇다면 귀찮지만 소스를 받아서 직접 빌드하는 수밖에...
git 소스 타볼을 받아서, 권한이 있는 디렉토리에 푼다. 예를 들면 디렉토리 관리를 위해 $HOME 에 work/git 를 만들어 그 곳에 푼다.
소스를 풀어 놓은 디렉토리에 가서 ./configure 를 실행시킨다. 이 때 꼭 권한이 있는 디렉토리를 --prefix 로 지정해 주자. --prefix 가 없으면 /usr/local 이 기본이 되는데, 관리자가 아닌 이상 그 곳에 권한이 없다. 역시 내 안방이 최고다. $HOME/usr 따위를 --prefix 로 지정해 주자.
configure 가 끝나면 make 차례. make 도 끝나면 make install 을 날려준다.
이제 git 를 실행시킬 수 있다고 생각했지만, 정작 git 를 실행시키려고 하면 git 를 찾을 수 없다고 나온다. 이런... 이유는 PATH 때문이다. git 가 설치된 bin 디렉토리를 PATH 에 추가해 주자.
그럼 이제 되겠지 했는데, 웬걸 libiconv.so.2 가 없다며 난리다. 서버에 이미 설치가 되어 있다면 다행이지만, 이 서버에는 없나 보다. 또 설치해야지 뭐... ㅠㅠ
libiconv 소스를 받자. git 와 마찬가지로 빌드해서 설치하자.
git 가 실행되겠지 하는 희망을 가지며, 실행해보지만, 여전히 같은 불평을 쏟아낸다. 하... 아까는 PATH 이번에는 LD_LIBRARY_PATH 가 문제다.
libiconv 가 설치되어 있는 lib 디렉토리를 추가하자. lib64 도 있으면 같이 추가하자.
이제 실행하면 돼야 한다. ㅠㅠ
지금에야 겨우 프로그램 설치가 끝났다. git 서버 구축은 여기를 보자.
그런데 설명에 따라 git 서버 구축을 끝낸 후, clone 을 해보면
라는 에러 메시지만이 반겨준다. 이런... 한 번에 제대로 되는 경우가 없구나.
대체 무엇이 문제일까. 구글 형님께 물어봤더니, 역시 답을 주신다. 위에서 환경 변수들을 조절했지만, 따로 저장해 두지 않았던 것이다. 그러면 어디에 저장을 해야 할까 ? 우선은 .bash_profile 을 생각할 수 있겠지만, 이 파일은interactive 모드일 때만 쓰인다고 한다 원격 접속일 경우에는 쓰이지 않는다고 한다(2014/12/09). 이것 때문에도 한창 헤맸다. 그럼 어디 ? .bash_rc.bashrc(2014/12/08) 다. .bash_rc.bashrc(2014/12/08) 에서 PATH 와 LD_LIBRARY_PATH 를 설정하자. bash 가 아닌 쉘일 경우에는 그에 맞는 설정을 하시기를...
이제 될까 ? 된다. ^^ 비록 저장소가 비었다는 경고가 나오기는 하지만 살포시 무시하자.
그럼 시험 삼아 커밋하고 푸시 좀 해보자. 첫 커밋 후에 푸시를 하려했더니 웬 걸 또 에러만이 반겨준다. 사용한 git 버전은 v1.7.3.2 였다. 이 때는 push 할 때 --all 을 붙여주자.
요즘 git 에서는 괜찮은 것 같다.
끝으로 ssh 의 경우 축약형으로 쓸 수 있다.
이때 path 앞에 / 가 없으면 $HOME 을 기준으로 하는 상대경로가 되고, / 가 있으면 절대 경로가 된다.
일단, apt-get 이나 yum 같은 설치 프로그램을 쓸 수 없었다. 그렇다면 귀찮지만 소스를 받아서 직접 빌드하는 수밖에...
git 소스 타볼을 받아서, 권한이 있는 디렉토리에 푼다. 예를 들면 디렉토리 관리를 위해 $HOME 에 work/git 를 만들어 그 곳에 푼다.
소스를 풀어 놓은 디렉토리에 가서 ./configure 를 실행시킨다. 이 때 꼭 권한이 있는 디렉토리를 --prefix 로 지정해 주자. --prefix 가 없으면 /usr/local 이 기본이 되는데, 관리자가 아닌 이상 그 곳에 권한이 없다. 역시 내 안방이 최고다. $HOME/usr 따위를 --prefix 로 지정해 주자.
./configure --prefix=$HOME/usr
configure 가 끝나면 make 차례. make 도 끝나면 make install 을 날려준다.
이제 git 를 실행시킬 수 있다고 생각했지만, 정작 git 를 실행시키려고 하면 git 를 찾을 수 없다고 나온다. 이런... 이유는 PATH 때문이다. git 가 설치된 bin 디렉토리를 PATH 에 추가해 주자.
export PATH=$PATH:$HOME/usr/bin
그럼 이제 되겠지 했는데, 웬걸 libiconv.so.2 가 없다며 난리다. 서버에 이미 설치가 되어 있다면 다행이지만, 이 서버에는 없나 보다. 또 설치해야지 뭐... ㅠㅠ
libiconv 소스를 받자. git 와 마찬가지로 빌드해서 설치하자.
git 가 실행되겠지 하는 희망을 가지며, 실행해보지만, 여전히 같은 불평을 쏟아낸다. 하... 아까는 PATH 이번에는 LD_LIBRARY_PATH 가 문제다.
libiconv 가 설치되어 있는 lib 디렉토리를 추가하자. lib64 도 있으면 같이 추가하자.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/usr/lib:$HOME/usr/lib64
이제 실행하면 돼야 한다. ㅠㅠ
지금에야 겨우 프로그램 설치가 끝났다. git 서버 구축은 여기를 보자.
그런데 설명에 따라 git 서버 구축을 끝낸 후, clone 을 해보면
git-upload-pack: command not found
라는 에러 메시지만이 반겨준다. 이런... 한 번에 제대로 되는 경우가 없구나.
대체 무엇이 문제일까. 구글 형님께 물어봤더니, 역시 답을 주신다. 위에서 환경 변수들을 조절했지만, 따로 저장해 두지 않았던 것이다. 그러면 어디에 저장을 해야 할까 ? 우선은 .bash_profile 을 생각할 수 있겠지만, 이 파일은
이제 될까 ? 된다. ^^ 비록 저장소가 비었다는 경고가 나오기는 하지만 살포시 무시하자.
그럼 시험 삼아 커밋하고 푸시 좀 해보자. 첫 커밋 후에 푸시를 하려했더니 웬 걸 또 에러만이 반겨준다. 사용한 git 버전은 v1.7.3.2 였다. 이 때는 push 할 때 --all 을 붙여주자.
git push --all
요즘 git 에서는 괜찮은 것 같다.
끝으로 ssh 의 경우 축약형으로 쓸 수 있다.
계정@서버주소:path/to/git/repo
이때 path 앞에 / 가 없으면 $HOME 을 기준으로 하는 상대경로가 되고, / 가 있으면 절대 경로가 된다.
댓글
댓글 쓰기