He compilado e instalado con éxito la última versión de PostgreSQL (17.4) en Ubuntu ARM32.

Los comandos de este artículo provienen principalmente de la documentación oficial de PostgreSQL. Ya he probado cada comando de este artículo.

Puede ver los sistemas donde la instalación fue exitosa aquí Granja de construcción de PostgreSQL

Compilar e instalar PostgreSQL 17.4

1. Crear un directorio y entrar en él

mkdir postgresql && cd postgresql
  • mkdir postgresql: Crea un nuevo directorio llamado postgresql.
  • cd postgresql: Entra en el directorio postgresql recién creado.

2. Descargar el código fuente de PostgreSQL

wget https://ftp.postgresql.org/pub/source/v17.4/postgresql-17.4.tar.bz2
  • wget: Descarga un archivo desde la URL especificada.
  • https://..../postgresql-17.4.tar.bz2: Enlace de descarga del paquete de código fuente comprimido de la versión 17.4 de PostgreSQL. Si el enlace no funciona, puede buscar un nuevo enlace usted mismo.

3. Descomprimir el paquete de código fuente

tar xjf postgresql-17.4.tar.bz2
  • tar: Se utiliza para procesar archivos comprimidos .tar.

  • xjf: Opciones para descomprimir archivos tar:

    • x: Descomprimir el archivo.
    • j: Utiliza el formato de compresión bzip2 (.bz2).
    • f: Especifica el archivo a descomprimir.
  • postgresql-17.4.tar.bz2: El nombre del archivo a descomprimir.

4. Entrar en el directorio del código fuente descomprimido

cd postgresql-17.4
  • Entra en el directorio del código fuente descomprimido de PostgreSQL 17.4.

5. Instalar los paquetes de dependencia

sudo apt install libssl-dev libsystemd-dev libxml2-dev libreadline-dev
  • sudo apt install: Utiliza el gestor de paquetes apt para instalar los paquetes.
  • libssl-dev, libsystemd-dev, libxml2-dev, libreadline-dev: Instala las bibliotecas de desarrollo necesarias para compilar PostgreSQL, que son la biblioteca SSL, la biblioteca Systemd, la biblioteca XML y la biblioteca Readline, respectivamente.

6. Configurar las opciones de compilación

./configure --prefix=/usr/local/pgsql --with-openssl --with-libxml --with-systemd
  • ./configure: Prepara el entorno de compilación de PostgreSQL.
  • --prefix=/usr/local/pgsql: Especifica el directorio de instalación de PostgreSQL como /usr/local/pgsql.
  • --with-openssl: Habilita el soporte de OpenSSL.
  • --with-libxml: Habilita el soporte de XML.
  • --with-systemd: Habilita el soporte de Systemd.

7. Compilar el código fuente

make -j$(nproc)
  • make: Inicia el proceso de compilación.
  • -j$(nproc): Utiliza nproc (el número de núcleos de CPU del sistema) para ejecutar tareas de compilación en paralelo, acelerando el proceso de compilación.

8. Instalar PostgreSQL

sudo make install
  • sudo make install: Utiliza sudo para ejecutar la instalación con permisos de administrador, make install instala los archivos compilados en el sistema, instalándolos en el directorio /usr/local/pgsql especificado en el comando ./configure anterior.

9. Establecer variables de entorno

Utilice un editor de texto 1. Edite el archivo /etc/profile:

sudo nano /etc/profile
  • sudo: Indica que el comando se ejecuta con permisos de superusuario (administrador). Esto se debe a que la modificación del archivo /etc/profile requiere permisos de administrador.
  • nano: Este es un editor de texto, que se utiliza a menudo para editar archivos en un entorno de terminal.
  • /etc/profile: Este es un archivo de configuración global, que se utiliza para establecer variables de entorno y configuraciones de inicio en todo el sistema. Todos los usuarios ejecutarán la configuración en este archivo al iniciar sesión en el sistema.
  1. Agregar variables de entorno:
export PATH=/usr/local/pgsql/bin:$PATH
  • export: Se utiliza para establecer una variable de entorno, haciéndola disponible en el proceso actual y en los subprocesos.
  • PATH: Esta es una variable de entorno que contiene una lista de directorios de archivos ejecutables en el sistema. Cuando se ejecuta un comando, el sistema busca el comando de acuerdo con los directorios enumerados en la variable PATH.
  • /usr/local/pgsql/bin: Este es el directorio de archivos ejecutables de la base de datos PostgreSQL, agregarlo significa que los archivos ejecutables en este directorio (como psql) serán reconocidos por el sistema.
  • :$PATH: Aquí, $PATH representa la ruta original existente, y la nueva ruta /usr/local/pgsql/bin se agrega al principio de la PATH original. De esta forma, el sistema primero comprobará el nuevo directorio y luego comprobará la ruta original.

La función de este comando es agregar el directorio de archivos ejecutables de PostgreSQL a la variable de entorno PATH del sistema, asegurando que los comandos de PostgreSQL (como psql) se puedan ejecutar directamente en la línea de comandos sin proporcionar la ruta completa. La configuración modificada se aplica a todos los usuarios.

Inicializar la base de datos PostgreSQL

Estos comandos se utilizan principalmente para configurar manualmente el servidor de base de datos PostgreSQL en un servidor Linux, incluida la creación de un usuario del sistema PostgreSQL, la inicialización de la base de datos, el inicio del servicio de base de datos y su registro como un servicio systemd para que se inicie automáticamente al arrancar.

1. Crear un usuario de PostgreSQL

sudo useradd -m -U -r -d /var/lib/postgresql -s /bin/bash postgres
  • sudo: Ejecuta el comando con permisos de superusuario.
  • useradd: Crea un nuevo usuario.
  • -m: Crea el directorio home del usuario.
  • -U: Crea también un grupo de usuarios con el mismo nombre que el nombre de usuario.
  • -r: Crea un usuario del sistema (el UID del usuario del sistema es inferior a 1000, no se utiliza para iniciar sesión).
  • -d /var/lib/postgresql: Especifica el directorio home como /var/lib/postgresql.
  • -s /bin/bash: Especifica el shell como /bin/bash.
  • postgres: Nombre de usuario.

Este comando crea un usuario del sistema dedicado a PostgreSQL llamado postgres.


2. Cambiar el propietario del directorio PostgreSQL

sudo chown postgres /usr/local/pgsql
  • chown postgres /usr/local/pgsql: Cambia el propietario del directorio /usr/local/pgsql al usuario postgres, para que pueda leer y escribir en el directorio.

3. Establecer la contraseña del usuario de PostgreSQL

sudo passwd postgres
  • passwd postgres: Modifica la contraseña del usuario postgres.

4. Cambiar al usuario de PostgreSQL

su postgres
  • su postgres: Cambia al usuario postgres para poder utilizar los comandos relacionados con PostgreSQL.

5. Inicializar la base de datos

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
  • initdb -D /usr/local/pgsql/data: Inicializa el almacenamiento de la base de datos en el directorio /usr/local/pgsql/data.

6. Iniciar la base de datos PostgreSQL

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
  • postgres -D /usr/local/pgsql/data: Inicia la base de datos como un proceso postgres, y los datos se almacenan en el directorio /usr/local/pgsql/data.

7. En otra sesión de terminal, entrar en la base de datos

su postgres
/usr/local/pgsql/bin/psql
  • psql: La herramienta de interacción de línea de comandos de PostgreSQL, entra en el shell de la base de datos.

8. Establecer la contraseña del usuario de la base de datos

ALTER USER postgres WITH PASSWORD 'your_new_password';
  • Modifica la contraseña del usuario de la base de datos postgres.

9. Crear un servicio systemd

sudo nano /etc/systemd/system/postgresql.service
  • nano /etc/systemd/system/postgresql.service: Edita el archivo de configuración de systemd para que PostgreSQL pueda ejecutarse como un servicio.

Contenido del archivo de configuración:

[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: Describe que este servicio es el servidor PostgreSQL.
  • After=network-online.target: Espera a que la conexión de red esté disponible antes de iniciar PostgreSQL.
  • User=postgres: Se ejecuta como el usuario postgres.
  • ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data: Inicia el servidor PostgreSQL.
  • ExecReload=/bin/kill -HUP $MAINPID: Envía la señal HUP al recargar.
  • KillMode=mixed: Modo de terminación mixto.
  • KillSignal=SIGINT: La señal para terminar el proceso PostgreSQL.
  • TimeoutSec=infinity: El tiempo de espera se establece en infinito.

10. Habilitar el servicio systemd

sudo systemctl daemon-reload
sudo systemctl start postgresql
sudo systemctl status postgresql
sudo systemctl enable postgresql
  • daemon-reload: Recarga la configuración de systemd para que el nuevo postgresql.service entre en vigor.
  • start postgresql: Inicia el servicio PostgreSQL.
  • status postgresql: Comprueba el estado de funcionamiento de PostgreSQL.
  • enable postgresql: Inicia PostgreSQL automáticamente al arrancar.

El propósito de estos comandos es:

  1. Crear un usuario postgres dedicado a ejecutar PostgreSQL.
  2. Inicializar el directorio de almacenamiento de la base de datos.
  3. Iniciar la base de datos PostgreSQL y entrar en la línea de comandos interactiva psql.
  4. Configurar systemd para que PostgreSQL se ejecute como un servicio del sistema y admita el inicio automático al arrancar.

De esta forma, el servidor PostgreSQL puede funcionar normalmente y puede iniciarse automáticamente al iniciar el sistema.

Referencias

PostgreSQL: Documentación: 17: Capítulo 17. Instalación desde el código fuente

Otras versiones de esta página web

Este artículo tiene versiones en varios idiomas.

Si desea publicar un comentario, visite la siguiente página web:

ZH EN ZH-TW JA

Estas páginas web solo admiten la navegación, no pueden publicar comentarios ni mensajes, pero ofrecen más opciones de idiomas y tienen tiempos de carga más cortos:

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

Este artículo fue traducido de Chinese (Simplified) a Spanish por AI.