Вопрос или проблема
У меня есть программное обеспечение, которое требует 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, лучше установить новую версию параллельно с уже установленными пакетами. Для этого выполните следующие действия:
-
Скачивание исходного кода:
Загрузите последнюю версию Berkeley DB (например, версия 4.5.20) с официального сайта Oracle Berkeley DB. Убедитесь, что используете архив, совместимый с вашим дистрибутивом. -
Компиляция из исходников:
Распакуйте загруженный архив и выполните следующие команды в терминале: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: Обновление текущего окружения
-
Обновление переменных окружения:
После установки новой версии, вам нужно указать системе, где искать заголовочные файлы и библиотеки. Для этого добавьте следующие строки в ваш~/.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 на устаревшей системе может вызвать определенные сложности из-за зависимости и конфликта библиотек, но установка новой версии параллельно и корректная настройка окружения являются безопасным и ответственным способом решения проблемы. Если возникнут дополнительные вопросы, не стесняйтесь задавать.