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