Вы «знаете, если шаблон [начинается с] '-', то следует использовать опцию -e», но вы не используете ее, когда должны. grep -e -example file1
даст вам ожидаемый результат.
Вот что на самом деле выполняется в каждом из ваших примеров:
grep -example file1
=> grep -e xample file1
(-e is necessary)grep '-example' file1
=> grep -e xample file1
(-e is necessary)grep "-example" file1
=> grep -example file1
(-e не требуется)Как уже упоминалось, другим пакетам могут потребоваться файлы или что-то еще из списка "предоставляет" пакета:
rpm -q --list openssl openssl-libs
rpm -q --provides openssl openssl-libs
Чтобы узнать, есть ли some "whatrequires" (не все):
rpm -e --test openssl openssl-libs
Перечислить all IMO невозможно напрямую с rpm
, но в случае yum
(не проверено) :
yes "N" | yum remove openssl openssl-libs
или
yum deplist openssl openssl-libs
или
repoquery --alldeps --whatrequires openssl openssl-libs
это просто означает, что никто явно не просит установить этот пакет; но некоторые пакеты могут зависеть от файлов, установленных другими пакетами. Например, на моей машине; никто не зависит от пакета; но некоторые зависят от библиотеки, предоставляемой пакетом:
$ rpm -q libopenssl1_0_0-32bit
libopenssl1_0_0-32bit-1.0.1i-18.1.x86_64 # whence this package is installed
$ rpm -q --whatrequires libopenssl1_0_0-32bit
no package requires libopenssl1_0_0-32bit
$ rpm -ql libopenssl1_0_0-32bit
/lib/engines
/lib/engines/libcapi.so
/lib/engines/libgmp.so
/lib/engines/libgost.so
/lib/engines/libpadlock.so
/lib/libcrypto.so.1.0.0
/lib/libssl.so.1.0.0
$ rpm -q --whatrequires libssl.so.1.0.0
libldap-2_4-2-32bit-2.4.41-14.1.x86_64
cups-libs-32bit-1.7.5-7.1.x86_64
EDIT из-за отредактированного вопроса:
вы можете использовать rpm -e --test
, чтобы узнать, какие это rpm. С помощью некоторой обработки bash вы можете получить чистый список:
$ rpm -e --test libopenssl1_0_0-32bit 2>&1 | grep needed | awk '{print $6}' | sort | uniq
cups-libs-32bit-1.7.5-7.1.x86_64
libldap-2_4-2-32bit-2.4.41-14.1.x86_64