Обновление rpm Berkeley DB в операционной системе CentOS

Вопрос или проблема

У меня есть программное обеспечение, которое требует Berkeley DB 4.5 или выше.

Но на моем сервере CentOS 5.11 x86_64 установлено:

  • Пакет db4-4.3.29-10.el5_5.2.x86_64 уже установлен и является последней версией
  • Пакет db4-4.3.29-10.el5_5.2.i386 уже установлен и является последней версией

Как я могу обновить эти rpm до более новой версии?
Я попытался обновить, используя rpm Centos 6.6 следующим образом:

rpm -Uvh ftp://195.220.108.108/linux/centos/6.6/os/x86_64/Packages/db4-4.7.25-18.el6_4.i686.rpm

но я получил эту ошибку:

Извлечение ftp://195.220.108.108/linux/centos/6.6/os/x86_64/Packages/db4-4.7.25-18.el6_4.i686.rpm
предупреждение: /var/tmp/rpm-xfer.IKWqHE: Заголовок V3 RSA/SHA1 подпись: NOKEY, ключ ID c105b9de
ошибка: Неудовлетворенные зависимости:
        rpmlib(FileDigests) <= 4.6.0-1 требуется пакету db4-4.7.25-18.el6_4.i686
        rpmlib(PayloadIsXz) <= 5.2-1 требуется пакету db4-4.7.25-18.el6_4.i686
        db4 >= 4.4.0 конфликтует с pam-0.99.6.2-12.el5.i386
        db4 >= 4.4.0 конфликтует с pam-0.99.6.2-12.el5.x86_64
        libdb-4.3.so требуется для (установленного) subversion-1.6.11-12.el5_10.i386
        libdb-4.3.so требуется для (установленного) pam_ccreds-3-5.i386
        libdb-4.3.so требуется для (установленного) apr-util-1.2.7-11.el5_5.2.i386
        libdb-4.3.so требуется для (установленного) db4-devel-4.3.29-10.el5_5.2.i386
        libdb_cxx-4.3.so требуется для (установленного) db4-devel-4.3.29-10.el5_5.2.i386

Я также попытался скомпилировать из источника db-4.5.20.tar.gz. Я скомпилировал его без проблем, однако мое программное обеспечение все еще видит установленную версию Berkley DB из rpm пакета db4-4.3.29.

Пожалуйста, помогите?

Неочевидный ответ здесь заключается в том, чтобы установить Еще одну Версию Berkeley DB параллельно с уже существующей. Затем соберите с использованием недавно установленных заголовков/библиотек, используя флаги -I/usr/include/db-X.Y и -ldb-X.Y при сборке.

Самый простой способ избежать “системных” заголовков (т.е. #include "db.h") и библиотек (т.е. -ldb) во время сборки — это (временно) удалить пакет db4-devel, чтобы гарантировать, что ваша сборка использует флаги -I/usr/include/db-X.Y и -ldb-X.Y во время сборки. Переустановите db4-devel после этого.

Ответ или решение

Для обновления Berkeley DB на сервере CentOS 5.11 x86_64, необходимо учесть несколько моментов, так как стандартные пакеты, которые вы пытаетесь установить, имеют конфликтующие зависимости из-за различий между версиями. Вот пошаговое руководство по улучшению установленной версии Berkeley DB, учитывая текущую конфигурацию и требуемые параметры для вашего программного обеспечения.

Шаг 1: Проверка требований

Перед тем как предпринимать действия, убедитесь, что ваше программное обеспечение действительно требует Berkeley DB версии 4.5 или выше. Вам также нужно подтвердить, что ваше окружение совместимо с новой версией.

Шаг 2: Установка дополнительной версии Berkeley DB

Чтобы избежать конфликтов с уже установленными версиями Berkeley DB, лучше установить новую версию параллельно с уже установленными пакетами. Для этого выполните следующие действия:

  1. Скачивание исходного кода:
    Загрузите последнюю версию Berkeley DB (например, версия 4.5.20) с официального сайта Oracle Berkeley DB. Убедитесь, что используете архив, совместимый с вашим дистрибутивом.

  2. Компиляция из исходников:
    Распакуйте загруженный архив и выполните следующие команды в терминале:

    cd путь/к/распакованному/каталогу/db-4.5.20/build_unix
    ../dist/configure --prefix=/usr/local/BerkeleyDB.4.5
    make
    sudo make install

    В этом случае, Berkeley DB будет установлена в /usr/local/BerkeleyDB.4.5, что предотвращает конфликты с системными библиотеками.

Шаг 3: Обновление текущего окружения

  1. Обновление переменных окружения:
    После установки новой версии, вам нужно указать системе, где искать заголовочные файлы и библиотеки. Для этого добавьте следующие строки в ваш ~/.bash_profile или ~/.bashrc:

    export LD_LIBRARY_PATH=/usr/local/BerkeleyDB.4.5/lib:$LD_LIBRARY_PATH
    export C_INCLUDE_PATH=/usr/local/BerkeleyDB.4.5/include:$C_INCLUDE_PATH

    Затем обновите ваши переменные окружения:

    source ~/.bash_profile

Шаг 4: Компиляция вашего приложения

Теперь, когда у вас установлена новая версия Berkeley DB и обновлены переменные среды, вы можете скомпилировать ваше приложение, указывая новые пути:

gcc -I/usr/local/BerkeleyDB.4.5/include -L/usr/local/BerkeleyDB.4.5/lib -ldb-4.5 ваш_код.c -o ваше_приложение

Шаг 5: Проверка установки

После успешной сборки приложения запустите его, чтобы авторизовать, что оно использует новую версию библиотеки Berkeley DB. Вы можете использовать команду ldd:

ldd ваше_приложение

Проверьте, что оно ссылается на библиотеки из /usr/local/BerkeleyDB.4.5/lib.

Шаг 6: Восстановление состояния

Если вам необходимо вернуть оригинальное состояние системы, просто переустановите пакет db4-devel, который может потребоваться для других программ:

sudo yum install db4-devel

Итог

Обновление Berkeley DB на устаревшей системе может вызвать определенные сложности из-за зависимости и конфликта библиотек, но установка новой версии параллельно и корректная настройка окружения являются безопасным и ответственным способом решения проблемы. Если возникнут дополнительные вопросы, не стесняйтесь задавать.

Оцените материал
Добавить комментарий

Капча загружается...