In this blog we will see how to install postgresql 9.5 source installation.
We will get rpm files for the latest 9.5 version ,
if we need the older version the best way is to source or binary installation.
Step 1: Download postgreSQL source code
From the postgreSQL download site, choose the version
wget https://ftp.postgresql.org/pub/source/v9.5.9/postgresql-9.5.9.tar.gz |
Step 2: Install postgreSQL
tar -zxvf postgresql-9.5.9.tar.gz cp -r postgresql-9.5.9 /opt/ cd /opt/postgresql-9.5.9 ./configure make make install |
PostgreSQL Installation Issue1:
You may encounter the following error message while performing ./configure during postgreSQL installation.
# ./configure
checking for -lreadline... no
checking for -ledit... 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.
PostgreSQL Installation Solution1:
Install the readline-devel and libtermcap-devel to solve the above issue
yum install libtermcap-devel yum install readline-devel |
Other error fix
yum groupinstall "Development Tools"
./configure --without-zlib
Step 3: Verify the postgreSQL directory structure
After the installation, make sure bin, doc, include, lib, man and share directories are created under the default /usr/local/pgsql directory as shown below.
# ls -l /usr/local/pgsql/
[root@db2 postgresql-9.5.9]# ls -l /usr/local/pgsql/ total 16 drwxr-xr-x 2 root root 4096 May 13 15:08 bin drwxr-xr-x 6 root root 4096 May 13 15:08 include drwxr-xr-x 4 root root 4096 May 13 15:08 lib drwxr-xr-x 6 root root 4096 May 13 15:08 share [root@db2 postgresql-9.5.9]# |
Step 4: Create postgreSQL user account
# adduser postgres
# passwd postgres Changing password for user postgres. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. |
Step 5: Create postgreSQL data directory
Create the postgres data directory and make postgres user as the owner.
mkdir /usr/local/pgsql/data chown postgres:postgres /usr/local/pgsql/data ls -ld /usr/local/pgsql/data |
Step 6: Initialize postgreSQL data directory
Before you can start creating any postgreSQL database, the empty data directory created in the above step should be initialized using the initdb command as shown below.
su - postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data/ |
May face below error
initdb: invalid locale settings; check LANG and LC_* environment variables
Fix will be
export LC_ALL="en_US.UTF-8"
Step 7: Validate the postgreSQL data directory
Make sure all postgres DB configuration files (For example, postgresql.conf) are created under the data directory as shown below.
$ ls -l /usr/local/pgsql/data
bash-4.2$ ls -l /usr/local/pgsql/data total 48 drwx------ 5 postgres postgres 41 May 13 15:17 base drwx------ 2 postgres postgres 4096 May 13 15:17 global drwx------ 2 postgres postgres 18 May 13 15:17 pg_clog drwx------ 2 postgres postgres 6 May 13 15:17 pg_commit_ts drwx------ 2 postgres postgres 6 May 13 15:17 pg_dynshmem -rw------- 1 postgres postgres 4468 May 13 15:17 pg_hba.conf -rw------- 1 postgres postgres 1636 May 13 15:17 pg_ident.conf drwx------ 4 postgres postgres 39 May 13 15:17 pg_logical drwx------ 4 postgres postgres 36 May 13 15:17 pg_multixact drwx------ 2 postgres postgres 18 May 13 15:17 pg_notify drwx------ 2 postgres postgres 6 May 13 15:17 pg_replslot drwx------ 2 postgres postgres 6 May 13 15:17 pg_serial drwx------ 2 postgres postgres 6 May 13 15:17 pg_snapshots drwx------ 2 postgres postgres 6 May 13 15:17 pg_stat drwx------ 2 postgres postgres 6 May 13 15:17 pg_stat_tmp drwx------ 2 postgres postgres 18 May 13 15:17 pg_subtrans drwx------ 2 postgres postgres 6 May 13 15:17 pg_tblspc drwx------ 2 postgres postgres 6 May 13 15:17 pg_twophase -rw------- 1 postgres postgres 4 May 13 15:17 PG_VERSION drwx------ 3 postgres postgres 60 May 13 15:17 pg_xlog -rw------- 1 postgres postgres 88 May 13 15:17 postgresql.auto.conf -rw------- 1 postgres postgres 21332 May 13 15:17 postgresql.conf |
Step 8: Start postgreSQL database
Use the postgres postmaster command to start the postgreSQL server in the background as shown below.
/usr/local/pgsql/bin/pg_ctl -D /usr/local/pgsql/data/ -l logfile start
$ cat logfile
bash-4.2$ cat logfile LOG: database system was shut down at 2020-05-13 15:17:46 IST LOG: MultiXact member wraparound protections are now enabled LOG: database system is ready to accept connections LOG: autovacuum launcher started |
Step 9: Login and create postgreSQL DB and test the installation
bash-4.2$ /usr/local/pgsql/bin/psql psql (9.5.9) Type "help" for help.
postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (3 rows)
postgres=# create database test; CREATE DATABASE postgres=# \l List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres test | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | (4 rows)
postgres=# |