Для контекста я пытаюсь настроить сценарий 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