Postgres über cmd installieren

Vor einiger Zeit hatte ich mich mit der Datenbankmigration von 8 auf 13 über 9 mittels eines batch-skript, drittklassig und amateurhaft geschrieben, professionell umgeschrieben, befasst.

Mich interessiert das herunterladern des Windows-Installers von postgres in seiner neusten Version und seiner Installation über ein batch-Skript.

Ein Teil des Skripts, im Original, lautet

REM Alles Weitere muss normalerweise nicht, kann aber angepasst werden. Den Download-Link modifizieren mache ich wegen solutio nur noch bei der migrate_all_16.bat
set db_dump_path=%db_dump_dir%\dump-DATUM.sql
set "pg9_data_path=%solutio_path%\Server\PostgreSQL9.5\data"
REM set download_url=https://get.enterprisedb.com/postgresql/postgresql-13.12-1-windows-x64.exe
set installer_path=%solutio_path%\postgresql-13.12-1-windows-x64.exe

das Batch-Skript um von postgres 13 auf 16 zu wechseln lautet

REM Alles Weitere muss normalerweise nicht, kann aber angepasst werden. Für den Download-Link muss man flink sein und unter 
REM https://www.enterprisedb.com/downloads/postgres-postgresql-downloads das neuste Paket runterladen. Während es lädt, den Link extrahieren im Browser.
REM und in set download_url= einfügen.
set db_dump_path=%db_dump_dir%\dump13.sql
set "pg13_data_path=%solutio_path%\Server\PostgreSQL13\data"
set download_url=https://get.enterprisedb.com/postgresql/postgresql-16.0-1-windows-x64.exe
set installer_path=%solutio_path%\postgresql-16.0-1-windows-x64.exe

wie kann man die postgresql-XX.X-windows-x64.exe in seiner neusten Version über set download_url= runterladen oder gar installieren?

ich will nur kurz einen link posten und schauen, ob er sich beim nächsten update der postgres16 reihe verändert https://sbp.enterprisedb.com/getfile.jsp?fileid=1258698

https://pastebin.com/2SYws0yw

Ich weiß von keiner Möglichkeit sowas dynamisch zu machen.

Aber vielleicht wäre die Verwendung von Paketmanagern wie winget (Microsoft) oder chocolatey eine Alternative? Ich habe keine Erfahrung mit den beiden Tools, und weiß nicht wie schnell die Aktualisierungen (Bugfixes oder neuen Versionen) zur Verfügung stellen. Postgres 16 scheint noch bei keinem der beiden angekommen zu sein.

1 „Gefällt mir“

Das ist so ein halbes Henne-Ei Problem oder?

Wenn Du das dynamisch haben willst, musst Du die Änderungen der Webseite des Anbieters automatisiert analysieren, weil Dir vermutlich niemand garantieren kann, dass der Link, die File ID, der Content usw. immer nach dem gleichen Schema verfügbar sind.

Ein drittes Programm dazwischen zu hängen (Paketmanager) würde m.E. Sinn machen, wenn es auf dem Ziel OS (Windows) ein Standard ist (also sowieso schon installiert oder standardisiert installierbar, Henne-Ei halt).

Das führt dann zu dem Punkt, dass es eigentlich sinnvoll wäre, es über den Windows Store zu installieren. Ich weiß aber nicht, ob der einen standardisierten Mechnismus anbietet. Und Postgres DB bietet er gar nicht an, hab grad kurz nachgeschaut. (Wohl allerdings gibt es dort diverse WSL2 Linux Distributionen per Command Line, die dann wiederum stanardisiert Postgres installieren können, das ist relativ neu und MS seitig ein erstaunliches Entgegenkommen, ein einziges Kommando(! nicht Klick) für eine komplette Linuxinstallation, ein Parameter dazu und es ist nicht mehr die Default Distribution, sondern die selbst gewählte. Nagut, Linux willst Du wahrscheinlich nicht extra dazu installieren)

Und last but not least, wenn Du sowas nutzen oder anbieten willst, machst Du vielleicht einfach selbst ein paar redigierte Permalinks, die Du natürlich dann immer anpassen musst (deren Ziel), wenn die Originaldownloadlocation geändert wird (Stelle oder Inhalt). So etwa wie bei Docker, mit einem …latest Image.

yup, ändert sich der Link bzw. die File ID:

Postgres16.0: https://sbp.enterprisedb.com/getfile.jsp?fileid=1258698

Postgres16.1: https://sbp.enterprisedb.com/getfile.jsp?fileid=1258792

Ich weiß nicht, was Du Dir da vorstellst.

Zunächst nochmal, was du bräuchtest wäre ein “Latest Link”, so wie etwa bei der Postgres Documantation.

versus

versus

usw.

Bei der Doku tut sowas nicht weh. Bei einem Installer / Binaries ist es für den reinen Download auch erstmal egal. Angenommen Du bekommst diesen Link, gibt es keine Garantien, dass das Verhalten des neuen Installers identisch ist zur vorigen Version. Du bist also vielleicht einen Schritt weiter, aber das Thema ist nicht erledigt.

Und wie bereits gesagt: Es hindert Dich niemand, dir eine solche URL selbst zu bauen. Du musst einfach irgendwann das Ziel deines latest links auf den neuen Installer umstellen.

Dieses Thema wurde automatisch 60 Tage nach der letzten Antwort geschlossen. Es sind keine neuen Antworten mehr erlaubt.