Я успешно скомпилировал и установил последнюю версию PostgreSQL (17.4) на Ubuntu ARM32.

Команды в этой статье в основном взяты из официальной документации PostgreSQL. Я лично протестировал каждую команду в этой статье.

Успешную установку можно увидеть здесь: Ферма сборки PostgreSQL

Компиляция и установка PostgreSQL 17.4

1. Создание каталога и переход в него

mkdir postgresql && cd postgresql
  • mkdir postgresql: Создает новый каталог с именем postgresql.
  • cd postgresql: Переходит в только что созданный каталог postgresql.

2. Загрузка исходного кода PostgreSQL

wget https://ftp.postgresql.org/pub/source/v17.4/postgresql-17.4.tar.bz2
  • wget: Загружает файл из указанного URL.
  • https://..../postgresql-17.4.tar.bz2: Ссылка для скачивания сжатого пакета исходного кода PostgreSQL версии 17.4. Если ссылка недействительна, вы можете найти новую ссылку самостоятельно.

3. Распаковка пакета исходного кода

tar xjf postgresql-17.4.tar.bz2
  • tar: Используется для обработки .tar сжатых файлов.

  • xjf: Опции для распаковки tar файла:

    • x: Извлечь файлы.
    • j: Использовать формат сжатия bzip2 (.bz2).
    • f: Указать имя файла для распаковки.
  • postgresql-17.4.tar.bz2: Имя файла для распаковки.

4. Переход в распакованный каталог с исходным кодом

cd postgresql-17.4
  • Переход в распакованный каталог исходного кода PostgreSQL 17.4.

5. Установка пакетов зависимостей

sudo apt install libssl-dev libsystemd-dev libxml2-dev libreadline-dev
  • sudo apt install: Использовать менеджер пакетов apt для установки пакетов.
  • libssl-dev, libsystemd-dev, libxml2-dev, libreadline-dev: Установка библиотек разработки, необходимых для компиляции PostgreSQL: библиотеки SSL, библиотеки Systemd, библиотеки XML и библиотеки Readline.

6. Настройка параметров компиляции

./configure --prefix=/usr/local/pgsql --with-openssl --with-libxml --with-systemd
  • ./configure: Подготавливает среду для компиляции PostgreSQL.
  • --prefix=/usr/local/pgsql: Указывает каталог установки PostgreSQL как /usr/local/pgsql.
  • --with-openssl: Включает поддержку OpenSSL.
  • --with-libxml: Включает поддержку XML.
  • --with-systemd: Включает поддержку Systemd.

7. Компиляция исходного кода

make -j$(nproc)
  • make: Запускает процесс компиляции.
  • -j$(nproc): Использует nproc (количество ядер CPU в системе) для параллельного выполнения задач компиляции, чтобы ускорить процесс компиляции.

8. Установка PostgreSQL

sudo make install
  • sudo make install: Использует sudo для выполнения установки с правами администратора. make install устанавливает скомпилированные файлы в систему, в каталог /usr/local/pgsql, указанный в предыдущей команде ./configure.

9. Настройка переменных среды

Используйте текстовый редактор 1. Редактирование файла /etc/profile:

sudo nano /etc/profile
  • sudo: Указывает на запуск команды с правами суперпользователя (администратора). Изменение файла /etc/profile требует прав администратора.
  • nano: Это текстовый редактор, который обычно используется для редактирования файлов в среде терминала.
  • /etc/profile: Это глобальный файл конфигурации, используемый для установки системных переменных среды и конфигурации запуска. Этот файл выполняется при входе в систему любого пользователя.
  1. Добавление переменных среды:
export PATH=/usr/local/pgsql/bin:$PATH
  • export: Используется для установки переменной среды, чтобы она была доступна в текущем и дочерних процессах.
  • PATH: Это переменная среды, содержащая список каталогов с исполняемыми файлами в системе. При выполнении команды система выполняет поиск команды в соответствии с каталогами, перечисленными в переменной PATH.
  • /usr/local/pgsql/bin: Это каталог исполняемых файлов базы данных PostgreSQL, добавление его означает, что исполняемые файлы в этом каталоге (например, psql) будут распознаваться системой.
  • :$PATH: Здесь $PATH представляет собой существующие пути, а новый путь /usr/local/pgsql/bin добавляется к существующему PATH. Таким образом, система сначала проверит новый каталог, а затем существующие пути.

Эта команда добавляет каталог исполняемых файлов PostgreSQL в системную переменную среды PATH, чтобы обеспечить возможность запуска команд PostgreSQL (например, psql) непосредственно из командной строки без указания полного пути. Изменения вступят в силу для всех пользователей.

Инициализация базы данных PostgreSQL

Эти команды в основном используются для ручной настройки сервера баз данных PostgreSQL на сервере Linux, включая создание системного пользователя PostgreSQL, инициализацию базы данных, запуск службы базы данных и регистрацию ее как службы systemd, чтобы ее можно было автоматически запускать при загрузке.

1. Создание пользователя PostgreSQL

sudo useradd -m -U -r -d /var/lib/postgresql -s /bin/bash postgres
  • sudo: Выполняет команду с правами суперпользователя.
  • useradd: Создает нового пользователя.
  • -m: Создает домашний каталог пользователя.
  • -U: Одновременно создает группу пользователей с тем же именем, что и имя пользователя.
  • -r: Создает системного пользователя (UID системного пользователя ниже 1000, не используется для входа в систему).
  • -d /var/lib/postgresql: Указывает домашний каталог как /var/lib/postgresql.
  • -s /bin/bash: Указывает оболочку как /bin/bash.
  • postgres: Имя пользователя.

Эта команда создает системного пользователя postgres, выделенного для PostgreSQL.


2. Изменение владельца каталога PostgreSQL

sudo chown postgres /usr/local/pgsql
  • chown postgres /usr/local/pgsql: Изменяет владельца каталога /usr/local/pgsql на пользователя postgres, чтобы он мог читать и записывать в этот каталог.

3. Установка пароля для пользователя PostgreSQL

sudo passwd postgres
  • passwd postgres: Изменяет пароль пользователя postgres.

4. Переключение на пользователя PostgreSQL

su postgres
  • su postgres: Переключается на пользователя postgres, чтобы можно было использовать команды, связанные с PostgreSQL.

5. Инициализация базы данных

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data
  • initdb -D /usr/local/pgsql/data: Инициализирует хранилище базы данных в каталоге /usr/local/pgsql/data.

6. Запуск базы данных PostgreSQL

/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data
  • postgres -D /usr/local/pgsql/data: Запускает базу данных в качестве процесса postgres, данные хранятся в каталоге /usr/local/pgsql/data.

7. В другом сеансе терминала войдите в базу данных

su postgres
/usr/local/pgsql/bin/psql
  • psql: Инструмент командной строки PostgreSQL, который используется для входа в оболочку базы данных.

8. Установка пароля пользователя базы данных

ALTER USER postgres WITH PASSWORD 'your_new_password';
  • Изменяет пароль пользователя базы данных postgres.

9. Создание службы systemd

sudo nano /etc/systemd/system/postgresql.service
  • nano /etc/systemd/system/postgresql.service: Редактирует файл конфигурации systemd, чтобы PostgreSQL можно было запустить как службу.

Содержимое файла конфигурации:

[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: Описывает службу как сервер PostgreSQL.
  • After=network-online.target: Запускает PostgreSQL после того, как сетевое соединение станет доступным.
  • User=postgres: Запускается от пользователя postgres.
  • ExecStart=/usr/local/pgsql/bin/postgres -D /usr/local/pgsql/data: Запускает сервер PostgreSQL.
  • ExecReload=/bin/kill -HUP $MAINPID: Отправляет сигнал HUP при перезагрузке.
  • KillMode=mixed: Смешанный режим завершения.
  • KillSignal=SIGINT: Сигнал для завершения процесса PostgreSQL.
  • TimeoutSec=infinity: Устанавливает бесконечное время ожидания.

10. Включение службы systemd

sudo systemctl daemon-reload
sudo systemctl start postgresql
sudo systemctl status postgresql
sudo systemctl enable postgresql
  • daemon-reload: Перезагружает конфигурацию systemd, чтобы новый postgresql.service вступил в силу.
  • start postgresql: Запускает службу PostgreSQL.
  • status postgresql: Проверяет состояние выполнения PostgreSQL.
  • enable postgresql: Включает автоматический запуск PostgreSQL при загрузке.

Цель этих команд:

  1. Создать пользователя postgres, специально предназначенного для запуска PostgreSQL.
  2. Инициализировать каталог хранения базы данных.
  3. Запустить базу данных PostgreSQL и войти в интерактивную командную строку psql.
  4. Настроить systemd для запуска PostgreSQL в качестве системной службы и поддержки автоматического запуска при загрузке.

Таким образом, сервер PostgreSQL может нормально работать и автоматически запускаться при запуске системы.

Справочные материалы

PostgreSQL: Документация: 17: Глава 17. Установка из исходного кода

Другие версии этой веб-страницы

Эта статья доступна на нескольких языках.

Если вы хотите оставить комментарий, посетите следующие веб-страницы:

ZH EN ZH-TW JA

Эти веб-страницы поддерживают только просмотр, а не публикацию комментариев или сообщений, но предлагают больше языковых опций и загружаются быстрее:

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

Эта статья переведена с Chinese (Simplified) на Russian с помощью AI.