Uaktualniłem niedawno z Maverick do Natty i wszystko poszło dobrze, z wyjątkiem podczas aktualizacji dist coś poszło nie tak z PostgreSQL. Od tego czasu próbowałem ponownie zainstalować, usunąć, a nawet wyczyścić go za pomocą polecenia „sudo apt-get purge postgresql”, ale nadal pojawia się ten sam błąd, bez względu na to, co robię. Patrz poniżej. Przed aktualizacją działało dobrze. Każda pomoc byłaby bardzo mile widziana. Dzięki!
Setting up postgresql-common (114) ...
* Starting PostgreSQL 8.4 database server * The PostgreSQL server failed to start. Please check the log output:
2011-05-19 11:49:41 EDT LOG: could not bind IPv4 socket: Address already in use
2011-05-19 11:49:41 EDT HINT: Is another postmaster already running on port 5432? If not, wait a few seconds and retry.
2011-05-19 11:49:41 EDT WARNING: could not create listen socket for "127.0.0.1"
2011-05-19 11:49:41 EDT FATAL: could not create shared memory segment: Invalid argument
2011-05-19 11:49:41 EDT DETAIL: Failed system call was shmget(key=5432001, size=37879808, 03600).
2011-05-19 11:49:41 EDT HINT: This error usually means that PostgreSQL's request for a shared memory segment exceeded your kernel's SHMMAX parameter. You can either reduce the request size or reconfigure the kernel with larger SHMMAX. To reduce the request size (currently 37879808 bytes), reduce PostgreSQL's shared_buffers parameter (currently 4096) and/or its max_connections parameter (currently 103).
If the request size is already small, it's possible that it is less than your kernel's SHMMIN parameter, in which case raising the request size or reconfiguring SHMMIN is called for.
The PostgreSQL documentation contains more information about shared memory configuration.
[fail]
invoke-rc.d: initscript postgresql, action "start" failed.
dpkg: error processing postgresql-common (--configure):
subprocess installed post-installation script returned error exit status 1
11.04
upgrade
postgresql
przewodowy
źródło
źródło
/etc/init.d/postgresql
i dodaj aset -x
do wiersza po#!/bin/bash
i zrób asudo /etc/init.d/postgresql restart
i opublikuj wynikOdpowiedzi:
Musisz zwiększyć maksymalny rozmiar fragmentu pamięci współużytkowanej. Jądro Linux pozwala na jednoczesne przydzielenie (znane jako parametr SHMMAX)
Musisz edytować
/etc/sysctl.conf
i dodać następujący wiersz:(gdzie
41943040
jest rozmiar pamięci w bajtach, tj. 40 megabajtów. W systemie produkcyjnym prawdopodobnie chcesz ustawić tę wartość znacznie wyżej - dokumentacja Postgres zaleca, aby zacząć od 1/4 dostępnej pamięci)Następnie uruchomić
i ponownie uruchom postgres.
Alternatywnie możesz edytować
/etc/postgresql/<version>/main/postgresql.conf
i zmniejszać wartośćshared_buffers
parametru.To jest błąd, więcej informacji tutaj
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/264336
(istnieje również
/etc/sysctl.d/30-postgresql-shm.conf
plik, który powinien być używany do tego celu, ale nie wydaje się, aby był dołączony do głównej konfiguracji, więc edycja go nie ma wpływu)źródło
Najprawdopodobniej stary Postgres nadal działa.
Dobry pomysł, jak wskazał wolnomyśliciel, aby bardzo dokładnie sprawdzić, co działa na tym porcie.
Gdy wiesz, że to Postrgres, prawdopodobnie zechcesz go zabić:
Następnie możesz uruchomić nową wersję:
Zastanawiam się, dlaczego menedżer pakietów nie był w stanie zatrzymać starszej wersji.
źródło