Ich habe die neueste Version von PostgreSQL (17.4) erfolgreich unter Ubuntu ARM32 kompiliert und installiert.

Die Befehle in diesem Artikel stammen hauptsächlich aus der offiziellen PostgreSQL-Dokumentation. Ich habe jeden Befehl in diesem Artikel tatsächlich getestet.

Hier können Sie das System sehen, auf dem die Installation erfolgreich durchgeführt werden kann: PostgreSQL Buildfarm

Kompilieren und Installieren von PostgreSQL 17.4

1. Verzeichnis erstellen und aufrufen

mkdir postgresql && cd postgresql
  • mkdir postgresql: Erstellt ein neues Verzeichnis namens postgresql.
  • cd postgresql: Wechselt in das gerade erstellte Verzeichnis postgresql.

2. PostgreSQL-Quellcode herunterladen

wget https://ftp.postgresql.org/pub/source/v17.4/postgresql-17.4.tar.bz2
  • wget: Lädt eine Datei von der angegebenen URL herunter.
  • https://..../postgresql-17.4.tar.bz2: Download-Link für das komprimierte Quellcodepaket von PostgreSQL Version 17.4. Wenn der Link ungültig ist, können Sie selbst nach einem neuen Link suchen.

3. Quellcodepaket entpacken

tar xjf postgresql-17.4.tar.bz2
  • tar: Wird zum Verarbeiten von .tar-Archivdateien verwendet.

  • xjf: Optionen zum Entpacken der tar-Datei:

    • x: Datei entpacken.
    • j: Verwendung des bzip2-Komprimierungsformats (.bz2).
    • f: Gibt die zu entpackende Datei an.
  • postgresql-17.4.tar.bz2: Der Name der zu entpackenden Datei.

4. Das entpackte Quellcodeverzeichnis aufrufen

cd postgresql-17.4
  • Wechselt in das entpackte PostgreSQL 17.4-Quellcodeverzeichnis.

5. Abhängigkeitspakete installieren

sudo apt install libssl-dev libsystemd-dev libxml2-dev libreadline-dev
  • sudo apt install: Verwendet den apt-Paketmanager zum Installieren von Softwarepaketen.
  • libssl-dev, libsystemd-dev, libxml2-dev, libreadline-dev: Installiert die für die PostgreSQL-Kompilierung erforderlichen Entwicklungsbibliotheken, nämlich die SSL-Bibliothek, die Systemd-Bibliothek, die XML-Bibliothek und die Readline-Bibliothek.

6. Kompilierungsoptionen konfigurieren

./configure --prefix=/usr/local/pgsql --with-openssl --with-libxml --with-systemd
  • ./configure: Bereitet die PostgreSQL-Kompilierungsumgebung vor.
  • --prefix=/usr/local/pgsql: Gibt /usr/local/pgsql als PostgreSQL-Installationsverzeichnis an.
  • --with-openssl: Aktiviert die OpenSSL-Unterstützung.
  • --with-libxml: Aktiviert die XML-Unterstützung.
  • --with-systemd: Aktiviert die Systemd-Unterstützung.

7. Quellcode kompilieren

make -j$(nproc)
  • make: Startet den Kompilierungsprozess.
  • -j$(nproc): Verwendet nproc (die Anzahl der CPU-Kerne des Systems), um Kompilierungsaufgaben parallel auszuführen und den Kompilierungsprozess zu beschleunigen.

8. PostgreSQL installieren

sudo make install
  • sudo make install: Führt die Installation mit Administratorrechten mit sudo aus. make install installiert die kompilierten Dateien im System, und zwar in das Verzeichnis /usr/local/pgsql, das im vorherigen Befehl ./configure angegeben wurde.

9. Umgebungsvariablen setzen

Verwenden Sie einen Texteditor 1. Bearbeiten Sie die Datei /etc/profile:

sudo nano /etc/profile
  • sudo: Gibt an, dass der Befehl mit Superuser-Berechtigungen (Administratorrechten) ausgeführt wird. Zum Ändern der Datei /etc/profile sind Administratorrechte erforderlich.
  • nano: Dies ist ein Texteditor, der häufig in Terminalumgebungen zum Bearbeiten von Dateien verwendet wird.
  • /etc/profile: Dies ist eine globale Konfigurationsdatei, die zum Festlegen von systemweiten Umgebungsvariablen und Startkonfigurationen verwendet wird. Die Einstellungen in dieser Datei werden bei jeder Benutzeranmeldung am System ausgeführt.
  1. Umgebungsvariable hinzufügen:
export PATH=/usr/local/pgsql/bin:$PATH
  • export: Wird verwendet, um eine Umgebungsvariable festzulegen, die im aktuellen Prozess und in seinen Unterprozessen verfügbar ist.
  • PATH: Dies ist eine Umgebungsvariable, die eine Liste von Verzeichnissen enthält, in denen sich ausführbare Dateien befinden. Bei der Ausführung eines Befehls sucht das System anhand der in der PATH-Variablen aufgeführten Verzeichnisse nach dem Befehl.
  • /usr/local/pgsql/bin: Dies ist das Verzeichnis der ausführbaren Dateien der PostgreSQL-Datenbank. Das Hinzufügen dieses Verzeichnisses bedeutet, dass die ausführbaren Dateien in diesem Verzeichnis (z. B. psql) vom System erkannt werden.
  • :$PATH: Hier stellt $PATH den bereits vorhandenen Pfad dar. Der neue Pfad /usr/local/pgsql/bin wird dem vorhandenen PATH vorangestellt. Auf diese Weise prüft das System zuerst das neue Verzeichnis und dann den ursprünglichen Pfad.

Dieser Befehl fügt das Verzeichnis mit den ausführbaren PostgreSQL-Dateien der Umgebungsvariablen PATH des Systems hinzu, um sicherzustellen, dass PostgreSQL-Befehle (z. B. psql) direkt in der Befehlszeile ausgeführt werden können, ohne dass der vollständige Pfad angegeben werden muss. Die geänderten Einstellungen gelten für alle Benutzer

PostgreSQL-Datenbank initialisieren

Diese Befehle werden hauptsächlich verwendet, um einen PostgreSQL-Datenbankserver auf einem Linux-Server manuell zu konfigurieren, einschließlich des Erstellens eines PostgreSQL-Systembenutzers, des Initialisierens der Datenbank, des Startens des Datenbankdienstes und des Registrierens als systemd-Dienst, damit er beim Start automatisch gestartet wird.

1. PostgreSQL-Benutzer erstellen

sudo useradd -m -U -r -d /var/lib/postgresql -s /bin/bash postgres
  • sudo: Führt den Befehl mit Superuser-Rechten aus.
  • useradd: Erstellt einen neuen Benutzer.
  • -m: Erstellt das Home-Verzeichnis des Benutzers.
  • -U: Erstellt gleichzeitig eine Benutzergruppe mit demselben Benutzernamen.
  • -r: Erstellt einen Systembenutzer (Systembenutzer-UID unter 1000, nicht für die Anmeldung verwendet).
  • -d /var/lib/postgresql: Gibt /var/lib/postgresql als Home-Verzeichnis an.
  • -s /bin/bash: Gibt /bin/bash als Shell an.
  • postgres: Benutzername.

Dieser Befehl erstellt einen dedizierten Systembenutzer postgres für PostgreSQL.


2. Besitzer des PostgreSQL-Verzeichnisses ändern

sudo chown postgres /usr/local/pgsql
  • chown postgres /usr/local/pgsql: Ändert den Besitzer des Verzeichnisses /usr/local/pgsql in den Benutzer postgres, sodass dieser das Verzeichnis lesen und schreiben kann.

3. Passwort des PostgreSQL-Benutzers setzen

sudo passwd postgres
  • passwd postgres: Ändert das Passwort des Benutzers postgres.

4. Zum PostgreSQL-Benutzer wechseln

su postgres
  • su postgres: Wechselt zum Benutzer postgres, um PostgreSQL-bezogene Befehle zu verwenden.

5. Datenbank initialisieren

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
  • initdb -D /usr/local/pgsql/data: Initialisiert die Datenbankspeicherung im Verzeichnis /usr/local/pgsql/data.

6. PostgreSQL-Datenbank starten

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
  • postgres -D /usr/local/pgsql/data: Startet die Datenbank mit dem Prozess postgres, wobei die Daten im Verzeichnis /usr/local/pgsql/data gespeichert werden.

7. In einer anderen Terminalsession die Datenbank aufrufen

su postgres
/usr/local/pgsql/bin/psql
  • psql: Das interaktive Befehlszeilentool von PostgreSQL zum Aufrufen der Datenbank-Shell.

8. Passwort des Datenbankbenutzers setzen

ALTER USER postgres WITH PASSWORD 'your_new_password';
  • Ändert das Passwort des Datenbankbenutzers postgres.

9. systemd-Dienst erstellen

sudo nano /etc/systemd/system/postgresql.service
  • nano /etc/systemd/system/postgresql.service: Bearbeitet die systemd-Konfigurationsdatei, damit PostgreSQL als Dienst ausgeführt werden kann.

Konfigurationsdateiinhalt:

[Unit]
Description=PostgreSQL server
#Documentation=man:postgres(1)
After=network-online.target
Wants=network-online.target

[Service]
Type=notify
User=postgres
ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
ExecReload=/bin/kill -HUP $MAINPID
KillMode=mixed
KillSignal=SIGINT
TimeoutSec=infinity

[Install]
WantedBy=multi-user.target
  • Description=PostgreSQL server: Beschreibt, dass dieser Dienst ein PostgreSQL-Server ist.
  • After=network-online.target: Wartet, bis die Netzwerkverbindung verfügbar ist, bevor PostgreSQL gestartet wird.
  • User=postgres: Wird als Benutzer postgres ausgeführt.
  • ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data: Startet den PostgreSQL-Server.
  • ExecReload=/bin/kill -HUP $MAINPID: Sendet ein HUP-Signal beim Neuladen.
  • KillMode=mixed: Gemischter Beendigungsmodus.
  • KillSignal=SIGINT: Signal zum Beenden des PostgreSQL-Prozesses.
  • TimeoutSec=infinity: Timeout auf Unendlich setzen.

10. systemd-Dienst aktivieren

sudo systemctl daemon-reload
sudo systemctl start postgresql
sudo systemctl status postgresql
sudo systemctl enable postgresql
  • daemon-reload: Lädt die systemd-Konfiguration neu, damit die neue postgresql.service wirksam wird.
  • start postgresql: Startet den PostgreSQL-Dienst.
  • status postgresql: Überprüft den PostgreSQL-Ausführungsstatus.
  • enable postgresql: Startet PostgreSQL automatisch beim Start.

Zweck dieser Befehle:

  1. Einen postgres-Benutzer erstellen, der speziell für die Ausführung von PostgreSQL verwendet wird.
  2. Das Datenbank-Speicherverzeichnis initialisieren.
  3. Die PostgreSQL-Datenbank starten und die interaktive psql-Befehlszeile aufrufen.
  4. systemd so konfigurieren, dass PostgreSQL als Systemdienst ausgeführt wird und den automatischen Start beim Start unterstützt.

Auf diese Weise kann der PostgreSQL-Server normal ausgeführt werden und beim Systemstart automatisch gestartet werden.

Referenzmaterialien

PostgreSQL: Documentation: 17: Chapter 17. Installation from Source Code

Andere Versionen dieser Webseite

Dieser Artikel ist in mehreren Sprachen verfügbar.

Diese Webseiten unterstützen nur das Anzeigen, Kommentare oder Nachrichten können nicht hinterlassen werden, bieten aber mehr Sprachoptionen und kürzere Ladezeiten:

ZH EN ZH-TW JA RU KO CS ES AR FR PT DE TR IT NL SV DA FI PL UK HE RO HU EL HR TH HI BN ID SW VI NO

Dieser Artikel wurde durch KI von Chinesisch (Vereinfacht) ins Deutsche übersetzt.