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

Как я могу заставить rpm -q --whatprovides видеть те же библиотеки, что и yum?

Для контекста я пытаюсь настроить сценарий Chef, который обращается к стороннему установщику. В стороннем установщике есть такая функция:

isLibbz()
{
   rpm -q --whatprovides libbz2.so.1 >/dev/null 2>&1
   [ "$?" = "0" ] && return 1 || return 0
}

Благодаря Интернету я знаю, что в bzip2-libs есть пакет libbz2.so.1, поэтому я его установил (Chef использует для этого yum под прикрытием). Однако установщик по-прежнему не работает из-за вышеизложенного.

$ rpm -q --whatprovides libbz2.so.1
no package provides libbz2.so.1

У Yum, похоже, нет этой проблемы.

$ yum provides libbz2.so.1
Loaded plugins: auto-update-debuginfo, fastestmirror
Loading mirror speeds from cached hostfile
 * CentOS-Base: mirror.den1.denvercolo.net
bzip2-libs-1.0.6-13.el7.i686 : Libraries for applications using bzip2
Repo        : CentOS-Base
Matched from:
Provides    : libbz2.so.1

rpm также, кажется, достаточно хорошо находит установленную библиотеку.

$ rpm -q -l bzip2-libs
/usr/lib64/libbz2.so.1
/usr/lib64/libbz2.so.1.0.6
/usr/share/doc/bzip2-libs-1.0.6
/usr/share/doc/bzip2-libs-1.0.6/LICENSE

Я бы очень предпочел исправление, которое не связано с изменением гигантского установщика, который может измениться с новыми версиями программного обеспечения. Могу ли я что-нибудь сделать, чтобы rpm -q --whatprovides делал то, что хочет наш поставщик?

Вам нужно указать полный путь к файлу.

[root@centos75 ~]# rpm -q --whatprovides /usr/lib64/libbz2.so.1
bzip2-libs-1.0.6-13.el7.x86_64