PG8.3 unter UBUNTU8.10- vermasselt

Hallo Gemeinschaft
Bin totaler Neuanfänger in Sachen Ubuntu 8.10 und Postgres.
Hab vor einer Woche Ubuntu 8.10 mit Postgres 8.3 installiert (englische Version) und mich 3 Tage mit Postgres herumgeschlagen, und habe unter anderem auch dieses Forum besucht, zwecks Inspiration. Aber nicht ohne Preis.

Hier ein kurzes Briefing:

bei der Installation von 8.3 musste ich feststellen, dass nicht in /usr/local/post… (laut doc),sondern in /usr/lib/post…
installiert wurde, dazu noch an mehreren Stellen (var/lib, /usr/share, etc/…) was einen Anfänger wie mich eigentlich nur verwirren kann. Kurzerhand entfernte ich heute alles postgres unter /etc, nur um feststellen zu müssen, dass der Server beim reboot nicht automatisch startete (normal hab ich die Postgres Dämone immer im Systemmonitor als schlafend auffinden können). Ich schlussfolgere, dass der Computer in irgendeiner config - Datei beim Booten den Auftrag erhält, in /etc/post… zu gehen um dort eine Datei aufsuchen, die den Postgres Dienst startet. Dies wurde offenbar bei der Installation von Postgres 8.3 vorgenommen - ohne Mitteilung an den Benutzer, und die Log-Datei pgadmin.log hatte ich auch nur durch Zufall in meinem home-dir entdeckt.

Meine konkreten Fragen :
in welcher Datei muss ich den Verweis auf /etc/postg… zu /usr/lib/postgresql/8.3/bin/richtige binäre_postgres_Datei/oder anderem ändern?(damit postgres automatisch im Hintergrund laufen kann, wenn der Computer eingeschaltet wird)
(ps: die Variable PGDATA hab ich hingekriegt und in .bashrc exportiert, und ich kann den Server auch manuell starten (mit ./postgres), wenn ich in das richtige Verzeichnis gehe - ja, ich weiss, der PATH zu den postgres binären fehlt noch… )

Falls diese Frage unbeantwortbar ist:

woher krieg ich die Daten für eine “Wiederbelebung” der /etc/postgres -Dateien? Sie liegen wahrscheinlich an Dutzend Stellen herum, ich hab natürlich keinen blassen Schimmer wo und was ich kopieren soll.

Falls auch diese Frage auch unbeantwortbar ist:
wie mache ich am einfachsten eine komplette Deinstallation von Postgres? synaptec? add and remove? vielleicht hat jemand Erfahrungen diesbezüglich, ich hab schon so viel Zeit verschwendet, daher wäre ein Tip willkommen. Deinstallationen sind ja bekanntlich schwerer als das Gegenteil, aber hoffentlich gilt das nur den Produkten von Mr. Gates.

Und noch was: ich hab die Dokumentation durchgelesen. Kann aber trotzdem nicht begreifen, warum die Postgres Dateien derart verstreut herumliegen müssen(/usr/lib…, /usr/bin…, /usr/share…, /var/lib…, /etc…, usw, und ganz abgesehen von den Doc-Datein )- nur an einer Stelle gibts keine Postgres -Dateien,nämlich in /usr/local - genau da, wo sie laut Dokumentation stehen sollten! Das nervt etwas. Haben alle diese Stellen wirklich einen Sinn?
Ich vertraue auf ein paar Tips von euch -sollte ich es bis zum Experten schaffen (ich zweifle zwar…), bin ich natürlich dran um Fragen zu beantworten, was ich gerne tun werde, und dann womöglichst ohne evt. Anfänger unter den Fragestellern zu beleidigen. .

PS. ich weiss genau, dass ich es selber vermasselt habe, Kommentare diesbezüglich sind überflüssig.

Grüsse :slight_smile:

Vorneweg: die Dokumentation trifft nur (ich wiederhole: NUR) auf den Fall zu, wenn du PostgreSQL von Hand compilierst, installierst und dabei die Vorgaben nicht veränderst. Dann wird alles nach /usr/local installiert.

So, zur Frage, warum die Dateien scheinbar überall auf der Festplatte verteilt herumliegen: es gibt unter Unix (dazu gehört auch Linux) gewisse Konventionen, wo sich welche Dateien befinden. Konfigurationsdateien gehören nach /etc (warum haben da wohl so viele Programme jeweils ein Unterverzeichnis?), Programme gehören nach /usr/bin, /usr/sbin, /bin oder /sbin. Gemeinsam genutzte Dateien gehören nach /usr/share, Bibliotheken nach /usr/lib oder /lib und so weiter. Was genau wo hingehört wird in der Linux Standard Base oder kurz LSB geregelt. Natürlich kann man weiterhin alles nach /usr/local installieren - übersichtlicher wird das dadurch jedoch nicht. Die Distribution - Ubuntu in deinem Fall - kümmert sich da auch wirklich rührend drum, dass das alles eingehalten wird und du tust gut daran, das nicht zu verändern.

Kommen wir zur Reparatur deiner zerschossenen Installation. Da ist wohl nicht mehr viel zu retten und wichtige Daten sind da hoffentlich auch nicht drin. Also ist es das beste, du deinstallierst alles. Glücklicherweise geht das unter Linux restlos, ohne Schmerzen, Verrenkungen und übriggelassene DLLs irgendwo in obskuren Verzeichnissen.

Als erstes findest du heraus, welche PostgreSQL Pakete installiert sind:

dpkg --list | grep postgres

Da greifst du nun alles heraus was irgendwie nach den von dir installierten Paketen aussieht. Normalerweise ist das postgresql-xxx-server und ein paar davon abhängige Pakete. Die entfernst du nun mit:

dpkg --purge paket1 paket2 paket3

Wenn dieser Befehl nicht funktioniert weil es davon abhängige Pakete gibt, entferne diese auch mit.

Jetzt sollten alle Pakete samt Konfiguration und Daten weg sein. Danach kannst du die gleichen Pakete wieder installieren, wie du sie vorher schon mal installiert hast. Dabei wird die Datenbank schon so eingerichtet, dass sie beim Systemstart automatisch hochfährt. Du musst nichts daran verändern.

Klar soweit? Gut.

Welche Dateien nun in welchem Paket sind findest du mit:

dpkg -L paket

heraus. Wenn du nicht weißt, welche Datei zu welchem Paket gehört kann dir dpkg auch das mitteilen:

dpkg -S /pfad/zur/datei

Das sind jetzt aber schon Handgriffe, die du als Administrator eines Debian/Ubuntu Systems sowieso beherrschen solltest. Das gehört nicht hierher und dafür bist du in einem Forum zu Ubuntu oder Debian besser aufgehoben.

[quote=“ads”][/QUOTE]

Nachtrag zur sehr ausführlichen Darlegung von ads: die pgadmin.log hat nicht wirklich mit PostgreSQL zu tun. PGAdmin ist ein Client-Programm, welches PostgreSQL nutzt und dabei eine Log-Datei anlegt. Das ist in etwa so, als ob Du mit Excel via ODBC auf PostgreSQL zugreifts und dann eine *.XLS speicherst.

Ubuntu (hab ich zu Hause auch, Kubuntu) macht ansonsten alles fix und fertig, es gibt keinen Grund für Dich, an den Dateien und deren Speicherort herumzudrehen (abgesehen von der postgresql.conf und der pg_hba.conf zur Anpassung an Deine Bedürfnisse)

Ansonsten kann ich ads seine Ausführungen in allen Beziehungen nur unterstreichen.

Andreas

Erstens: Alles klar und danke für die Antworten- ich weiss jetzt was ich zu tun habe.

Vollständigerweise versuch ich jetzt, meine ursprünglichen Fragen trotz allem zu begründen:
Ich hab vor etwa 8 Tagen mit ubuntu 8.10 sowohl Postgres als Mysql installiert. Mysql kommt automatisch im “Zahnrad”-Programm vor (Services/Dienstleistungen- mit der Zahnrad-Icone). Im alten Fedora 6, wo ich auch Postgres 8… hatte, war Postgres auch im Zahnrad Programm zu sehen. In Ubuntu 8.10 ist gibts kein Postgres im “Zahnrad”, trotz geglückter Installation. Daher schliesse ich: irgendwo im Systhem muss dieses Erscheinen im Zahnrad initiert werden. Als totaler Administrator-Ausfall hab ich in den letzten zwei Tagen trotzdem versucht, das Systhem zu erforschen, und hab diverse Scripts- angefangen von /etc/init.d/postgresql bis zu /usr/share/postgresql-common/init.d-functions ausgedruckt. Man lernt eigentlich etwas davon- z.B. dass das Socket-Verzeichnis in /var/run liegt, als Programmierer find ich so etwas interessant. Ferner ist es mir ein Irritationsmoment, dass alles funktioniert, wenn ich Postgresql selber mit ./postgres starte (mit dem einen Vorbehalt: ich hab mich noch nicht ganz in die Sache vertieft).
Daher schlussfolgere ich- vielleicht fälschlich- dass /etc/postgres… vielleicht gar nicht so bedeutungsvoll für die Funktion von Postgresql ist. Hier kann man u.A. globale Variable eingeben, soweit ich es den Scripts entnehmen kann, aber sonst was?
Natürlich gehen die Installationsscripts in die Binsen, weil das Verzeichnis fehlt, aber kann man das nicht umgehen?
Ich hab mir - sicherlich etwas naiv - folgendes vorgestellt: ich mach ein script, leg es in /etc/init.d - ((ich nehme dies ist der Anfang des Systhems)), und in diesem Script würd ich gern sowohl globale Variable von Postgres als den Eintrag im “Zahnrad”, und vieles mehr, vornehmen. Vielleicht muss man etwas bescheuert sein um so was zu tun, aber für mich wärs “learning by doing”, und einfach DER Hammer um sowohl Linux und Postgres kennnenzulernen, und vielleicht hatt ich die heimliche Hoffnung hier im Forum auf ungefähr Gleichgesinnte zu treffen, aber das wird vielleicht schwierig.

ADS hat natürlich Recht: es ist ein Administrationsproblem, oder leider, es liegt vielmehr in de Grauzone zwischen Adm. und dem eigentlichen Postgres-Programmieren. Als Pechvogel schlittere ich typisch immer in solche Probleme hinein.

Schlusskommentar: ich hab das Bedürfnis, das Systhem kennenzulernen. Ubuntu 8.10 ist vielleicht das beste O/S was es je gab, einschl. Produkte eines gewissen Mr. Gates, und ich werd auf eigene Faust weiter machen. Sollte ich in Sackgassen geraten, hol ich mich selber raus,ohne das Forum zu belästigen. Sollte ich total verloren gehen, fang ich von vorne an, wie so wunderbar exakt von ads beschrieben. Dank an Euch, tschüuuuuss.

Vielleicht hilft dir folgendes weiter:

Das Handbuch zu KSysV


Überhaupt ist das eine nette Webseite für Linux-Einsteiger.

Ich empfehle aber trotzdem dei Linux-Bibel von Michael Kofler zu lesen.


Gruß
Sparrow

Wirklich?

Vollständigerweise versuch ich jetzt, meine ursprünglichen Fragen trotz allem zu begründen:
Ich hab vor etwa 8 Tagen mit ubuntu 8.10 sowohl Postgres als Mysql installiert. Mysql kommt automatisch im “Zahnrad”-Programm vor (Services/Dienstleistungen- mit der Zahnrad-Icone). Im alten Fedora 6, wo ich auch Postgres 8… hatte, war Postgres auch im Zahnrad Programm zu sehen.

‘Zahnrad’ sagt mir jetzt irknwie rein gar nix. Das sind sicherlich distributionsabhängige Dinge, um z.B. Dienste auf einer GUI darzustellen. Das hat aber exakt gar nix mit dem Dienst an sich zu tun. Mein DB-Server @work z.B. hat keine GUI.

In Ubuntu 8.10 ist gibts kein Postgres im “Zahnrad”, trotz geglückter Installation. Daher schliesse ich: irgendwo im Systhem muss dieses Erscheinen im Zahnrad initiert werden. Als totaler Administrator-Ausfall hab ich in den letzten zwei Tagen trotzdem versucht, das Systhem zu erforschen, und hab diverse Scripts- angefangen von /etc/init.d/postgresql bis zu /usr/share/postgresql-common/init.d-functions ausgedruckt. Man lernt eigentlich etwas davon- z.B. dass das Socket-Verzeichnis in /var/run liegt, als Programmierer find ich so etwas interessant. Ferner ist es mir ein Irritationsmoment, dass alles funktioniert, wenn ich Postgresql selber mit ./postgres starte

Keine Ahnung, was Du damit meinst…

(mit dem einen Vorbehalt: ich hab mich noch nicht ganz in die Sache vertieft).
Daher schlussfolgere ich- vielleicht fälschlich- dass /etc/postgres… vielleicht gar nicht so bedeutungsvoll für die Funktion von Postgresql ist. Hier kann man u.A. globale Variable eingeben, soweit ich es den Scripts entnehmen kann, aber sonst was?

Relevant sind dort 2 Dateien: postgresql.conf und pg_hba.conf. Erstere dient der Konfiguration des Servers (Speicherparamater, Logging-Verhalten und einiges mehr), die pg_hba.conf dient der Konfiguration der unterschiedlichen Anmeldeverfahren (lokal, remote, welche Datenbank, welcher User, welche Art der Authentifizierung).

Ändere dort nichts, ohne zu wissen, was Du tust.

Natürlich gehen die Installationsscripts in die Binsen, weil das Verzeichnis fehlt, aber kann man das nicht umgehen?

Natürlich tut es weh, wenn ich mir in den Fuß ballere, aber kann man das nicht umgehen?

Ich hab mir - sicherlich etwas naiv - folgendes vorgestellt: ich mach ein script, leg es in /etc/init.d - ((ich nehme dies ist der Anfang des Systhems)), und in diesem Script würd ich gern sowohl globale Variable von Postgres als den Eintrag im “Zahnrad”, und vieles mehr, vornehmen. Vielleicht muss man etwas bescheuert sein um so was zu tun, aber für mich wärs “learning by doing”, und einfach DER Hammer um sowohl Linux und Postgres kennnenzulernen, und vielleicht hatt ich die heimliche Hoffnung hier im Forum auf ungefähr Gleichgesinnte zu treffen, aber das wird vielleicht schwierig.

Wie schon gesagt, ich kenne Dein Zahnrad nicht. Und ich brauche es auch nicht. Auch ohne dem laufen hier 2 PostgreSQL-Server: einmal 8.3 und einmal 8.4devel. So what?

ADS hat natürlich Recht: es ist ein Administrationsproblem, oder leider, es liegt vielmehr in de Grauzone zwischen Adm. und dem eigentlichen Postgres-Programmieren. Als Pechvogel schlittere ich typisch immer in solche Probleme hinein.

Ads hat immer Recht. Aber PostgreSQL-Programmieren hat an sich nix damit zu tun, es in ein Zahnrad zu bekommen.

Schlusskommentar: ich hab das Bedürfnis, das Systhem kennenzulernen. Ubuntu 8.10 ist vielleicht das beste O/S was es je gab, einschl. Produkte eines gewissen Mr. Gates, und ich werd auf eigene Faust weiter machen. Sollte ich in Sackgassen geraten, hol ich mich selber raus,ohne das Forum zu belästigen. Sollte ich total verloren gehen, fang ich von vorne an, wie so wunderbar exakt von ads beschrieben. Dank an Euch, tschüuuuuss.

Ich habe das Gefühl, Du hast einiges falsch verstanden…

Andreas