Installing PostgreSQL FROM Source Code (Full Installation Guide)
Tags: postgres, tutorial, database, apacheage
Published: 2023-07-21 22:06:34

Hey there, tech enthusiasts! Today, we're diving into the exciting world of PostgreSQL and its full installation from source code. PostgreSQL, also known as Postgres, is a powerful open-source relational database management system that has earned its reputation for robustness, reliability, and extensibility. While installing PostgreSQL from source code might sound a bit daunting, fear not! I've got you covered with this very easy-to-follow guide.

### Gather the Prerequisites

Before we begin, we need to ensure that we have all the necessary tools and libraries on our system:

- **C Compiler:** PostgreSQL is written in C, so a C compiler is a must. Popular choices include GCC (GNU Compiler Collection) and Clang.

- **Build Tools:** Ensure you have essential build tools like make and autoconf installed. These tools help in compiling the source code efficiently.

- **Libraries:** PostgreSQL requires certain libraries like readline and zlib. We need to install these development libraries on our system.

Depending on your operating system this is the command used to install the needed dependencies on Ubuntu;
`sudo apt-get install build-essential libreadline-dev zlib1g-dev flex bison`.

### Download the Source Code

Head over to the official PostgreSQL website [PostgreSQL Source Download](https://www.postgresql.org/ftp/source/) and download the source code of the desired version. If you intend to use the Apache AGE extension with PostgreSQL, it is advisable to download version 11, 12 or 13 which AGE currently support.

### Extract the Source Code

Once the download is complete, navigate to the directory where the source code is saved and extract it using the following command:
```
tar xvfz postgresql-13.10.tar.gz
```

### Configure PostgreSQL

Once you're done extracting, navigate into the extracted directory, and run configure.

```
cd postgresql-13.10
```
The configuration step ensures that PostgreSQL is tailored to your system. I'll recommend a basic configuration to get started:
```
./configure --prefix=$(pwd) --enable-cassert --enable-debug
```
- The `--prefix` install all files under the directory PREFIX instead of /usr/local/pgsql. In this case, our present working directory.

- The `--enable-debug` compiles all programs and libraries with debugging symbols. This means that you can run the programs in a debugger to analyze problems.

- The `--enable-cassert` enables assertion checks in the server, which test for many “cannot happen” conditions.  This option is not recommended for production use, but you should have it on for development work or when running a beta version.

### Compile and Install

Now, let's compile the source code and install PostgreSQL on our system.
```
gmake && gmake install
```
Alternatively, you can use `make && make install`.
The `gmake` command will compile the source code, and `gmake install` will install PostgreSQL. You can use `sudo` to ensure that the installation has the required permissions.

### Initialize the Database Cluster

After the installation, right in our postgres directory:
```
user@ubuntu:/home/postgresql-13.10$ bin/initdb my_db
```
You can use the `bin/initdb my_db` command to initialize a database cluster named `my_db`.

### Start PostgreSQL Service

We can now start the PostgreSQL service using;
```
user@ubuntu:/home/postgresql-13.10$ bin/pg_ctl -D my_db -l logfile start
```
By default, the postgres server runs on port 5432, but you can change that in the `postgresql.conf` file.

### Create a PostgreSQL Database

Once our server is started, we can now create a new database using the command below;

```
user@ubuntu:/home/postgresql-13.10$ bin/createdb --port=5432 new_db
```

The above command creates a new database called `new_db` in our database cluster `my_db`.

And you can start writing queries by connecting to the database;
```
user@ubuntu:/home/postgresql-13.10$ bin/psql --port=5432 my_db
my_db=# \dt
my_db=# \q
```
You can stop the database server using the command;
```
user@ubuntu:/home/postgresql-13.10$ bin/pg_ctl -D my_db stop
```

Congratulations! You have successfully installed PostgreSQL from source code.

### Conclusion

You've accomplished an impressive feat - installing PostgreSQL from source code! Embracing the power of PostgreSQL allows you to handle complex data needs and build robust applications. Remember, the journey of a thousand queries begins with a single installation, and you're now well-equipped to harness the potential of this incredible database management system.

So, take charge, explore the vast PostgreSQL documentation, and let your data-driven dreams soar! Happy coding!

### References
- [PostgreSQL Installation Procedure](https://www.postgresql.org/docs/current/install-procedure.html#CONFIGURE-OPTIONS)
- [PostgreSQL Source Download](https://www.postgresql.org/ftp/source/)
- Visit Apache AGE Website: https://age.apache.org/
- Visit Apache AGE GitHub: https://github.com/apache/age
- Visit Apache AGE Viewer GitHub: https://github.com/apache/age-viewer