Does postgresql (server) setup a main cluster after installation? (14.04)
I'm surprised that installing postgresql on ubuntu doesn't give me a working postgres server setup immediately: it requires additional steps:
Setting up postgresql-common (154) ...
* No PostgreSQL clusters exist; see "man pg_createcluster"
Setting up postgresql-9.3 (9.3.4-1) ...
update-alternatives: using /usr/share/postgresql/9.3/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
* No PostgreSQL clusters exist; see "man pg_createcluster"
Setting up postgresql (9.3+154) ...
I've seen similar behaviour in the past, where the installer failed to create a default cluster (I thing) because some locale setting was missing but I think I have these setup correctly.
Is it new (and therefore correct) that an additional step is required on Ubuntu 14.04? Or is something (silently) broken?
All of this is happening on a fresh DigitalOcean 14.04 VPS.
Problems that occur appear on the system locale
warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_TIME = "en_US.UTF-8",
LC_MONETARY = "en_US.UTF-8",
LC_ADDRESS = "en_US.UTF-8",
LC_TELEPHONE = "en_US.UTF-8",
LC_NAME = "en_US.UTF-8",
LC_MEASUREMENT = "en_US.UTF-8",
LC_IDENTIFICATION = "en_US.UTF-8",
LC_NUMERIC = "en_US.UTF-8",
LC_PAPER = "en_US.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
The first step to configure the reset locale with the command :
$ sudo dpkg-reconfigure locales
However postgresql can not be executed, because the current Postgres install clusters are not made.
Then run the command :
$ sudo pg_createcluster 9.3 main --start
- Note : I use version postgresql-9.3
Next run postgresql with the command :
$ sudo service postgresql start
## Or
$ sudo /etc/init.d/postgresql start
The results are as below
$ sudo service postgresql start
* Starting PostgreSQL 9.3 database server
Check the status postgresql running or not
$ sudo service postgresql status
9.3/main (port 5432): online
Today I was playing with Ubuntu 14.04 and face the same problem - but in my case I was adopting my puppet manifests. In any case, the problem was the same: when I was expected to find config file under /etc/postgresql/9.3/main/postgresql.conf
it was missing.
After some time I found the root of my problem: for some reason locale of Vagrant box I was using (actually, ubuntu/trusty64) was misconfigured and during install I saw such a messages:
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_TIME = "ru_RU.UTF-8",
LC_MONETARY = "ru_RU.UTF-8",
LC_ADDRESS = "ru_RU.UTF-8",
LC_TELEPHONE = "ru_RU.UTF-8",
LC_NAME = "ru_RU.UTF-8",
LC_MEASUREMENT = "ru_RU.UTF-8",
LC_IDENTIFICATION = "ru_RU.UTF-8",
LC_NUMERIC = "ru_RU.UTF-8",
LC_PAPER = "ru_RU.UTF-8",
LANG = "en_US.UTF-8"
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C").
locale: Cannot set LC_ALL to default locale: No such file or directory
And at the end of installation:
Unpacking postgresql (9.3+154) ...
Processing triggers for man-db (2.6.7.1-1ubuntu1) ...
Processing triggers for ureadahead (0.100.0-16) ...
Setting up libpq5 (9.3.5-0ubuntu0.14.04.1) ...
Setting up postgresql-client-common (154) ...
Setting up postgresql-client-9.3 (9.3.5-0ubuntu0.14.04.1) ...
update-alternatives: using /usr/share/postgresql/9.3/man/man1/psql.1.gz to provide /usr/share/man/man1/psql.1.gz (psql.1.gz) in auto mode
Setting up ssl-cert (1.0.33) ...
locale: Cannot set LC_ALL to default locale: No such file or directory
Setting up postgresql-common (154) ...
locale: Cannot set LC_ALL to default locale: No such file or directory
Adding user postgres to group ssl-cert
Creating config file /etc/logrotate.d/postgresql-common with new version
Building PostgreSQL dictionaries from installed myspell/hunspell packages...
Removing obsolete dictionary files:
* No PostgreSQL clusters exist; see "man pg_createcluster"
Processing triggers for ureadahead (0.100.0-16) ...
Setting up postgresql-9.3 (9.3.5-0ubuntu0.14.04.1) ...
Error: The locale requested by the environment is invalid.
Error: could not create default cluster. Please create it manually with
pg_createcluster 9.3 main --start
or a similar command (see 'man pg_createcluster').
update-alternatives: using /usr/share/postgresql/9.3/man/man1/postmaster.1.gz to provide /usr/share/man/man1/postmaster.1.gz (postmaster.1.gz) in auto mode
* No PostgreSQL clusters exist; see "man pg_createcluster"
Setting up postgresql (9.3+154) ...
Processing triggers for libc-bin (2.19-0ubuntu6.5) ...
After fixing locale with such a command sudo locale-gen ru_RU ru_RU.UTF-8 ru_RU ru_RU.UTF-8
before installing postgresql the problem gone. Hope it would help someone in future or me from the future.