Para instalar postgresql10 en Rocky Linux 8.8 ejecutamos la siguiente orden
[root@pruebas ~]# dnf module list postgresql Rocky Linux 8 - AppStream 2.9 MB/s | 11 MB 00:03 Rocky Linux 8 - BaseOS 1.6 MB/s | 6.0 MB 00:03 Rocky Linux 8 - Extras 5.3 kB/s | 13 kB 00:02 Rocky Linux 8 - AppStream Name Stream Profiles Summary postgresql 9.6 client, server [d] PostgreSQL server and client module postgresql 10 [d] client, server [d] PostgreSQL server and client module postgresql 12 client, server [d] PostgreSQL server and client module postgresql 13 client, server [d] PostgreSQL server and client module postgresql 15 client, server [d] PostgreSQL server and client module Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled [root@pruebas ~]#
Vemos que la versión 10 se va a instalar por defecto, eso lo indica los caracteres [d]. Ahora ejecutamos el procedimiento de instalación como en el siguiente caso
[root@pruebas ~]# dnf install postgresql-server Last metadata expiration check: 0:00:18 ago on Thu 31 Aug 2023 03:10:36 PM -05. Dependencies resolved. =================================================================================================================================================================================== Package Architecture Version Repository Size =================================================================================================================================================================================== Installing: postgresql-server x86_64 10.23-2.module+el8.8.0+1440+992378a9 appstream 5.0 M Installing dependencies: libpq x86_64 13.5-1.el8 appstream 197 k postgresql x86_64 10.23-2.module+el8.8.0+1440+992378a9 appstream 1.5 M Enabling module streams: postgresql 10 Transaction Summary =================================================================================================================================================================================== Install 3 Packages Total download size: 6.7 M Installed size: 26 M Is this ok [y/N]: y Downloading Packages: [MIRROR] postgresql-10.23-2.module+el8.8.0+1440+992378a9.x86_64.rpm: Status code: 404 for http://ftp.unicamp.br/pub/rocky/8.8/AppStream/x86_64/os/Packages/p/postgresql-10.23-2.module%2bel8.8.0%2b1440%2b992378a9.x86_64.rpm (IP: 143.106.10.149) [MIRROR] postgresql-server-10.23-2.module+el8.8.0+1440+992378a9.x86_64.rpm: Status code: 404 for http://ftp.unicamp.br/pub/rocky/8.8/AppStream/x86_64/os/Packages/p/postgresql-server-10.23-2.module%2bel8.8.0%2b1440%2b992378a9.x86_64.rpm (IP: 143.106.10.149) (1/3): libpq-13.5-1.el8.x86_64.rpm 205 kB/s | 197 kB 00:00 (2/3): postgresql-10.23-2.module+el8.8.0+1440+992378a9.x86_64.rpm 855 kB/s | 1.5 MB 00:01 (3/3): postgresql-server-10.23-2.module+el8.8.0+1440+992378a9.x86_64.rpm 2.4 MB/s | 5.0 MB 00:02 ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- Total 2.3 MB/s | 6.7 MB 00:02 Rocky Linux 8 - AppStream 1.6 MB/s | 1.6 kB 00:00 Importing GPG key 0x6D745A60: Userid : "Release Engineering <infrastructure@rockylinux.org>" Fingerprint: 7051 C470 A929 F454 CEBE 37B7 15AF 5DAC 6D74 5A60 From : /etc/pki/rpm-gpg/RPM-GPG-KEY-rockyofficial Is this ok [y/N]: y Key imported successfully Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Installing : libpq-13.5-1.el8.x86_64 1/3 Installing : postgresql-10.23-2.module+el8.8.0+1440+992378a9.x86_64 2/3 Running scriptlet: postgresql-server-10.23-2.module+el8.8.0+1440+992378a9.x86_64 3/3 Installing : postgresql-server-10.23-2.module+el8.8.0+1440+992378a9.x86_64 3/3 Running scriptlet: postgresql-server-10.23-2.module+el8.8.0+1440+992378a9.x86_64 3/3 Verifying : libpq-13.5-1.el8.x86_64 1/3 Verifying : postgresql-10.23-2.module+el8.8.0+1440+992378a9.x86_64 2/3 Verifying : postgresql-server-10.23-2.module+el8.8.0+1440+992378a9.x86_64 3/3 Installed: libpq-13.5-1.el8.x86_64 postgresql-10.23-2.module+el8.8.0+1440+992378a9.x86_64 postgresql-server-10.23-2.module+el8.8.0+1440+992378a9.x86_64 Complete! [root@pruebas ~]#
Con este procedimiento hemos instalado postgresql10 en Rocky Linux. Tener en cuenta que la versión 10 ya no es soportada por postgresql. Yo la he instalado debido a unos requerimientos puntuales.
Luego de ello estamos en la capacidad de iniciar la configuración de postgresql en un directorio personalizado. En este caso vamos a configurar el directorio como /var/lib/pgsql/10/data
Normalmente el postgresql usa /var/lib/pgsql/data
Ejecutamos entonces la siguiente orden
[root@pruebas system]# systemctl edit postgresql.service [root@pruebas system]#
Dentro del archivo ponemos las siguientes dos líneas
[Service]
Environment=PGDATA=/var/lib/pgsql/10/data
Con esto estamos indicando que postgres tendrá su repositorio de datos en la ruta /var/lib/pgsql/10/data
Verificamos el archivo recién creado
[root@pruebas system]# cat /etc/systemd/system/postgresql.service.d/override.conf [Service] Environment=PGDATA=/var/lib/pgsql/10/data [root@pruebas system]#
Recargamos systemd para que se tomen los cambios realizados
[root@pruebas system]# systemctl daemon-reload [root@pruebas system]#
Creamos la ruta en la que queremos que postgresql almacene la información
[root@pruebas system]# mkdir -p /var/lib/pgsql/10/data
Y damos la propiedad de esta ruta al usuario postgres
[root@pruebas system]# chown -R postgres:postgres /var/lib/pgsql
Ojo, si no realizamos los pasos previos (creación de ruta y cambio de propiedad) nos puede salir el siguiente error
[root@pruebas system]# postgresql-setup --initdb * Initializing database in '/var/lib/pgsql/10/data' mkdir: cannot create directory ‘/var/lib/pgsql/10/data’: No such file or directory ERROR: Initializing database failed, possibly see /var/lib/pgsql/initdb_postgresql.log [root@pruebas system]#
Entonces, una vez editado el archivo, estamos listos para ejecutar la configuración del servicio.
[root@pruebas system]# postgresql-setup --initdb * Initializing database in '/var/lib/pgsql/10/data' * Initialized, logs are in /var/lib/pgsql/initdb_postgresql.log [root@pruebas system]#
Podemos visualizar el contenido del directorio inicializado
[root@pruebas system]# ls -ltr /var/lib/pgsql/10/data/ total 48 drwx------ 2 postgres postgres 6 Aug 31 16:06 pg_twophase drwx------ 2 postgres postgres 6 Aug 31 16:06 pg_snapshots drwx------ 2 postgres postgres 6 Aug 31 16:06 pg_serial drwx------ 4 postgres postgres 36 Aug 31 16:06 pg_multixact drwx------ 2 postgres postgres 6 Aug 31 16:06 pg_dynshmem drwx------ 2 postgres postgres 6 Aug 31 16:06 pg_commit_ts -rw------- 1 postgres postgres 3 Aug 31 16:06 PG_VERSION drwx------ 2 postgres postgres 6 Aug 31 16:06 pg_tblspc drwx------ 2 postgres postgres 6 Aug 31 16:06 pg_stat_tmp drwx------ 2 postgres postgres 6 Aug 31 16:06 pg_stat drwx------ 2 postgres postgres 6 Aug 31 16:06 pg_replslot -rw------- 1 postgres postgres 23003 Aug 31 16:06 postgresql.conf -rw------- 1 postgres postgres 88 Aug 31 16:06 postgresql.auto.conf -rw------- 1 postgres postgres 1636 Aug 31 16:06 pg_ident.conf -rw------- 1 postgres postgres 4269 Aug 31 16:06 pg_hba.conf drwx------ 2 postgres postgres 18 Aug 31 16:06 pg_xact drwx------ 3 postgres postgres 60 Aug 31 16:06 pg_wal drwx------ 2 postgres postgres 18 Aug 31 16:06 pg_subtrans drwx------ 2 postgres postgres 18 Aug 31 16:06 pg_notify drwx------ 2 postgres postgres 4096 Aug 31 16:06 global drwx------ 5 postgres postgres 41 Aug 31 16:06 base drwx------ 4 postgres postgres 68 Aug 31 16:06 pg_logical drwx------ 2 postgres postgres 6 Aug 31 16:06 log [root@pruebas system]#
Iniciamos nuestro servicio de postgresql
[root@pruebas system]# systemctl start postgresql.service [root@pruebas system]#
Revisamos el status del servicio
[root@pruebas system]# systemctl status postgresql.service ● postgresql.service - PostgreSQL database server Loaded: loaded (/usr/lib/systemd/system/postgresql.service; disabled; vendor preset: disabled) Drop-In: /etc/systemd/system/postgresql.service.d └─override.conf Active: active (running) since Thu 2023-08-31 16:08:04 -05; 2s ago Process: 37365 ExecStartPre=/usr/libexec/postgresql-check-db-dir postgresql (code=exited, status=0/SUCCESS) Main PID: 37367 (postmaster) Tasks: 8 (limit: 24847) Memory: 16.0M CGroup: /system.slice/postgresql.service ├─37367 /usr/bin/postmaster -D /var/lib/pgsql/10/data ├─37369 postgres: logger process ├─37371 postgres: checkpointer process ├─37372 postgres: writer process ├─37373 postgres: wal writer process ├─37374 postgres: autovacuum launcher process ├─37375 postgres: stats collector process └─37376 postgres: bgworker: logical replication launcher Aug 31 16:08:03 pruebas.unixpad.local systemd[1]: Starting PostgreSQL database server... Aug 31 16:08:04 pruebas.unixpad.local postmaster[37367]: 2023-08-31 16:08:04.348 -05 [37367] LOG: listening on IPv6 address "::1", port 5432 Aug 31 16:08:04 pruebas.unixpad.local postmaster[37367]: 2023-08-31 16:08:04.348 -05 [37367] LOG: listening on IPv4 address "127.0.0.1", port 5432 Aug 31 16:08:04 pruebas.unixpad.local postmaster[37367]: 2023-08-31 16:08:04.379 -05 [37367] LOG: listening on Unix socket "/var/run/postgresql/.s.PGSQL.5432" Aug 31 16:08:04 pruebas.unixpad.local postmaster[37367]: 2023-08-31 16:08:04.428 -05 [37367] LOG: listening on Unix socket "/tmp/.s.PGSQL.5432" Aug 31 16:08:04 pruebas.unixpad.local postmaster[37367]: 2023-08-31 16:08:04.470 -05 [37367] LOG: redirecting log output to logging collector process Aug 31 16:08:04 pruebas.unixpad.local postmaster[37367]: 2023-08-31 16:08:04.470 -05 [37367] HINT: Future log output will appear in directory "log". Aug 31 16:08:04 pruebas.unixpad.local systemd[1]: Started PostgreSQL database server. [root@pruebas system]#
Y esto es todo. Hemos configurado el servicio de postgresql en otro directorio distinto al que configura por default.
Saludos.