Назад | Перейти на главную страницу

Установка gearmand не выполняется из-за зависимости от libevent

Я установил репозиторий PostgreSQL yum, и PostgreSQL уже некоторое время работает, но теперь, когда я пытаюсь установить gearmand Я получаю следующие ошибки:

Transaction Check Error:
  file /usr/bin/event_rpcgen.py from install of compat-libevent14-1.4.13-1.rhel6.x86_64 conflicts with file from package libevent-devel-2.0.12-1.rhel6.x86_64
  file /usr/lib64/libevent_core.a from install of compat-libevent14-1.4.13-1.rhel6.x86_64 conflicts with file from package libevent-devel-2.0.12-1.rhel6.x86_64
  file /usr/lib64/libevent_core.so from install of compat-libevent14-1.4.13-1.rhel6.x86_64 conflicts with file from package libevent-devel-2.0.12-1.rhel6.x86_64
  file /usr/lib64/libevent_extra.a from install of compat-libevent14-1.4.13-1.rhel6.x86_64 conflicts with file from package libevent-devel-2.0.12-1.rhel6.x86_64
  file /usr/lib64/libevent_extra.so from install of compat-libevent14-1.4.13-1.rhel6.x86_64 conflicts with file from package libevent-devel-2.0.12-1.rhel6.x86_64

Это связано с тем, что libevent поступает из репозитория postgresql, поэтому я подумал, что просто отключу репозиторий postgresql и попробую еще раз:

yum --disablerepo=pgdg91 install gearmand

Error: Package: gearmand-0.14-3.el6.2.x86_64 (epel)
       Requires: libevent-1.4.so.2()(64bit)
       Available: libevent-1.4.13-1.el6.x86_64 (base)
           libevent-1.4.so.2()(64bit)
       Installed: libevent-2.0.12-1.rhel6.x86_64 (@pgdg91)
           Not found

Есть ли способ сохранить версию libevent, используемую postgresql, и одновременно установить gearmand (с правильной версией libevent)? Или я что-то упускаю из виду и есть другой (возможно, лучший) способ?

Используя репозиторий postgresql yum, вы нарушили двоичную совместимость в вашей системе CentOS / RHEL. Это означает, что есть пакеты (например, libevent), которые этот репозиторий обновляет / заменяет, и которые несовместимы с другими пакетами, предоставляемыми CentOS / RHEL после установки.

В частности, ваше репозиторий postgresql заменил libevent-1.4, который поставляется с RHEL, с libevent-2.0, предоставленным postgresql, и библиотека совместимости 1.4, которую также предоставляет postgresql, не работает.

Этот конкретный пакет, gearmand, поступает из репозитория epel, поэтому вы можете попробовать восстановить его из исходного RPM, используя такую ​​команду, как:

yumdownloader --source gearmand
rpmbuild --rebuild gearmand-0.14-3.el6.2.src.rpm

Затем установите получившийся RPM.

Имейте в виду, что для этого может потребоваться более обширная работа по массажу исходного пакета RPM для принятия новых версий библиотек или может вызвать другие проблемы в будущем, но это отправная точка. Если это не удастся, вы можете вручную собрать пакет с исходным кодом, но тогда становится трудно удалить или обновить его позже, поэтому по возможности создайте исходный RPM.

Я предполагаю, что было бы лучше вручную скомпилировать gearmand следующим образом: 1) Скомпилируйте и установите libevent в нестандартный каталог:

wget --no-check-certificate https://github.com/downloads/libevent/libevent/libevent-2.0.19-stable.tar.gz
tar xvfz libevent-2.0.19-stable.tar.gz
cd libevent-2.0.19-stable
./configure --prefix /opt/libevent && make && make install

2) Скомпилируйте gearmand, используя что-то вроде:

wget https://launchpad.net/gearmand/trunk/0.33/+download/gearmand-0.33.tar.gz
tar xvfz gearmand-0.33.tar.gz
cd gearmand-0.33
export LDFLAGS='LDFLAGS=-L/opt/libevent'
./configure && make && make install

Пожалуйста, дайте мне знать, если это поможет.