Вопрос или проблема
Мой производственный сервер – это Linux с ограниченным файрволом. Я собирался установить PostgreSQL 12 и PostGIS. Я скачал как PostgreSQL, так и общие пакеты rpm и скопировал их на свою виртуальную машину с Linux с помощью следующего репозитория:
[pgdg12]
name=PostgreSQL 12 для RHEL8
baseurl=file:///repos12-84/12/redhat/rhel-8.4-x86_64/
enabled=1
gpgcheck=0
[pgdgextras12]
name=PostgreSQL Extras для RHEL8
baseurl=file:///common_repos/common/redhat/rhel-8-x86_64/
enabled=1
gpgcheck=0
Я успешно установил PostgreSQL, но у меня возникли проблемы с установкой PostGIS. Когда я выполняю “dnf install postgis31_12.x86_64”, я получаю следующие ошибки:
Версия DNF: 4.4.2 Команда: dnf install postgis31_12.x86_64
Installroot: / Releasever: 8 cachedir: /var/cache/dnf Основная команда:
install Дополнительные команды: [‘install’, ‘postgis31_12.x86_64’] User-Agent:
сформирован: ‘libdnf (Red Hat Enterprise Linux 8.4; generic;
Linux.x86_64)’ репозиторий: использует кэш для: pgdg12 pgdg12: использует метаданные
с Чт 11 Ноя 2021 18:40:59 +04. репозиторий: использует кэш для:
pgdgextras12 pgdgextras12: использует метаданные с Сб 02 Ноя 2024
20:18:14 +04. Последняя проверка истечения метаданных: 0:09:04 назад в Ср 06
Ноя 2024 03:27:18 +04. таймер: настройка пакетов: 289 мс Плагин завершения:
Генерация кэша завершения…
–> Начало разрешения зависимостей
–> Завершено разрешение зависимостей таймер: depsolve: 59 мсТрассировка (последний вызов последним): Файл
“/usr/lib/python3.6/site-packages/dnf/cli/main.py”, строка 130, в
cli_run
ret = resolving(cli, base) Файл “/usr/lib/python3.6/site-packages/dnf/cli/main.py”, строка 166, в
resolving
base.resolve(cli.demands.allow_erasing) Файл “/usr/lib/python3.6/site-packages/dnf/base.py”, строка 843, в resolve
raise exc dnf.exceptions.DepsolveError: Проблема: невозможно установить лучший кандидат для работы
- ничего не предоставляет hdf5, необходимый для postgis31_12-3.1.4-1.rhel8.x86_64
- ничего не предоставляет xerces-c, необходимый для postgis31_12-3.1.4-1.rhel8.x86_64 Ошибка: Проблема: невозможно установить
лучший кандидат для работы- ничего не предоставляет hdf5, необходимый для postgis31_12-3.1.4-1.rhel8.x86_64
- ничего не предоставляет xerces-c, необходимый для postgis31_12-3.1.4-1.rhel8.x86_64 (попробуйте добавить ‘–skip-broken’, чтобы пропустить
недоступные для установки пакеты или ‘–nobest’, чтобы использовать не только лучшие
кандидатные пакеты) Очистка.
Ответ или решение
Как установить PostGIS оффлайн на RedHat 8
Установка PostGIS на сервере с ограниченным доступом к интернету может представлять определенные трудности, особенно учитывая наличие зависимостей, которые необходимо учитывать. В данном руководстве мы рассмотрим, как правильно установить PostGIS на RedHat 8, используя локальные репозитории и преодолевая проблему с зависимостями.
Шаг 1: Подготовка локального репозитория
Сначала убедитесь, что вы правильно создали структуру локального репозитория и что все необходимые RPM-пакеты для PostgreSQL и PostGIS находятся в доступных директориях. В вашем случае репозитории выглядят следующим образом:
[pgdg12]
name=PostgreSQL 12 for RHEL8
baseurl=file:///repos12-84/12/redhat/rhel-8.4-x86_64/
enabled=1
gpgcheck=0
[pgdgextras12]
name=PostgreSQL Extras for RHEL8
baseurl=file:///common_repos/common/redhat/rhel-8-x86_64/
enabled=1
gpgcheck=0
Убедитесь, что в директориях /repos12-84/12/redhat/rhel-8.4-x86_64/
и /common_repos/common/redhat/rhel-8-x86_64/
находятся все необходимые RPM-пакеты, включая зависимости.
Шаг 2: Загрузка необходимых зависимостей
Из вывода команды dnf install postgis31_12.x86_64
видно, что отсутствуют две зависимости: hdf5 и xerces-c. Вам необходимо скачать соответствующие RPM-файлы для этих пакетов и добавить их в ваш локальный репозиторий.
Вот как вы можете это сделать:
-
На другом компьютере с интернетом выполните команды для получения RPM:
dnf install --downloadonly --resolve hdf5 xerces-c
Это создаст папку с директориями, содержащими необходимые RPM.
-
Скопируйте файлы для hdf5 и xerces-c в соответствующий локальный репозиторий, который вы создали ранее.
Шаг 3: Обновление метаданных
После подтверждения наличия всех необходимых пакетов в локальном репозитории, обновите кэш DNF для создания соответствующих метаданных. Это можно сделать с помощью команды:
dnf clean all
dnf makecache
Шаг 4: Установка PostGIS
Теперь вы можете попробовать снова установить PostGIS с учетом всех зависимостей. Выполните следующую команду:
dnf install postgis31_12.x86_64
Шаг 5: Проверка установки
После завершения установки вам следует проверить, что PostGIS установлен и правильно сконфигурирован. Это можно сделать при помощи следующей команды в PostgreSQL:
SELECT PostGIS_Version();
Если всё сделано правильно, вы увидите версию PostGIS, подтверждая успешную установку.
Заключение
Установка PostGIS в оффлайн-режиме на RedHat 8 требует внимательного подхода к управлению зависимостями. Убедитесь, что все необходимые RPM-пакеты доступны в вашем локальном репозитории, и выполните установку. Следуя вышеописанным шагам, вы сможете решить проблемы с зависимостями и успешно установить PostGIS на своем сервере.