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.

Wenn Sie einen Kommentar abgeben möchten, besuchen Sie bitte die folgenden Webseiten:

ZH EN ZH-TW JA

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.