J'ai installé PostgreSQL 9.3 avec succès à partir du référentiel APT sur 2 VM exécutant Ubuntu 12.04 et 13.04 ... cependant, je ne parviens pas à l'installer correctement sur ma machine hôte exécutant Ubuntu 12.04.
L'installation (cette fois) semble avoir bien fonctionné, mais il y a peut-être une erreur que je ne comprends pas:
* No PostgreSQL clusters exist; see "man pg_createcluster"
Setting up postgresql-9.3 (9.3.0-2.pgdg12.4+1) ...
Creating new cluster 9.3/main ...
config /etc/postgresql/9.3/main
data /var/lib/postgresql/9.3/main
locale en_US.UTF-8
port 5432
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.
J'essaie donc de m'ajouter en tant qu'utilisateur PostgreSQL, mais j'obtiens ceci:
createuser: could not connect to database postgres: could not connect to server: No such file or directory
Is the server running locally and accepting
connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5432"?
Je ne vois pas PostgreSQL s'exécuter dans le moniteur système, et il n'y a aucun fichier dans le dossier/var/run/postgresql/... complètement vide.
EDIT: Sur les VM, il y a un fichier dans/var/run/postgresql/appelé 9.3-main.pid
Il n'y a rien dans le fichier journal de la machine hôte situé/var/log/postgresql
Alors ... qu'est-ce qui se passe ici qui ne se passe pas dans mes VM? Comme je l'ai dit, les autres installations sur les machines virtuelles, y compris PostGIS et PGAdmin sont arrivées parfaitement ... aucune idée pourquoi cette machine hôte ne passe pas ...
Mes paramètres régionaux n'étaient pas correctement configurés lors de l'installation de PostgreSQL. La purge et la réinstallation n'ont pas aidé. J'ai suivi les instructions ici et cela a fait l'affaire pour moi.
Parties essentielles des informations liées reproduites ci-dessous:
Le problème s'est présenté de la manière suivante:
warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
...
are supported and installed on your system.
Le premier a été très facile à résoudre en exécutant:
#dpkg-reconfigure locales
... et en choisissant les paramètres régionaux préférés.
Mais après cela, PostgreSQL a toujours refusé de démarrer. Cela est dû au fait que le processus d'installation a tenté de créer un cluster au moment de l'installation, mais en raison des mauvais paramètres régionaux, cela n'a pas été fait. Nous devons donc refaire cette étape en exécutant:
#pg_createcluster 9.3 main --start
(Pour la version 9.3 de PostgreSQL)
Après cette étape, PostgreSQL démarre sans problème via
#/etc/init.d/postgresql start
J'espère que vous avez déjà résolu ce problème, mais je rencontre un problème similaire qui semble avoir une source différente, et peut-être que mon expérience vous aidera si vous rencontrez toujours un problème.
Mon problème avec 9.3 sur Ubuntu concerne le répertoire socket qui est un répertoire transitoire dans/run. Fondamentalement, le script init.d est censé prendre soin de créer le répertoire socket dans/run/postgresql s'il n'existe pas lors de l'action de démarrage. Ce sera toujours l'état des choses après un redémarrage.
Le problème est cependant que le script init.d se fermera avant d'exécuter l'action de démarrage si le répertoire socket n'existe pas. Cela est dû au fait que l'appel à pg_lsclusters échouera sans le répertoire de socket, ce qui à son tour empêche l'action de démarrage de créer le répertoire de socket.
Je n'ai pas compris quelle est la meilleure solution, mais si je déplace la logique de création du répertoire de socket de l'action de démarrage avant l'appel à pg_lsclusters, je suis en mesure de démarrer le serveur après le redémarrage sans problème.
Voici la partie de l'action de démarrage qui gère la création du répertoire socket:
# create socket directory
if [ -d /var/run/postgresql ]; then
chmod 2775 /var/run/postgresql
else
install -d -m 2775 -o postgres -g postgres /var/run/postgresql
[ -x /sbin/restorecon ] && restorecon -R /var/run/postgresql || true
fi
Je publierai une mise à jour si la cause première de cela devient claire pour moi, car cela ne peut clairement pas être le comportement attendu.
ADDENDA:
Je pense que la raison pour laquelle j'ai rencontré ce problème est parce que je n'avais pas de bonne valeur configurée pour nix_socket_directories . Sur 9.2, cette option de configuration était unix_socket_directory, que j'ai supprimée plutôt que de passer à unix_socket_directories. Depuis que j'ai défini une valeur pour unix_socket_directories, je n'ai eu aucun problème avec le démarrage du serveur.
J'ai eu plusieurs problèmes avec le fichier sockets, dans votre cas /var/run/postgresql/.s.PGSQL.5432
assurez-vous que le répertoire/var/run/postgresql existe et est accessible en écriture avant de démarrer postgresql pour plus d'informations, voir ceci discussion .
également, lors de la connexion, utilisez l'indicateur -h:
psql -h localhost
et voir si cela le résout.
De mon côté, le script de démarrage est incorrect. Les fichiers de configuration sont installés dans / etc/postgresql/9.3/main mais le script / usr/share/postgresql-common/init.d-functions recherche dans
for c in /etc/postgresql/"$2"/*; do
Remplacez cette ligne par
for c in /etc/postgresql/"$2"/main; do
Cela semble résoudre le problème sur Ubuntu:
Modifiez postgresql.conf:
unix_socket_directories='/var/run/postgresql
Maintenant, faites service postgresql start
Je suis nouveau dans PSQL mais j'ai résolu le problème en éditant start.conf J'avais commenté le paramètre "auto" pour gérer le serveur manuellement, mais il a besoin d'une valeur: auto, manuel ou désactivé.
EGD.