Генерация обратной зависимости с помощью zypper
С zypper
Я могу получить пакет A, который зависит от пакета B. Однако мне нужно знать, какие пакеты зависят от пакета B.
Есть ли способ создания списка обратной зависимости?
6 ответов
Решение
Допустим, вы хотите знать, кто зависит от libpng14
В тсш:
zypper search -i | cut -d \| -f 2 | tr -s '\n' ' ' > z.txt
foreach i ( `cat z.txt` )
zypper info --requires $i |grep libpng14 &&echo $i
end
И через некоторое время вы начнете получать результаты, такие как:
libpng14.so.14()(64bit)
libpng14.so.14(PNG14_0)(64bit)
DirectFB
libpng14.so.14()(64bit)
libpng14.so.14(PNG14_0)(64bit)
MPlayer
Однако вам необходимо отделить пакеты от сообщений grep.
Вы можете искать (сокращенно "se") пакеты, для которых требуется определенный пакет:
zypper se - требует имя_пакета
Также вы можете искать только среди установленных пакетов с:
zypper se -i - требует имя_пакета
Например, для поиска пакетов, требующих libpng:
# zypper se -i --requires libpng
Loading repository data...
Reading installed packages...
S | Name | Summary | Type
--+-----------------------------+---------------------------------------------------------------------+--------
i | DirectFB | Graphics Library for Framebuffer Devices | package
i | MPlayer | Multimedia Player | package
i | cairo-devel | Development environment for cairo | package
etc.
# zypper se --requires-pkg packagename
# zypper help search | grep -A1 requires-pkg
--requires-pkg Search for all packages that require any of the provides of the
package(s) matched by the input parameters.
Если он уже установлен, вы можете использовать rpm --whatrequires:
--whatrequires CAPABILITY
Query all packages that require CAPABILITY for proper functioning.
Note that this does not return what requires a given package.
Если нет, то вам [нам] сейчас не повезло.
Надеюсь, это пригодится:
betatester@myryzen:~/tmp> rpm -qi --requires \`rpm -qa | grep 'package-name'\`