PostgreSQL 소스 코드로 설치

전에 리눅스에서 YUM을 이용해 프리패키지 배포를 이용한 설치하는 법을 포스팅을 한 적이 있다.


http://db.necoaki.net/194?category=736270


PostgreSQL은 모든 Unix에서 동작하며, Windows에서도 동작한다.



소스 코드로 설치


./configure make

su

make install adduser postgres

mkdir /usr/local/pgsql/data

chown postgres /usr/local/pgsql/data su - postgres

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data >logfile 2>&1 &

/usr/local/pgsql/bin/createdb test

/usr/local/pgsql/bin/psql test



요구 사항


● GNU make 버전 3.80 이상

 - 다른 Make 프로그램이나 3.80 버전 이하에서는 동작하지 않는다.

● ISO/ANSI C 컴파일러 필요.

● GNU Readline library가 기본적으로 사용된다. 

 - 간단히 말하면 프롬프트 내에서 vi 처럼 쓸수 있다는 이야기다. 유용하기 떄문에 강력히 권장된다.

 - 사용하지 않으려면 --without-readline 옵션을 configure로 주면 된다.

 - 또한, libedit 라이브러리를 사용할 수도 있다.

● zlib 압축 라이브러리가 기본적으로 사용된다.

 - 이것을 사용하지 않으려면 --without-zlib 옵션을 configure로 설정하면 된다.

 - zlib을 사용하지 않을 경우 pg_dump 및 pg_resotre에서 압축된 아카이브에 대한 지원이 비활성화 된다.

● 서버 프로그래밍 언어 PL/Perl을 빌드하려면 libperl 라이브러리 헤더 파일을 비롯한 Perl 전체 설치가 필요.

● PL/Python을 빌드하려면 distutils 모듈을 이용한 파이썬 설치가 필요. 최소 요구버전은 2.3이다.

 - libpython은 대부분 플랫폼에서 공유 라이브러리이다. PostgreSQL을 빌드 및 설치한 후에 plpython.so라는 파일이 있는 경우 모든것이 정상적으로 진행되나, 없는 경우 사용자가 파이썬 설치를 리빌드 하여 공유 라이브러리를 생성해야 한다.

 프로그램 메시지를 영어가 아닌 다른 언어로 표시하는 기능인 NLS를 활성화 하려면 Gettext API의 구현이 필요하다. 

● 인증 및 암호화를 지원하려는 경우는 Kerberos, OpenSSL, OpenLDAP,PAM 등이 필요하다.

● 소스 패키지 압축을 해제하기 위해 gzip, bzip2, tar 필요.



소스 다운로드


http://postgresql.org/download


포스팅 기준(2018.04.03) 가장 최신 버전은 10.3 버전이 릴리즈 되어 있다. 




설치 방법


configure 스크립트 실행


 - 이 스크립트는 테스트를 여러 차례 실행하여 시스템 종속변수의 값을 결정하고 운영체제의 특이점을 검출하여, 최종적으로 빌드 트리에서 몇 개의 파일을 생성하여 발견된 것들을 기록한다. 빌드 디렉토리를 별도로 유지하고 싶으면 소스 트리 외부의 디렉토리에서 configure를 실행 할 수 있다. 이 절차를 VPATH 빌드라고 한다. 방법은 아래와 같다.


mkdir build_dir

cd build_dir

/path/to/source/tree/configure [options go here]

make



커스터마이즈 커맨드라인 옵션



--prefix=PREFIX


/usr/local/pgsql 대신 PREFIX 디렉토리에 모든 파일 설치

실제 파일은 서브 디렉토리에 설치된다. 개별 서브 디렉토리를 커스터마이즈 할 수 있다.

하지만 기본값으로 남겨두면 설치 재배치가 가능. 설치후 사용자가 디렉토리를 이동 할 수 있음.

재배치 가능한 설치의 경우 --disable-rpath 옵션을 사용 할 수 있음.



--exec-prefix=EXEC-PREFIX


PREFIX에 설정된 것이 아닌 다른 접두사 EXEC_PREFIX 아래에 아키텍처 종속 파일을 설치할 수 있다. 호스트 사이의 아키텍처 독립 파일을 공유할 때 유용. 이것을 생략하면 EXEC-PREFIX와 PREFIX가 동일 하게 설정 되고 동일한 트리 아래에 설치 된다.



--bindir=DIRECTORY


실행 프로그램에 대한 디렉토리를 지정한다. 기본값은 EXEC-PREFIX/bin이며 일반적으로 /user/local/pgsql/bin



--sysconfdir=DIRECTORY


구성 파일에 대한 디렉토리 PREFIX/etc를 기본값으로 설정



--libdir=DIRECTORY


라이브러리 및 동적으로 로드되는 모듈을 설치할 위치 설정. 기본값은 EXEC-PREFIX/lib



--includedir=DIRECTORY


C 및 C++ 헤더파일 설치를 위한 디렉토리 설정. 기본값 PREFIX/include



--datarootdir=DIRECTORY


다양한 종류의 읽기 전용 데이터 파일에 대한 root 디렉토리를 설정한다. 이것은 다음 옵션 일부에 대한 기본값만 설정한다. 기본값은 PREFIX/share



--datadir=DIRECTORY


설치한 프로그램에서 사용되는 읽기 전용 데이터 파일에 대한 디렉토리를 설정 한다. 기본값은 DATAROOTDIR

※ 이것은 데이터베이스 파일이 배치되는 위치와는 상관이 없다.



--localedir=DIRECTORY


로케일 데이터, 메시지 번역 카탈로그 파일 설치를 위한 디렉토리. 기본값 PREFIX/locale



--mandir=DIRECTORY


PostgreSQL에 딸려 있는 man 페이지는 이 디렉토리 아래에 각각의 manx 서브 디렉토리에 설치딘다. 기본값은 DATAROOTDIR/man



--docdir=DIRECOTORY


man 페이지를 제외한 문서 파일 을 설치하기 위한 root 디렉토리 설정. 기본값은 DATAROOTDIR/doc/postgresql



--htmldir=DIRECTORY


PostgreSQL에 대한 HTML 문서가 설치되는 경로. 기본값 DATAROOTDIR



※ 시스템의 나머지 네임스페이스에 지장을 주지 않고 PostgreSQL을 공유 설치 위치에 (예: /usr/local/include)에 설치하려면 주의가 필요하다. 먼저, string "/postgres"은 완전히 확장된 디렉토리 이름에 string "postgres" 또는 "psql"이 포함 되어 있지 않는 한 datadir, sysconfdir 및 docdir에 자동으로 첨부된다. 예를 들면 접두사로 /usr/local을 선택한 경우는 문서는 /usr/local/doc/postgresql에 설치 되지만, 접두사가 /opt/postgres인 경우 /opt/postgres/doc 밑에 있게 된다. 클라이언트의 공용 C 헤더 파일 includedir 설치되고 namespace-clean이다. 내부 헤더 파일 및 서버 헤더 파일은 includedir 아래의 전용 디렉토리에 설치된다. 헤더 파일에 액서스 하는 방법에 대한 정보는 각 인터페이스의 문서를 참조하기 바란다. 마지막으로, 적절한 경우 동적으로 로드되는 모듈에 대한 전용 서브 디렉토리도 libdir 아래에 생성된다.



--with-extar-version=STRING


STRING을 PostgreSQL 버전 번호에 첨부한다. 이것을 사용하면 릴리지 되지 않은 깃 스냅샷에서 빌드된 바이너리를 make하거나 git describe 식별자 또는 배포 패키지 릴리스 번호 같은 추가버전 문자열을 사용하여 커스텀 패키지를 포함할 수 있다.



-with-includes=DIRECTORIES


DIRECTORIES는 콜론으로 구분된 디렉토리 목록이며, 컴파일러라 헤더 파일을 검색하는 목록에 추가된다. 비표준 위치에 설치된 옵션 패키지 (예: GNU Readline)가 있을 경우 이 옵션을 사용해야 하고 해당 --with-libraries 옵션도 사용해야 한다.

예: --with-includes=/opt/gnu/include:/usr/sup/include



--with-libraries=DIRECTORIES


DIRECTORIES는 라이브러리 검색을 위한 콜론으로 구분된 디렉토리 목록이다. 비표준 위치에 설치된 경우 이 옵션(및 해당 --with-includes 옵션)을 사용해야 한다.



--enabled-nls [=LANGUAGES]


프로그램 메시지를 영어가 아닌 다른 언어로 표시하는 기능 NLS를 활성화한다.

언어의 코드목록은 공백으로 구분된 옵션이다. (예: --enable-nls='de fr kr'

목록을 지정하지 않는 경우 사용 가능한 모든 번역이 설치된다.



--with-pgport=NUMBER


서버와 클라이언트의 기본 포트 번호로 NUMBER를 지정한다. 기본값은 5432



--with-perl


PL/Perl 서버 언어를 빌드한다.



--wiith-python


PL/Python 서버 언어를 빌드한다.



--with-tcl


PL/TCL 서버 언어를 빌드한다.



--with-tclconfig=DIRECTORY


TCL은 Tcl과 인터페이스 하는 모듈을 빌드하는 데 필요한 구성 정보가 포함된 tclConfig.sh 파일을 설치한다. 이 파일은 자동으로 발견 되지만 다른 버전의 Tcl을 사용하려는 경우에는 검색하려는 디렉토리를 지정 할 수 있다.



--with-gssapi


GSSAPI 인증에 대한 지원을 사용하여 빌드 한다. GSSAP 시스템은 기본적으로 /usr/include, usr/lib 에 설치되지 않음으로 이 옵션 외에도 --with-libraries, --with-includes 옵션을 사용해야 한다. configure는 프로세싱전에 사용자의 GSSAPI 설치가 충분한지 확인하기 위해 필수 헤더 파일과 라이브러리를 점검한다.



--with-krb-srvnam=NAME


GSSAPI에서 사용되는 Kerberos 서비스 보안 주체의 기본 이름.기본값은 postgres. 윈도우환경에서는 대문자 POSTGRES



--with-openssl


SSL 연결에 대한 지원을 사용하여 빌드한다. OpenSSL 패키지 설치 필요,



--with-pam


PAM지원을 사용하여 빌드 한다.



--with-ldap


인증 및 연결 매개변수 조회에 대한 LDAP 지원을 사용하여 빌드한다. 유닉스에서 LDAP 패키지 설치 필요.



--without-readline


readline 라이브러리 사용 금지. 비권장



--with-libedit-preferred


BSD의 허가를 받은 libedit 라이브러리 사용 장려. 이 옵션은 readline과 libedit 라이브러리 둘다 설치된 경우에만 의미가 았다. 기본값은 Readline을 사용.



--with-bonjour


Bonjour 지원을 사용하여 빌드한다. Mac OSX 에서 권장



--with-uuid=LIBRARY


지정된 UUID 라이브러리를 사용하여 uuid-ossp 모듈을 빌드한다. LIBRARY는 다음중에 하나 여야 한다.

BSD, e2fs,ossp



--with-libxml


libxml을 사용하여 빌드한다.



--with-libxslt


xml2 모듈을 빌드하는 경우 libxslt 사용. xml2는 이 라이브러리에 의존하여 XML의 XSL 변환을 수행



--disable-integer-datetimes


타임스탬프 및 간격용 64비트 integer 저장소에 대한 지원을 비활성화 한고 datetime 값은 Floating-ponit 숫자로 대신 저장한다. Floating-point-datetime 저장소는 8.4 이전 버전의 기본값으로 마이크로초 정밀도를 지원하지 않아서 이제는 무의미 하다. 해당 타입을 사용할 수 없는 경우나 이전 버전으로 작성된 어플리케이션과의 호환성을 위해 사용.



--disable-float4-byval


float4 값을 "by value"로 전달. 이 옵션은 성능을 희생하는 대신 오래전에 C로 작성된 사용자 정의 함수와 호환 때문에, 그리고 "version 0" 호출변환을 사용하기 때문에 필요할 수도 있다.



--disable-float8-byval


float8 값을 "by value"로 전달. 이 옵션은 성능을 희생하는 대신 오래전에 C로 작성된 사용자 정의 함수와 호환 때문에, 그리고 "version 0" 호출변환을 사용하기 때문에 필요할 수도 있다. 32비트 플랫폼에서 float8-byval이 기본값이고, --enable-float8-byval 선택은 불가능하다. 이 옵션은 float8 뿐만 아니라 int8 및 timstamp같은 일부 관련 타입에도 영향을 미친다.



--with-segsize=SEGSIZE


segmentsize를 기가바이트 단위로 설정한다. 거대 테이블은 운영체제파일 여러개로 분할되며, 각각의 크기는 세그먼트 크기와 동일하다. 사용자의 운영체제에서 'Largefile" 지원이 있는 경우 더 큰 세그먼트 크기를 사용 할 수 있다. Large Table을 다수 사용하는 경우 소비되는 파일 디스크립터 수를 줄일때 유용하다. 



--with-blocksize=SEGSIZE


WAL segment size를 메가바이트 단위로 설정한다. WAL 로그에서 개별 파일의 크기이다. 기본값은 16MB. 1~64 사이의 2의 제곱이여야 한다. 이 값을 변경하려면 initdb가 필요하다.



--with-wal-blocksize=BLOCKSIZE


WAL block szie를 킬로바이트 단위로 설정한다. WAL로그 내에서 저장 및 I/O단위이다. 기본값 8k. 1~64 사이의 2의 제곱수로 설정.



--disable-spinlocks


PostgreSQL가 플랫폼에 대한 CPU 스핀락 지원이 없더라도 빌드가 성공하도록 한다. 스핀락 지원이 없는 경우 성능이 저하되므로 빌드 중단시 플랫폼에 스핀락 지원이 없을 경우에 사용한다. 이 옵션이 필요한 경우 PostgreSQL 개발자에게 문제를 리포트하기 바람.



--disable-thread-safety


클라이언트 라이브러리의 스레드 안전을 비활성화 한다. 이것은 libpq 및 ECPG 프로그램의 동시 스레드가 자체 전용 연결 핸들러를 안전하게 제어하는것을 막는다.



--with-system-tzdata=DIRECTORY


PostgreSQL에는 자체 시간대 데이터베이스가 포함되면, 이것은 날까 및 시간 작업에 필요하다. 서머타임을 사용하는 곳에서 사용하는 경우 OS에서 제공되는 절대경로(/usr/share/zoneinfo)로 지정시 서머타임 규칙이 바뀔때 마다 PostgreSQL 패키지를 업데이트 할 필요가 없다는 것.



--without-zlib


zlib 라이브러리 사용을 금지. pg_dump 및 pg_resotre에서 압축된 아카이브에 대한 지원을 비활성화 한다.



--enable-debug


디버깅 심볼을 사용하여 모든 프로그램과 라이브러리를 컴파일한다. 이 옵션은 GCC를 사용하는 경우에만 권장된다.




configure는 일반적으로 gcc를 고르고, 가능하지 않을때에서는 cc를 선택한다. 유사하게, 필요시 CFLAGS 변수를 사용하여 기본 컴파일러 플래그를 오버라이드할 수 있다. 더 자세한 내용은 공식 기본 문서를 참고하기 바란다.




빌드


make


문서와 추가 모듈을 비롯해 모든것을 빌드하려면


make world




파일 설치 (root로 실행)


make install


문서 설치


make install-docs 


(or)


make install-world 




환경 변수도 너무 많고, 전문가가 아니면 어떻게 손대야 할지 모르는 옵션이 너무 많다.

초보자라면 소스 설치보다는 패키지 설치를 추천한다...

'PostgreSQL' 카테고리의 다른 글

PostgreSQL 11 설치  (0) 2018.12.03
PostgreSQL 백업 및 복구  (0) 2018.11.24
PostgreSQL 소스 코드로 설치  (0) 2018.04.03
PostgreSQL 버그 리포팅 가이드 라인  (0) 2018.04.03
PostgresSQL 이란?  (0) 2018.04.03
PostgreSQL 유저 및 Tablespace, DB 생성  (0) 2018.03.26

티스토리 툴바