Я успішно скомпілював та встановив останню версію 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: Вказує shell як /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 для взаємодії з базою даних, вхід у shell бази даних.

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) на Ukrainian за допомогою AI.