Генерация обратной зависимости с помощью 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. 

Если нет, то вам [нам] сейчас не повезло.

Это работает:

rpm -e --test PKGNAME

Источник: man rpm

Надеюсь, это пригодится:

betatester@myryzen:~/tmp> rpm -qi --requires \`rpm -qa | grep 'package-name'\`
Другие вопросы по тегам