Methods of installing PostgreSQL
Before digging into troubleshooting itself, the installation process will be outlined. The following choices are available:
- Installing binary packages
- Installing from source
Installing from source is not too hard to do. However, this chapter will focus on installing binary packages only. Nowadays, most people (not including me) like to install PostgreSQL from binary packages because it is easier and faster.
Basically, two types of binary packages are common these days: RPM (Red Hat-based) and DEB (Debian-based). In this chapter, installing these two types of packages will be discussed.
Installing RPM packages
Most Linux distributions include PostgreSQL. However, the shipped PostgreSQL version is somewhat ancient in many cases. Recently, I saw a Linux distribution that still featured PostgreSQL 8.4, a version already abandoned by the PostgreSQL community. Distributors tend to ship older versions to ensure that new bugs are not introduced into their systems. For high-performance production servers, outdated versions might not be the best idea, however.
Clearly, for many people, it is not feasible to run long-outdated versions of PostgreSQL. Therefore, it makes sense to make use of repositories provided by the community. The Yum repository shows which distributions we can use RPMs for, at http://yum.postgresql.org/repopackages.php.
Once you have found your distribution, the first thing is to install this repository information for Fedora 20 as it is shown in the next listing:
yum install http://yum.postgresql.org/9.4/fedora/fedora-20-x86_64/pgdg-fedora94-9.4-1.noarch.rpm
Once the repository has been added, we can install PostgreSQL:
yum install postgresql94-server postgresql94-contrib /usr/pgsql-9.4/bin/postgresql94-setup initdb systemctl enable postgresql-9.4.service systemctl start postgresql-9.4.service
First of all, PostgreSQL 9.4 is installed. Then a so-called database instance is created (initdb
). Next, the service is enabled to make sure that it is always there after a reboot, and finally, the postgresql-9.4 service is started.
Tip
The term database instance is an important concept. It basically describes an entire PostgreSQL environment (setup). A database instance is fired up when PostgreSQL is started. Databases are part of a database instance.
Installing Debian packages
Installing Debian packages is also not too hard. By the way, the process on Ubuntu as well as on some other similar distributions is the same as that on Debian, so you can directly use the knowledge gained from this section for other distributions.
A simple file called /etc/apt/sources.list.d/pgdg.list
can be created, and a line for the PostgreSQL repository (all the following steps can be done as root user or using sudo
) can be added:
deb http://apt.postgresql.org/pub/repos/apt/ YOUR_DEBIAN_VERSION_HERE-pgdg main
So, in the case of Debian Wheezy, the following line would be useful:
deb http://apt.postgresql.org/pub/repos/apt/ wheezy-pgdg main
Once we have added the repository, we can import the signing key:
$# wget --quiet -O - \ https://www.postgresql.org/media/keys/ACCC4CF8.asc | apt-key add - OK
Voilà! Things are mostly done. In the next step, the repository information can be updated:
apt-get update
Once this has been done successfully, it is time to install PostgreSQL:
apt-get install "postgresql-9.4"
If no error is issued by the operating system, it means you have successfully installed PostgreSQL. The beauty here is that PostgreSQL will fire up automatically after a restart. A simple database instance has also been created for you.
If everything has worked as expected, you can give it a try and log in to the database:
root@chantal:~# su - postgres $ psql postgres psql (9.4.1) Type "help" for help. postgres=#