**TL;DR** Install Postgres 10, and then: ```bash sudo pg_dropcluster 10 main --stop sudo pg_upgradecluster 9.6 main sudo pg_dropcluster 9.6 main ``` --- Install PostgreSQL: ``` sudo echo 'deb http://apt.postgresql.org/pub/repos/apt/ xenial-pgdg main' > /etc/apt/sources.list.d/pgdg.list wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc | \ sudo apt-key add - sudo aptitude update sudo aptitude install postgresql-10 postgresql-client-10 postgresql-contrib-10 ``` Use `dpkg -l | grep postgresql` to check which versions of postgres are installed: ``` i postgresql - object-relational SQL database (supported version) i A postgresql-9.6 - object-relational SQL database, version 9.6 server i A postgresql-10 - object-relational SQL database, version 10 server i A postgresql-client-9.6 - front-end programs for PostgreSQL 9.6 i A postgresql-client-10 - front-end programs for PostgreSQL 10 i A postgresql-contrib-9.6 - additional facilities for PostgreSQL i A postgresql-contrib-10 - additional facilities for PostgreSQL ``` Run `pg_lsclusters`, your 9.6 and 10 main clusters should be "online". ``` pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.6 main 5432 online postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log 10 main 5433 online postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log ``` There already is a cluster "main" for 10 (since this is created by default on package installation). This is done so that a fresh installation works out of the box without the need to create a cluster first, but of course it clashes when you try to upgrade 9.6/main when 10/main also exists. The recommended procedure is to remove the 10 cluster with `pg_dropcluster` and then upgrade with `pg_upgradecluster`. Stop the 10 cluster and drop it. ```bash sudo pg_dropcluster 10 main --stop ``` Upgrade the 9.6 cluster to the latest version. ```bash sudo pg_upgradecluster 9.6 main ``` Your 9.6 cluster should now be "down". ``` pg_lsclusters Ver Cluster Port Status Owner Data directory Log file 9.6 main 5433 down postgres /var/lib/postgresql/9.6/main /var/log/postgresql/postgresql-9.6-main.log 10 main 5432 online postgres /var/lib/postgresql/10/main /var/log/postgresql/postgresql-10-main.log ``` Check that the upgraded cluster works, then remove the 9.6 cluster. ```bash sudo pg_dropcluster 9.6 main ``` Lastly: ``` sudo nano /etc/postgresql/10/main/postgresql.conf ``` Change `cluster_name = '9.6/main'` to `cluster_name = '10/main'`.