• Diese Seite verwendet Cookies. Indem du diese Website weiterhin nutzt, erklärst du dich mit der Verwendung von Cookies einverstanden. Erfahre mehr

PostgreSQL unter WSL

Idefixx

Well-Known Member
Themenstarter #1
Ich mach es mal hier hin, weil es auch um eine Datenbank geht, und ich nicht gleich einen neuen Thread aufmachen will. Wenn voll daneben, doch ein neuer.

Habe heute versucht PostgreSQL unter WSL zu installieren; hatte mich da auch mal unter SuSE eingearbeitet, aber nicht beruflich. Ich habe also unter Yast2 nur das angekreuzt was ich für das Arbeiten auf der Kommandozeile benötigen könnte, aber die ganzen Abhängigkeiten . . .
Yast lud wie wild ein rpm-Packet nach dem anderen runter, ein Haufen PHP, hatte ich gar nicht angekreuzt, dann GTK2(?), usw. Anschließend wollte Yast den ganzen Kram installieren, Dauer fast zwei Stunden, und da hatte ich genug, und brach ab.

Jetzt meine Frage an den @Commander, hast Du schon mal versucht PostgreSQL unter WSL zu installieren? Und wenn ja, wie lief das da ab?
 

CommanderZed

OpenBSD User
Mitarbeiter
#2
<mod on>Mach doch am besten neuen neuen Thread auf, das ist wirklich sehr weit weg von "MariaDB startet nicht mehr unter FreeBSD" ;) </mod of)
 

Idefixx

Well-Known Member
Themenstarter #3
@Commander - wie vermutet, ist deplaciert, aber ein extra Thread lohnt sich nicht, wohl zu speziell, oder so. Von mir aus kann man den Beitrag löschen. ;)
 

medV2

Well-Known Member
#5
Nutze WSL zwar sehr wenig, aber haben einige SuSE Kisten: Postgres ist ein Metapaket das ziemlich viel nachzieht. ich denke du willst eher postgresql-server, bzw. postgresql12-server für die 12er Version z.b. (ka was auf Leap unter WSL an Versionen verfügbar ist).

Ich verwende kein Yast sonder zypper (und kann das nur jedem empfehlen, ist super Tool, gefällt mir mehr als dnf oder apt). Aber ich habe in Erinnerung, das Yast auch "recommended" installiert, zypper macht das nicht.
 

Idefixx

Well-Known Member
Themenstarter #6
Nutze WSL zwar sehr wenig, aber haben einige SuSE Kisten: Postgres ist ein Metapaket das ziemlich viel nachzieht. ich denke du willst eher postgresql-server, bzw. postgresql12-server für die 12er Version z.b. (ka was auf Leap unter WSL an Versionen verfügbar ist).

Ich verwende kein Yast sonder zypper (und kann das nur jedem empfehlen, ist super Tool, gefällt mir mehr als dnf oder apt). Aber ich habe in Erinnerung, das Yast auch "recommended" installiert, zypper macht das nicht.
Ich möchte einfach nur wieder hobbymäßig damit Datenbanken erstellen. Ich habe dafür früher psql benutzt, und genau das möchte jetzt auch wieder.

Dafür habe ich eigentlich nur angekreuzt was ich für nötig hielt. Weißt Du wie man mit Zypper vorgehen muß? Ich wüßte jetzt gar nicht, was ich da bei Zypper angeben müßte.

Vielleicht finde ich auch was im Netz, habe ich eben schon dem @Commander geantwortet.
 

medV2

Well-Known Member
#7
Ich möchte einfach nur wieder hobbymäßig damit Datenbanken erstellen. Ich habe dafür früher psql benutzt, und genau das möchte jetzt auch wieder.

Dafür habe ich eigentlich nur angekreuzt was ich für nötig hielt. Weißt Du wie man mit Zypper vorgehen muß? Ich wüßte jetzt gar nicht, was ich da bei Zypper angeben müßte.

Vielleicht finde ich auch was im Netz, habe ich eben schon dem @Commander geantwortet.
Vielleicht sollte ein Mod den Postgresql/SUSE spezifischen Teil doch in nen eigenen Thread abkapseln.

zypper funktioniert bei den basis Sachen wie alle anderen Paketmanager, also zypper search <name>, zypper remove <packet> zypper install, update, ..

Du musst den Namen des Commands nicht ausschreiben, es genügt so viel davon zu tippen, bis es eindeutlig ist (ähnlich dem CISCO OS).

Für Postgres in der default Version also: zypper in postgresql-server
 

Idefixx

Well-Known Member
Themenstarter #8
Ja, sollte ein neuer Thread werden. Ich antworte nochmal hier, weil sonst der Zusammenhang fehlt.

@medV2 Danke, bin auch im Netzt fündig geworden. Habe die Installation mit zypper durchgeführt, aber der Start von PostgreSQL klappte nicht; nicht gefunden. Dann mit Yast alles deinstalliert, alles neu installiert - diesmal hat es auch nur eine Minute gedauert. Dasselbe Ergebnis:
Code:
lysandros@PANDORA:~> sudo zypper in postgresql10 postgresql10-contrib postgresql10-server
Retrieving repository 'leap-15.1-update' metadata ................................................................[done]
Loading repository data...
Reading installed packages...
'postgresql10' is already installed.
No update candidate for 'postgresql10-10.12-lp151.2.9.1.x86_64'. The highest available version is already installed.
'postgresql10-server' is already installed.
No update candidate for 'postgresql10-server-10.12-lp151.2.9.1.x86_64'. The highest available version is already installed.
'postgresql10-contrib' is already installed.
No update candidate for 'postgresql10-contrib-10.12-lp151.2.9.1.x86_64'. The highest available version is already installed.
Resolving package dependencies...

Nothing to do.
lysandros@PANDORA:~> [sudo]systemctl start postgresql
Failed to connect to bus: No such file or directory
lysandros@PANDORA:~>
Keine Idee mehr, was ich da noch machen könnte. :(
 

Anhänge

medV2

Well-Known Member
#9
Ich denke das liegt an der WSL - wie gesagt, damit sind meine Erfahrungen auch begrenzt. Du hast halt keine vollwertige Linux VM und in der WSL wird systemd nicht als init-Prozess laufen.

Das Servicefile sieht zumindest hier auf Thumbleweed (hab zuhause leider kein LEAP zum testen) so aus:

Code:
[Unit]

Description=PostgreSQL database server
After=syslog.target
After=network.target

[Service]
Type=forking
User=postgres
EnvironmentFile=-/etc/sysconfig/postgresql
ExecStart=/usr/share/postgresql/postgresql-script start
ExecStop=/usr/share/postgresql/postgresql-script stop
ExecReload=/usr/share/postgresql/postgresql-script reload

# The server might be slow to stop, and that's fine. Don't kill it
SendSIGKILL=no

[Install]
WantedBy=multi-user.target
Ich würde also mal das direkt /usr/share/postgresql/postgresql-script start ausführen, Achtung: Zuerst User auf postgres wechseln.
 

Idefixx

Well-Known Member
Themenstarter #11
Wieso eigentlich überhaupt PostgreSQL unter WSL? Postgres hat schon seit vielen Jahren einen offiziellen, nativen Windows-Port: https://www.postgresql.org/download/windows/
Stimmt, ist halt eine Hobbybeschäftigung.

Unter WSL habe ich es einfach nicht hinbekommen, obwohl es auch Tips im Netz zu beiden gibt. Viermal komplett gelöscht und neu installiert . . . Es ist bzw. war installiert, ich konnte auch ein Paßwort für den Nutzer postgre festlegen, aber beim versuch die DB zu starten kam immer dieselbe Fehlermeldung. Irgend etwas paßt da nicht zusammen unter WSL und meinem Windows. So etwas hatte früher auch schon mal, zu Zeiten von Win 95/98.

Wenn ich PostgreSQL jetzt installiere, mache ich es samt Apache unter Windows.
 

Idefixx

Well-Known Member
Themenstarter #13
Ich vermute dass du das DB Verzeichnis nicht initialisiert hast. Das muss auch unter Linux gemacht werden. Wsl nutzt einen vollständigen Linux Kernel und setzt AFAIK Ubuntu ein.

https://www.postgresql.org/docs/12/app-initdb.html
Ja, so etwas in der Form hatte ich auch gelesen, aber ich glaube nicht das es daran liegt. Ich habe immer mit sudo versucht die DB zu starten, wäre sie auffindbar, hätte sie zumindest starten müssen; siehe oben. Mal sehen . . .

Gestern habe ich den Apache 2.4 unter Windows installiert, ging problemlos. Anschließend zwei alte Webseiten an die heutigen Monitore angepaßt - vielleicht fange ich damit wieder an.

Er läuft: :D
 

Anhänge

Idefixx

Well-Known Member
Themenstarter #14
Ich mag so halb- bis unfertige Sachen nicht – nicht wirklich.

Daher hier zum Abschluß von PostgreSQL sowohl direkt unter Windows, wie unter WSL.

Unter Windows gab es das Problem, daß PSQL standardmäßig unter „Program Files“ installiert wird. Dieses gibt es aber unter dem deutschen Win nicht, dort heißt es „Programme“, und wird intern umgeleitet auf „Program Files“. Der Installer von PSQL konnte damit aber nicht anfangen, und so landete PSQL irgendwo im Systemnirwana. Es wurde jedenfalls nicht gefunden.

Das fiel mir nach zwei Intastallationsversuchen auf, und nach Anfrage an kompetenter Stelle, konnte ich es dann unter: „C:\Progress“ installieren.

Nun ja, es war da, aber weder nützte es ein Paßwort für den Nutzer „postgres“ festzulegen, noch konnte ich einen neunen Nutzer anlegen, oder eine neue Datenbank. Totale Konfusion! Hab den Kram dann wieder gelöscht.

Letzter Versuch war dann noch einmal unter WSL. Es wurde nach Meldung von Yast2 korrekt installiert. Ich habe weiß Gott alle Anleitungen und Hinweise durchgehechelt die ich im Netz finden konnte – kein Erfolg. Damit ist die Sache für mich abgeschlossen.

Mein Fazit: Wer unter Windows oder WSL PostgreSQL nutzen will braucht viel Durchhaltewillen. Viel Glück! – Der Herr ist mit ihm! :rolleyes:
 

Columbo0815

Kaffeemann
Mitarbeiter
#15
Unter Windows gab es das Problem, daß PSQL standardmäßig unter „Program Files“ installiert wird. Dieses gibt es aber unter dem deutschen Win nicht, dort heißt es „Programme“, und wird intern umgeleitet auf „Program Files“. Der Installer von PSQL konnte damit aber nicht anfangen, und so landete PSQL irgendwo im Systemnirwana. Es wurde jedenfalls nicht gefunden.
Weil ich mir das nicht vorstellen konnte, habe ich PostgreSQL unter Windows installiert. Es ist korrekt, dass als Standardpfad "Program Files" verwendet wird. Dieser wird korrekt angelegt. Während der Installationsroutine werde ich nach einem Passwort für den Benutzer postgres gefragt. Sobald die Installation beendet ist, starte ich die SQL Shell, und kann mich in die Datenbank einloggen. Funktioniert ohne Bastelei prima.

Ich habe hier ein 64bit Windows 10, auf dem ich die 64bit-Version von PostgreSQL 12 installiert habe. Eine totale Konfusion kann ich hier nicht erkennen. Es funktioniert auf Anhieb.

HTH
 

Idefixx

Well-Known Member
Themenstarter #16
Weil ich mir das nicht vorstellen konnte, habe ich PostgreSQL unter Windows installiert. Es ist korrekt, dass als Standardpfad "Program Files" verwendet wird. Dieser wird korrekt angelegt. Während der Installationsroutine werde ich nach einem Passwort für den Benutzer postgres gefragt. Sobald die Installation beendet ist, starte ich die SQL Shell, und kann mich in die Datenbank einloggen. Funktioniert ohne Bastelei prima.

Ich habe hier ein 64bit Windows 10, auf dem ich die 64bit-Version von PostgreSQL 12 installiert habe. Eine totale Konfusion kann ich hier nicht erkennen. Es funktioniert auf Anhieb.

HTH
Bei mir hat das mit "Program Files" nicht funktioniert, die DB wurde nicht gefunden. Erst nachdem ich wie oben beschrieben PSQL installierte war die DB zwar da, aber sie ließ sich weder initialisieren noch starten. Alles probiert. - Ich habe es nicht aufgeschrieben, aus der Erinnerung war es so, daß ich den Standardnutzer postgres# zwar aufrufen konnte, aber einen neuen Nutzer oder eine neue DB zu erstellen klappte nicht; es passierte einfach nichts. PostgreSQL lief aber, siehe Schreenshot.
Befehle wie: createuser ABC oder createdb ABC führten nur zu einer Fehlermeldung.

Windows 10 Pro, 64Bit Version 2004. PSQL war natürlich auch 64Bit.

PostgreSQL 10 unter Windows 2019
How to start psql.exe
initdb - PostgreSQL Server Applications
 

Anhänge

CommanderZed

OpenBSD User
Mitarbeiter
#17
Weil ich mir das nicht vorstellen konnte, habe ich PostgreSQL unter Windows installiert. Es ist korrekt, dass als Standardpfad "Program Files" verwendet wird. Dieser wird korrekt angelegt. Während der Installationsroutine werde ich nach einem Passwort für den Benutzer postgres gefragt. Sobald die Installation beendet ist, starte ich die SQL Shell, und kann mich in die Datenbank einloggen. Funktioniert ohne Bastelei prima.

Ich habe hier ein 64bit Windows 10, auf dem ich die 64bit-Version von PostgreSQL 12 installiert habe. Eine totale Konfusion kann ich hier nicht erkennen. Es funktioniert auf Anhieb.

HTH
Habs eben auch mal probiert, lief sofort.
 

medV2

Well-Known Member
#18
Ich denke deine Windowsinstallation ist etwas kaputt.
Ich habs jetzt gerade bei mir auf der Gamingmaschine probiert (Homeoffice sei dank). Postgres unter WSL (LEAP 15.1), ca. 3 Minuten:

Code:
DESKTOP-ASDFD3:~ # zypper in postgresql-server
Loading repository data...
Reading installed packages...
Resolving package dependencies...

The following 8 NEW packages are going to be installed:
  libicu60_2 libicu60_2-ledata libpq5 postgresql postgresql-server
postgresql10 postgresql10-server timezone

8 new packages to install.

sudo -i -u postgres
initdb
pg_ctl -D /var/lib/pgsql/data -l logfile start
psql


postgres=# \l
                                  List of databases
   Name    |  Owner   | Encoding |   Collate   |    Ctype    |   Access
privileges
-----------+----------+----------+-------------+-------------+-----------------------
 postgres  | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
 template0 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
=c/postgres          +
           |          |          |             |             |
postgres=CTc/postgres
 template1 | postgres | UTF8     | en_US.UTF-8 | en_US.UTF-8 |
=c/postgres          +
           |          |          |             |             |
postgres=CTc/postgres
(3 rows)

postgres=# create database test;
WARNING:  could not flush dirty data: Function not implemented
CREATE DATABASE
postgres=#
 

Idefixx

Well-Known Member
Themenstarter #19
Ich denke deine Windowsinstallation ist etwas kaputt.
Ich habs jetzt gerade bei mir auf der Gamingmaschine probiert (Homeoffice sei dank). Postgres unter WSL (LEAP 15.1), ca. 3 Minuten:
Also, bei mir klappt es einfach nicht. Habe es nochmal nach Deinen Vorgaben installiert, siehe Screenshots, aber es geht einfach nicht. Das liegt nicht an der Win-Installation, das System läuft perfekt, wenn, dann liegt es an einer Systemeinstellung. Es muß eine Standardeinstellung sein, denn ich kann mich nicht erinnern, da irgendwo daran herum gefummelt zu haben.
Ich bin lange genug dabei um zu wissen, daß man an Systemeinstellungen nur dann etwas ändern sollte, wenn man genau weiß was man macht.
 

Anhänge

medV2

Well-Known Member
#20
Hey, hab ich vergessen zu erwähnen, du musst die von mir genannten Befehle alle als root ausführen. Du bist somit nie zum Postgres-User geworden, daher funktioniert es auch nicht.
 

Idefixx

Well-Known Member
Themenstarter #21
Ich mußte erst ein Paßwort für postgres vergeben, dann klappte die Initialisierung, aber es kommt keine Verbindung zum Server zustande.

Code:
lysandros@PANDORA:/> sudo passwd postgres
New password:
BAD PASSWORD: it is based on a dictionary word
BAD PASSWORD: is too simple
Retype new password:
passwd: password updated successfully
lysandros@PANDORA:/> sudo -i -u postgres
[sudo] password for postgres:
postgres@PANDORA:~> initdb
The files belonging to this database system will be owned by user "postgres".
This user must also own the server process.

The database cluster will be initialized with locale "en_US.UTF-8".
The default database encoding has accordingly been set to "UTF8".
The default text search configuration will be set to "english".

Data page checksums are disabled.

creating directory /var/lib/pgsql/data ... ok
creating subdirectories ... ok
selecting default max_connections ... 100
selecting default shared_buffers ... 128MB
selecting default timezone ... Europe/Berlin
selecting dynamic shared memory implementation ... posix
creating configuration files ... ok
running bootstrap script ... ok
performing post-bootstrap initialization ... ok
syncing data to disk ... ok

WARNING: enabling "trust" authentication for local connections
You can change this by editing pg_hba.conf or using the option -A, or
--auth-local and --auth-host, the next time you run initdb.

Success. You can now start the database server using:

    pg_ctl -D /var/lib/pgsql/data -l logfile start

postgres@PANDORA:~> pg_ctl -D /var/lib/pgsql/data -l logfile start
waiting for server to start.... stopped waiting
pg_ctl: could not start server
Examine the log output.
Und da steht auch weiter nichts drin - cd /var/lib/pgsql logfile::
Code:
2020-07-31 16:10:38.860 CEST   [90]LOG:  listening on IPv4 address "127.0.0.1", port 5432
2020-07-31 16:10:38.894 CEST   [90]FATAL:  could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": No such file or directory
2020-07-31 16:10:38.896 CEST   [90]LOG:  database system is shut down
Dann habe ich in der postgresql.conf den Port 5432 aktiviert:

Code:
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

#listen_addresses = 'localhost'         # what IP address(es) to listen on;
                                        # comma-separated list of addresses;
                                        # defaults to 'localhost'; use '*' for all
                                        # (change requires restart)
#port = 5432                            # (change requires restart)
max_connections = 100                   # (change requires restart)
#superuser_reserved_connections = 3     # (change requires restart)
#unix_socket_directories = '/var/run/postgresql, /tmp'  # comma-separated list of directories
Einen Restart versucht, hat aber wohl nicht geklappt:

Code:
postgres@PANDORA:~/data> pg_ctl status
pg_ctl: no server running
postgres@PANDORA:~/data> pg_ctl start
waiting for server to start....2020-07-31 17:35:21.813 CEST   [192]LOG:  listening on IPv4 address "127.0.0.1", port 5432
2020-07-31 17:35:21.854 CEST   [192]FATAL:  could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": No such file or directory
2020-07-31 17:35:21.859 CEST   [192]LOG:  database system is shut down
 stopped waiting
pg_ctl: could not start server
Examine the log output.
postgres@PANDORA:~/data>
Das hakt an irgend einer Bagatelle, denke ich mal.
 
#22
ist doch sehr eindeutig:

could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": No such file or directory

Verzeichnis nicht vorhanden oder schlicht keine Rechte darauf zuzugreifen?
 

Idefixx

Well-Known Member
Themenstarter #23
ist doch sehr eindeutig:

could not create lock file "/var/run/postgresql/.s.PGSQL.5432.lock": No such file or directory

Verzeichnis nicht vorhanden oder schlicht keine Rechte darauf zuzugreifen?
Hatte ich nachgesehen, und mich gefragt, warum es nicht erstellt wurde. Ich war als sudo, dann als Superuser postgres unterwegs . . . was braucht es denn noch? Vielleicht braucht´s nen großmufti@PANDORA?

Leider habe ich davon keinen Screenshot gemacht, aber egal, ob ich mich direkt als root anmeldete (nicht nur mit sudo), oder als User postgres, ich konnte die Datenbank nicht starten etc.

Vielleicht fällt mir irgendwann noch was ein . . . irgendwann. :rolleyes: