2009-02-25 11 views
6

Ich bin neugierig, warum Sie initdb nicht wie im Handbuch postgresql vor dem Ausführen von psql das erste Mal verwenden müssen? (Ich habe die Version 8.3 auf 8.04.1 installiert)Warum läuft PostgreSQL nach der Installation auf Ubuntu, ohne initdb zu benutzen?

Red Hat erfordert -c postgresql start, aber nicht init.db.

Auf FreeBSD müssen Sie jedoch initdb ausführen.

Warum ist das Setup nicht konsistent? Kommt es zu einem Unterschied zwischen apt-get install, rpm -i und pkg_add?

Antwort

1

Höchstwahrscheinlich ist es einfach, dass die Startskripte, mit denen diese Systeme arbeiten, initdb automatisch ausführen, wenn sie zum ersten Mal ausgeführt werden.

+0

Das ist genau richtig. Sehen Sie sich /etc/init.d/postgresql an –

1

Fast sicher, ja. Verschiedene Varianten von Linux und Unix haben unterschiedliche Ansätze zur Verpackungssoftware; FreeBSD zum Beispiel basiert auf dem Ports-System (in dem Sie von Grund auf kompilieren, obwohl es für viele davon Binärpakete gibt), während es bei Mainstream-Linux-Distributionen oft der Fall ist, vorbereitetes Binärpaket für etwas populäres.

Verschiedene Leute, die die Verpackungssysteme verwalten ("Packager" und andere, manchmal weniger als freundliche Spitznamen), behalten unterschiedliche Herangehensweisen an das Problem bei und spiegeln oft das Ethos des übergeordneten Projekts wider. Alternativ kann es einfach sein, dass ein Packer entscheidet, dass es vernünftig ist, Dinge mit einer Standardkonfiguration einzurichten und einige allgemeine Initialisierungsschritte in Ihrem Namen durchzuführen, während ein eher praktischer Packager es dem Endbenutzer überlassen wird, insbesondere wenn die Software dies tut ist in irgendeiner Weise kompliziert oder erfordert vor dem Einsatz eine Überlegung, z Systemdienste.

0

Wenn nicht falsch, Ubuntu PostgreSQL-Pakete sind von Debian abgeleitet. Vielleicht hat Debians Verpackung aus irgendeinem Grund diese Position. Wenn das der Fall ist, werden Debian und all seine Derivate wie Ubuntu dasselbe Verhalten zeigen. Dies geschieht nur, wenn Sie versuchen, die entsprechende Software aus dem Repository zu installieren. Wenn Sie die Quelle von der PostgreSQL-Website erhalten und kompilieren, erhalten Sie sie wie im Handbuch angegeben. Verschiedene Distributionen folgen bestimmten Verpackungsrichtlinien und nehmen bestimmte Haltungen hinsichtlich der Verpackung bestimmter Software ein. Wenn Sie genaue Details wissen möchten, können Sie den Paketbetreuer des postgresql-Pakets ansprechen, um die Gründe zu erfahren.

1

Es handelt sich nicht um die Start-Skripts, sondern um die Nachinstallations-Hooks, die in dem von Ihnen installierten Paket angegeben sind und zusätzliche Schritte für Sie ausführen. Unabhängig davon, ob Sie das .deb- oder .rpm-Format verwenden, können Packager Aufgaben festlegen, nachdem alle Dateien installiert wurden.

Einige Distributionen halten Ihre Hand, wenn Sie Software installieren, einige erwarten, dass Sie es vorziehen würden, Dinge auf eigene Faust zu tun .. es gibt wirklich keine goldene Antwort, warum jeder Packager die Dinge tut, wie sie es tun.

Ubuntu strebt nach einem Klick müheloser Installationen, ohne dass der Benutzer jemals eine Shell sieht. Andere, speziell für Systemintegratoren entwickelte Distributionen halten Ihnen nicht die Hand.

Willkommen zu den 31 (und mehr) Aromen von Betriebssystemen rund um den Linux-Kernel, oder die Bemühungen auf den BSD-Kernel konzentriert.

Jeder hat eine Idee, wie es gemacht werden sollte. Gute Distributionen setzen voraus, dass Sie wissen, was Sie tun .. außer natürlich, sie wollen den Desktop-Markt von Microsoft kneifen, in diesem Fall werden sie gute Desktop-Distributionen, die Ihre Hand halten.

Es ist meistens eine Frage der Wahl, was das ganze Phänomen so cool macht.

1

Debian (und per Erweiterung Ubuntu) verarbeitet PostgreSQL ziemlich clever. Werfen Sie einen Blick auf das Paket postgresql-common für Details. Kurz gesagt, es unterstützt mehrere (Haupt) Versionen von Postgres installiert und mehrere Cluster von jeder Version von Postgres läuft. Um zu sehen, welche Cluster Sie haben, versuchen Sie pg_lsclusters. Der Paketbetreuer geht davon aus, dass bei der erstmaligen Installation eines pg-Server-Pakets initdb ein Cluster dafür erstellt werden soll. Wenn Sie beispielsweise postgresql-9.1 installieren, erhalten Sie standardmäßig den 9.1/Hauptcluster initdb'd für Ihre Verwendung.

Die Dinge sind nicht einheitlich über Linux-Distributionen, weil der ganze Sinn von Distributionen ist, bessere Lösungen für Probleme genau so anzubieten. Debian bietet hier eine hervorragende Lösung. Ich schlage jedoch vor, dass Sie die postgresql PPA verwenden und eine neuere Version von postgresql greifen, vor allem, da Sie nur Dinge installieren.

Ich habe gerade festgestellt, dass ich eine alte Frage beantworte. Boo.