2017년 9월 20일 수요일

PostgreSQL 소스 설치 (CentOS 7)


CentOS 에 PostgreSQL 설치하면서, 수행한 내용들을 기록해 보기로 한다.
나중에 혹시라도 참고할 때가 있을거 같다.
암튼 치매 예방을 위해 기록한다.

  • 소스 다운로드
에서 원하는 버전을 다운로드 한다.
글을 쓰고 있는 현재 기준으로, 9.6.5 가 최신이므로, 이 버전을 설치하도록 한다.
v9.6.5 링크를 클릭한다.
여러 파일들이 있는데, postgresql-9.6.5.tar.gz 다운로드 받는다.

  • 압축해제
% tar vxzf postgresql-9.6.5.tar.gz
압축을 해제하면, postgresql-9.6.5 디렉토리가 생성된다.

  • 설정
컴파일을 하기 전에 설정을 먼저 해야 한다.
설정은 일반적으로 configure 를 사용해서 한다.
% ./configure

쭉루루룩 하면서 잘되는가 싶더니 에러를 내뿜는다.

checking for main in -lm... yes
checking for library containing setproctitle... no
checking for library containing dlopen... -ldl
checking for library containing socket... none required
checking for library containing shl_load... no
checking for library containing getopt_long... none required
checking for library containing crypt... -lcrypt
checking for library containing shm_open... -lrt
checking for library containing shm_unlink... none required
checking for library containing fdatasync... none required
checking for library containing sched_yield... none required
checking for library containing gethostbyname_r... none required
checking for library containing shmget... none required
checking for library containing readline... no
configure: error: readline library not found
If you have readline already installed, see config.log for details on the
failure.  It is possible the compiler isn't looking in the proper directory.
Use --without-readline to disable readline support.

암튼 뭔가 환경이 부족하다는 메세지이다.
자세한건 config.log 를 참고하라고 되어 있는데, 그냥 귀찮으니까 구글에서
"postgresql 컴파일" 라고 검색해서 방법을 찾도록 한다.

검색을 해보니, 추가적으로 필요한 요소가 있다고 한다.
추가적으로 필요한 요소를 설치하도록 한다.

% yum -y install gcc gcc-c++ boost boost-devel pkgconfig uuidd libtool autoconf make coreutils uuid-dev uuid-devel libuuid-devel e2fsprogs-devel readline readline-devel zlib zlib-devel openssl openssl-devel gettext libxml2-devel

그리고 다시 configure 를 하니, 에러 발생 없이 잘 된다.
이 상태에서 계속 진행을 하면 PostgreSQL 은 기본 설치 디렉토리가 /usr/local/pgsql 가 된다.
취향에 맞게 --prefix 옵션을 통해서 다른 디렉토리에 설치할 수 있다.
나는 물론 귀찮으니, 그냥 설치를 한다.
※ 그 외에도 많은 옵션들이 있으니, 궁금하면 구글에서 찾아봐서 사용하면 된다.

  • 빌드
% make
컴파일을 진행하는 작업이다. 컴퓨터 사양에 따라 시간이 좀 걸릴 수 있으므로, 느긋하게 커피 한잔 하면서 기다리면 된다.

  • 설치
% make install
컴파일 된 결과물들을 /usr/local/pgsql 에 설치하는 작업이다.
그런데 실제로 해보면 에러가 발생한다.

make -C src install
make[1]: Entering directory `/home/ck0911.kim/postgresql-9.6.5/src'
make -C common install
make[2]: Entering directory `/home/ck0911.kim/postgresql-9.6.5/src/common'
make -C ../backend submake-errcodes
make[3]: Entering directory `/home/ck0911.kim/postgresql-9.6.5/src/backend'
make[3]: `submake-errcodes'를 위해 할 일이 없습니다
make[3]: Leaving directory `/home/ck0911.kim/postgresql-9.6.5/src/backend'
/usr/bin/mkdir -p '/usr/local/pgsql/lib'
/usr/bin/mkdir: `/usr/local/pgsql' 디렉토리를 만들 수 없습니다: 허가 거부
make[2]: *** [installdirs] 오류 1
make[2]: Leaving directory `/home/ck0911.kim/postgresql-9.6.5/src/common'
make[1]: *** [install-common-recurse] 오류 2
make[1]: Leaving directory `/home/ck0911.kim/postgresql-9.6.5/src'
make: *** [install-src-recurse] 오류 2

아하.... 이런.... root 계정으로 해야 되는구나.....
왜냐하면 /usr/local 디렉토리는 root 계정으로만 write 할 수 있기 때문이다.

이런씨..... configure 단계부터 다시 해야겠다.
왜냐하면 나는 일반 계정으로 작업을 하고 싶기 때문이다.
prefix 에 자신이 설치하고 싶은 디렉토리를 넣어주면 된다.

% make clean
% ./configure --prefix=/home/ck0911.kim/postgres
% make
% make install

PostgreSQL installation complete.
메세지가 나타나면 잘 설치된 것이다.

실제 postgresql 디렉토리가 생성되어 있는걸 볼 수 있다.
그 디렉토리 안에 들어가면 bin 디렉토리가 보인다.
그 디렉토리 안에 들어가면 실행 가능한 바이너리 파일들이 보인다.
그 바이너리 파일들을 아무대서나 실행할 수 있도록 PATH 에 추가해 준다.

$HOME/.bashrc 맨 마지막에
"export PATH=$PATH:$HOME/postgresql/bin" 구문을 추가해 주면 된다.

※ postgresql 디렉토리로 한번에 이동하거나, 환경설정관련 내용을 사용할 때, 환경변수를 지정해 놓으면 편리하다. 개인적으로 변수를 추가했다. 취향 차이이므로 안해도 상관없다.
% export PG=$HOME/postgresql

댓글 없음:

댓글 쓰기

화곡 어쩌라고, 굴사냥

석화찜(굴찜)을 먹으러 여의도로 갔다 그런데 재료가 모두 소진되었다고 마감이라고 한다 응? 다들 굴에 미쳤나? 굴을 찾아 헤매다 보니, 화곡까지 가게 되었다. 화곡은 처음 가본다. 첫인상은 "술집 겁네 많네" 피똥쌀때까지 마실 수 있...