Dieses Howto bezieht sich auf RHEL Linux und entsprechende Derivate (Fedora, CentOS, ...). Das Howto wird auf einem CentOS 5 System (x86 (i386)) durchgeführt.
Shellbefehle die mit einem Sharpzeichen (#) beginnen, sind als root User einzugeben. Alternativ kann auch mit dem "sudo"-Befehl gearbeitet werden. Das Howto arbeitet mit dem Paketverwaltungstool "yum". Theoretisch kann es auch "zu Fuss" mit "rpm" durchgeführt werden. Viele Wege führen nach Rom... ;-)
Problemstellung:
RHEL sowie die RH nahen Derivate bringen bereits fertige PostgreSQL Binärpakete mit sich. Diese Pakete sind jedoch i. d. R. schon älter und es werden nur Sicherheitsupdates eingepflegt. Das hat zur Folge, dass Funktionen von neuen Versionen nicht verfügbar sind. Dieses Howto beschreibt, wie man die mitgelieferten Pakete durch Pakete des PostgreSQL Projektes ersetzt. Ziel ist es, die Paketverwaltung durch das Systemeigenetool "yum" durchzuführen.
Achtung! Durch die Verwendung von neuen Versionen auf Produktversionen kann man sich neuen Funktionen auch noch nicht gelöste Probleme (Bugs) einfangen. Die Verwendung ist also nur für erfahrene Anwender gedacht! Ebenfalls kann der Anspruch auf Hilfe bei Supportanfragen bei Verwendung von externen Paketen erlöschen! Dies sollte bei bestehenden Verträgen vorher geklärt werden.
Vorarbeiten:
Sollte bereits eine ältere Version des PostgreSQL Datenbankserver installiert sein, so muss diese zuerst entfernt werden. Die Schritte zum erstellen einer Sicherung sind im PostgreSQL Handbuch beschrieben.
Wenn das System rein mit den mitgelieferten Paketverwaltungstool arbeitet, kann der Datenbankserver einfach entfernt werden.
Nach einer Prüfung der Abhängigkeitsliste kann der Datenbankserver gelöscht werden. Sollten dadurch noch benötige Pakete ebenfalls gelöscht werden müssen ggf. die entsprechenden Pakete einzeln entfernt werden.Code:# yum remove postgresql*
Einbinden des PostgreSQL Repos und Installation:
Im ersten Schritt müssen wir verhindern, dass in Zukunft PostgreSQL Pakete über die Server der entsprechenden Distribution kommen. Hierzu muss die Konfiguration der Repos entsprechend angepasst werden. Diese Dateien liegen im Verzeichnis /etc/yum.repos.d. Folgende Datei(en) müssen angepasst werden:
Um nun PostgreSQL hier auszuschließen muss lediglich am Ende der oben angegebenen Sektionen folgende Zeile eingefügt werden:
- RHEL: /etc/yum/pluginconf.d/rhnplugin.conf, Sektion [main]
- CentOS: CentOS-Base.repo, Sektion [base] und [updates]
- Fedora: fedora.repo und fedora-updates.repo, Sektion [fedora]
Um die Repo-Daten in das System einzubinden, gibt es ein fertiges RPM-Paket das diese Aufgabe für uns erledigt. Diese Dateien können hier heruntergeladen werden und müssen im System eingespielt werden. Je nach Distribution und gewünschter PostgreSQL-Version ist ein anderes Paket notwendig! In meinem Beispiel verwende ich CentOS mit PostgreSQL 8.3.Code:exclude=postgresql*
In der Datei pgdg-83-centos.repo sind die Repo-Definitionen für PostgreSQL 8.3 auf CentOS enthalten.Code:# wget http://yum.pgsqlrpms.org/reporpms/8.3/pgdg-centos-8.3-1.noarch.rpm # rpm -ihv pgdg-centos-8.3-1.noarch.rpm # ls /etc/yum.repos.d/ CentOS-Base.repo CentOS-Media.repo pgdg-83-centos.repo
Anschließend kann geprüft werden, ob die neuen Pakete verfügbar sind:
Die Installation verläuft jetzt wie bei jeden anderen Paket auch:Code:# yum list postgresql* Loading "installonlyn" plugin Setting up repositories Reading repository metadata in from local files Excluding Packages from CentOS-5 - Base Finished Excluding Packages from CentOS-5 - Updates Finished Available Packages postgresql.i686 8.3.0-2PGDG.rhel5 pgdg83 postgresql-contrib.i686 8.3.0-2PGDG.rhel5 pgdg83 postgresql-debuginfo.i686 8.3.0-2PGDG.rhel5 pgdg83 postgresql-devel.i686 8.3.0-2PGDG.rhel5 pgdg83 postgresql-docs.i686 8.3.0-2PGDG.rhel5 pgdg83 postgresql-jdbc.i686 8.3.603-1PGDG.rhel5 pgdg83 postgresql-jdbc-debuginfo.i686 8.3.603-1PGDG.rhel5 pgdg83 postgresql-libs.i686 8.3.0-2PGDG.rhel5 pgdg83 postgresql-odbc.i686 08.03.0100-1PGDG.rhel5 pgdg83 postgresql-odbc-debuginfo.i686 08.03.0100-1PGDG.rhel5 pgdg83 postgresql-plperl.i686 8.3.0-2PGDG.rhel5 pgdg83 postgresql-plpython.i686 8.3.0-2PGDG.rhel5 pgdg83 postgresql-pltcl.i686 8.3.0-2PGDG.rhel5 pgdg83 postgresql-python.i686 3.8.1-7PGDG.rhel5 pgdg83 postgresql-python-debuginfo.i686 3.8.1-7PGDG.rhel5 pgdg83 postgresql-server.i686 8.3.0-2PGDG.rhel5 pgdg83 postgresql-tcl.i686 1.6.2-1PGDG.rhel5 pgdg83 postgresql-tcl-debuginfo.i686 1.6.2-1PGDG.rhel5 pgdg83 postgresql-test.i686 8.3.0-2PGDG.rhel5 pgdg83
Benötigte Abhängigkeiten werden aufgelöst und die Pakete in das System eingespielt.Code:# yum install postgresql-server postgresql ...
Nun ist ein "nakter" PostgreSQL Server vorhanden. Ein neues Datenbankcluster kann mit initdb erstellt werden und wenn nötig kann der Backupdump anschließend eingelesen werden. Dieser Vorgang ist im PostgreSQL Handbuch beschrieben.
Achtung! Der Pfad zum data-Verzeichnis lautet bei RHEL Systemen /var/lib/pgsql/data/!
Weitere Links:
PG Yum Projekt: PostgreSQL RPM Repository (with Yum)
RPM Chart: PostgreSQL RPM Repository (with Yum)
Die Webseite hat sich geändert. Folgende URLs sind aktuell:
- Projektseite: PostgreSQL RPM Repository (with Yum)
- Liste mit Links zu den RPMs: PostgreSQL RPM Repository (with Yum)
Viel Erfolg.
Links: Tobias Bauer - IT- und Funkdienstleistungen - Bilderrahmen-kaufen.de - Der Onlineshop für Bilderrahmen & Fotorahmen - Funkforum
Lesezeichen