Wo sind die Templates?

Fragen und Probleme zur Installation von PostgreSQL (hauptsächlich Binary Packete).

Wo sind die Templates?

Beitragvon Rolf Tschan » Mi 12. Okt 2011, 17:22

Das Thema ist nicht neu; ich habe es bereits früher einmal gepostet, doch ich erhalte dort keine Hilfe (mehr).

Nach einer vollständigen Deinstallation (apt-get purge); nach Löschen alter Datenbanken (früher fehlerhaft installierte Cluster-Verzeichnisse); nach Löschen von .profile für "postgres"; bei einem meines Erachtens also völlig jungfäulichen Debian System, installiert mir apt-get postgresql keine Templates.

Nach dem "apt-get install" wechsle ich zu "su - postgres" und versuche, die Clusters zu erzeugen: INITDB. Dies wird reklamiert, obwohl ich nach dem (vermeintlich erfolgreichen) install PGDATA gesetzt habe (echo $PGDATA zeigt mir "/usr/local/psql/data"). Also, zweiter Versuch: INITDB -D /usr/local/psql/data". Diesmal sieht wieder alles ok aus; keine Fehlermeldungen.

Und nun? Der Server läuft zwar, sieht eigentlich alles i.O. aus, doch PhpPgAdmin zeigt mir ausschliesslich ein LEERES Schema "public" (im tablespace "pg_default").

"Volltextsuche" ist da, ansonsten aber nichts.

Wohin sind die Templates "verschwunden"? Was läuft hier schief? Was mache ich falsch?

Kann mir wirklich niemand dabei weiterhelfen? :(

So sieht übrigens mein .profile für postgres aus. Ich habe es direkt nach "apt-get install" aktiviert:
Code: Alles auswählen
# /home/postgres/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.

# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
    PATH="$HOME/bin:$PATH"
fi

# rts 2011-10-11 >
PGDATA="/usr/local/psql/data"

PATH="$PATH:/usr/lib/postgresql/8.4/bin"

function mypath(){
    old=$IFS
    IFS=:
    printf "%s\n" $PATH
    IFS=$old
}
# rts 2011-10-11 <
Rolf Tschan
Neuer Benutzer
 
Beiträge: 25
Registriert: Do 23. Jun 2011, 09:00
Wohnort: Gunten, Bern, Switzerland, Switzerland

Beitragvon akretschmer » Mi 12. Okt 2011, 19:01

Rolf Tschan hat geschrieben:Das Thema ist nicht neu; ich habe es bereits früher einmal gepostet, doch ich erhalte dort keine Hilfe (mehr).



Kann es sein, daß hier ein Irrtum Deinerseits vorliegt?

Templates sind Datenbanken, aus denen andere Datenbanken generiert werden. Ich kenne PGAdmin nicht, aber versuche mal, als User postgres, ein "psql -l" auszuführen. Vermutlich siehst Du dort template0 und template1, außerdem eine postgres.


Andreas
--
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)

https://www.xing.com/profile/Andreas_Kretschmer7
Hosting-Provider mit PostgreSQL-Support gesucht? Mich fragen!
akretschmer
Erfahrener Benutzer
 
Beiträge: 5938
Registriert: So 29. Okt 2006, 14:35
Wohnort: Kaufbach, Sachsen, Germany, Germany

Beitragvon Gisman » Do 13. Okt 2011, 08:03

Was phpPGAdmin macht weiß ich nicht, aber PGAdmin blendet die in der Oberfläche aus und bietet sie nur beim Erstellen einer neuen DB an. Unter psl -l sollten sie aber erscheinen.

Gruß Uwe
Have a lot of fun!
Gisman
Erfahrener Benutzer
 
Beiträge: 863
Registriert: Fr 20. Jan 2006, 16:30
Wohnort: Pfalz

Beitragvon Rolf Tschan » Do 13. Okt 2011, 12:12

Danke Euch beiden!

Es sieht tatsächlich so aus, als hätte ich ein Phanton gejagt: "psql -l" zeigt mir die Templates an, es ist bloss PhpPgAdmin, der das nicht tut.

Was mich noch immer etwas verwirrt, ist folgendes:

1. Die Installation (apt-get) startet automatisch den DB-Server "main".
2. Danach habe ich ja INITDB gemacht. Dieses sagt mir zum Schluss, ich könne den Server jetzt (zB mit pg-ctl) starten; müsse dabei aber (mit -D) das Verzeichnis angeben.

Meine Fragen dazu sind:
a) Was ist das: ZWEI DB-Servers starten?
b) Mit welchem Verzeichnis läuft denn der erste (der automatisch durch apt-get gestartet worden ist)?
c) Im .profile von postgres habe ich PGDATA gesetzt. echo bestätigt mir das auch. Trotzdem sagt mir pg-ctl, ich müsse das Verzeichnis angeben (oder PGDATA setzen).
d) Wenn ich meine Kiste (Debian) neu starte: Wo ist festgelegt, welcher DB-Server mit welchem Verzeichnis gestartet werden soll?

Ich weiss, dass das "dumme Fragen" sind. Aber ich verspreche: Wenn ich das mal begriffen habe (bin Linux-Neuling), werde ich dasselbe nicht nochmal fragen :-)
Rolf Tschan
Neuer Benutzer
 
Beiträge: 25
Registriert: Do 23. Jun 2011, 09:00
Wohnort: Gunten, Bern, Switzerland, Switzerland

Beitragvon Gisman » Do 13. Okt 2011, 14:18

Rolf Tschan hat geschrieben:Meine Fragen dazu sind:
a) Was ist das: ZWEI DB-Servers starten?
b) Mit welchem Verzeichnis läuft denn der erste (der automatisch durch apt-get gestartet worden ist)?
c) Im .profile von postgres habe ich PGDATA gesetzt. echo bestätigt mir das auch. Trotzdem sagt mir pg-ctl, ich müsse das Verzeichnis angeben (oder PGDATA setzen).
d) Wenn ich meine Kiste (Debian) neu starte: Wo ist festgelegt, welcher DB-Server mit welchem Verzeichnis gestartet werden soll?

Ich weiss, dass das "dumme Fragen" sind. Aber ich verspreche: Wenn ich das mal begriffen habe (bin Linux-Neuling), werde ich dasselbe nicht nochmal fragen :-)


a) Naja, dann laufen da halt zwei Serverprozesse, dazu müssen sie unterschiedliche Ports und Datenverzeichnisse benutzen.
b) Kenn mich in debian nicht aus, aber vermutlich sollte er das Verzeichnis benutzen, das irgendwo in der Konfiguration oder bei der Installation per default festgelegt wurde. Könnte auch in /var/ irgendwo sein.
c) was sagt denn echo $PGDATA als user postgres ausgeführt? Aber du würdest ein Problem mit dem 2. Server bekommen wenn er das Verzeichnis vom ersten benutzen soll.
d) Du wirst in /etc/init.d ein Startskript postgresql finden. Dort werden die Umgebungsvariablen gelesen und die Dienste gestartet. Wenn du einen 2. Server starten möchtest, kannst du das kopieren und dort z.B. auf eine andere Variable für das Verzeichnis angeben, z.B. $PGDATA2. Diese kannst du analog zur ersten in .profile anlegen. Der Rest der Konfiguration findet in der Datei postgresql.conf im Datenverzeichnis statt.

Soweit erstmal.

Gruß Uwe
Have a lot of fun!
Gisman
Erfahrener Benutzer
 
Beiträge: 863
Registriert: Fr 20. Jan 2006, 16:30
Wohnort: Pfalz

Beitragvon Rolf Tschan » Do 13. Okt 2011, 16:12

a) Aha. Na gut: Zwei Serverprozesse will ich nicht. Wozu auch?

b) Wenn ich wüsste, wie sich das herausfinden (verifizieren) lässt, dann wüsste ich auch, welche "postgresql.conf" zum Tragen kommt.
In /var/lib/postgresql/8.4/main/... ist durch "apt-get install" eine DB erstellt worden; doch ist es DIESES Verzeichnis, mit welchem der erste (von "install" gestartete) Server läuft? Gibt es einen Trick, den Serverprozess zur Laufzeit danach abzufragen?
Und wenn dem so ist: Weshalb muss man nach der Installation mit INITDB eine ZWEITE DB anlegen? Wenn ich keinen 2ten Serverprozess laufen lassen will: Wozu dient dann diese zweite?

c)
Code: Alles auswählen
root@nas:~# su - postgres
postgres@nas:~$ echo $PGDATA
/usr/local/psql/data

(s. mein .profile für postgres. Im ersten Beitrag kopiert)

d) Das Startskript in init.d verweist auf "/etc/postgresql/<version>/<cluster>/environment". Diese Datei ist jedoch (bis auf ein paar Kommentare) leer:
Code: Alles auswählen
# environment variables for postmaster process
# This file has the same syntax as postgresql.conf:
#  VARIABLE = simple_value
#  VARIABLE2 = 'any value!'
# I. e. you need to enclose any value which does not only consist of letters,
# numbers, and '-', '_', '.' in single quotes. Shell commands are not
# evaluated.
Rolf Tschan
Neuer Benutzer
 
Beiträge: 25
Registriert: Do 23. Jun 2011, 09:00
Wohnort: Gunten, Bern, Switzerland, Switzerland

Beitragvon akretschmer » Do 13. Okt 2011, 16:24

Rolf Tschan hat geschrieben:a) Aha. Na gut: Zwei Serverprozesse will ich nicht. Wozu auch?

b) Wenn ich wüsste, wie sich das herausfinden (verifizieren) lässt, dann wüsste ich auch, welche "postgresql.conf" zum Tragen kommt.


psql ist Dein Freund ;-)

Code: Alles auswählen
test=*# show config_file;
              config_file
---------------------------------------
 /usr/local/pgsql/data/postgresql.conf
(1 row)

test=*# show data_directory;
    data_directory
-----------------------
 /usr/local/pgsql/data
(1 row)


Und mit show all; bekommst richtig viel zu lesen ...


Andreas
--
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)

https://www.xing.com/profile/Andreas_Kretschmer7
Hosting-Provider mit PostgreSQL-Support gesucht? Mich fragen!
akretschmer
Erfahrener Benutzer
 
Beiträge: 5938
Registriert: So 29. Okt 2006, 14:35
Wohnort: Kaufbach, Sachsen, Germany, Germany

Beitragvon Rolf Tschan » Do 13. Okt 2011, 16:47

Das sieht bei mir jetzt so aus:
Code: Alles auswählen
show config_file;
               config_file
------------------------------------------
 /etc/postgresql/8.4/main/postgresql.conf
(1 Zeile)

postgres=# show data_directory;
        data_directory
------------------------------
 /var/lib/postgresql/8.4/main
(1 Zeile)


Soweit also alles klar. :)

Doch: Wozu jetzt die zweite DB anlegen (INITDB), wenn ich nicht zwei Serverprozesse laufen lassen (und dadurch 2 Ports besetzen) will?
Ich habe, ganz offensichtlich, noch nicht ganz alles verstanden... :confused:
Rolf Tschan
Neuer Benutzer
 
Beiträge: 25
Registriert: Do 23. Jun 2011, 09:00
Wohnort: Gunten, Bern, Switzerland, Switzerland

Beitragvon akretschmer » Do 13. Okt 2011, 16:48

Rolf Tschan hat geschrieben:Das sieht bei mir jetzt so aus:
Code: Alles auswählen
show config_file;
               config_file
------------------------------------------
 /etc/postgresql/8.4/main/postgresql.conf
(1 Zeile)

postgres=# show data_directory;
        data_directory
------------------------------
 /var/lib/postgresql/8.4/main
(1 Zeile)


Soweit also alles klar. :)

Doch: Wozu jetzt die zweite DB anlegen (INITDB), wenn ich nicht zwei Serverprozesse laufen lassen (und dadurch 2 Ports besetzen) will?
Ich habe, ganz offensichtlich, noch nicht ganz alles verstanden... :confused:


Debian erzeugt Dir IMHO alles schon, INITDB ist unnötig.


Andreas
--
ads Das hatte dir akretschmer gestern schon gesagt und siehe da sobald du das machst, funktioniert es ;-)

https://www.xing.com/profile/Andreas_Kretschmer7
Hosting-Provider mit PostgreSQL-Support gesucht? Mich fragen!
akretschmer
Erfahrener Benutzer
 
Beiträge: 5938
Registriert: So 29. Okt 2006, 14:35
Wohnort: Kaufbach, Sachsen, Germany, Germany

Beitragvon Rolf Tschan » Do 13. Okt 2011, 17:21

Aha :)

Dann ist also die Installationsanleitung (zumindest für Debian-Installationen mittels "apt-get install") nicht so ganz richtig. Das alles hat mich jetzt ziemlich verwirrt. :rolleyes:

Immerhin: Für den Moment scheint alles klar zu sein. Konsequenterweise habe ich jetzt mein .profile für postgres (setzen von PGDATA) richtig gestellt und kann demnächst mal mit meinen ersten ECHTEN Datenbanken loslassen.

Macht Euch gefasst, Leute: ICH KOMME WIEDER :rolleyes: :rolleyes: :rolleyes:
Rolf Tschan
Neuer Benutzer
 
Beiträge: 25
Registriert: Do 23. Jun 2011, 09:00
Wohnort: Gunten, Bern, Switzerland, Switzerland

Nächste

Zurück zu Installation von PostgreSQL

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste