Моя цель - найти ВСЕ обратные зависимости от определенного пакета и пакета исходного кода. Например, мне нужны все пакеты, которые зависят от libsslcommon2
, и исходный пакет, который можно установить через sudo apt-get source libsslcommon2
.
Из справочной страницы обратной зависимости я понимаю, что мне нужно:
sudo reverse-depends `libsslcommon2`
, которая работает нормально. Однако
sudo reverse-depends src:libsslcommon2
возвращает
reverse-depends: Error: Unknown package
Тот же синтаксис работает для src:bash
, хотя (как упомянуто на странице руководства).
NB: Это хорошо работает для установки / загрузки исходных текстов для bash и libsslcommon2 через
sudo apt-get source libsslcommon2
sudo apt-get source bash
В чем здесь проблема? Как я могу определить все пакеты, которые зависят от исходного пакета libsslcommon?
TL; DR: можно использовать reverse-depends src:$(what-source libsslcommon2)
.
Существует нет libsslcommon2
исходный пакет. Вместо этого libsslcommon2
один из многих двоичных пакетов, созданных из qpid-cpp
исходный пакет. В целом двоичный пакет может или не может иметь того же имени как исходный пакет, используемый для создания его, и исходные пакеты могут обеспечить несколько двоичных пакетов.
Название исходного пакета для bash
также bash
, но исходные имена пакета не могут всегда предполагаться с двоичных имен пакета.
Два из способов проверить, какой исходный пакет используется для создания двоичного пакета:
what-source
команда. (Необходимо установить какой-utils сначала. Чтобы сделать это из командной строки, работать sudo apt-get install what-utils
.), Например, what-source libsslcommon2
выводы qpid-cpp
.На практике я обычно использую Панель запуска, потому что она часто имеет другую удобную информацию, которую я ищу одновременно. Но с what-source
и reverse-depends
, можно записать единственную команду для списка обратных зависимостей, связанных с исходным пакетом для конкретного двоичного пакета:
reverse-depends src:$(what-source libsslcommon2)
Это использует замену команды - a $(
)
выражение заменяется выводом команды, записанной в круглых скобках.
Вы можете быть удивлены выводом той команды, которая, по крайней мере, когда выполнено от моих 15,04 систем, является:
No reverse dependencies found
Но действительно это не так удивительно. Это не означает двоичных пакетов кроме созданных из qpid-cpp
исходный пакет зависит от любых двоичных пакетов, созданных из qpid-cpp
исходный пакет. Например:
ek@Io:~$ reverse-depends libsslcommon2
Reverse-Depends
===============
* libsslcommon2-dev
* qpid-client
* qpidd
Packages without architectures listed are reverse-dependencies in: amd64, arm64, armhf, i386, powerpc, ppc64el
ek@Io:~$ what-source libsslcommon2-dev
qpid-cpp
ek@Io:~$ what-source qpid-client
qpid-cpp
ek@Io:~$ what-source qpidd
qpid-cpp
Наконец, обратите внимание:
Вы не должны работать reverse-depends
(ни what-source
) как корень. Таким образом, sudo reverse-depends ...
является ненужным; выполненный reverse-depends ...
вместо этого.
До reverse-depends
утилита затронута, источник, обратные зависимости пакета являются обратными зависимостями двоичных пакетов, которые создаются из исходного пакета. Определенный двоичный пакет, от которого они зависят, перечислен в круглых скобках направо от имени пакета в выводе reverse-depends src:...
.
Обратные зависимости исходного пакета, как перечислено reverse-depends
, все еще двоичные пакеты, не исходные пакеты. Например, вывод reverse-depends src:bash
включает:
* netscript-2.4 (for bash)
* netscript-2.4-upstart (for bash)
Это - то, даже при том, что существует нет netscript-2.4-upstart
исходный пакет. Вместо этого netscript-2.4
и netscript-2.4-upstart
двоичные пакеты оба создаются из netscript-2.4
исходный пакет.
Обратные зависимости исходного пакета не являются тем же как обратными зависимостями от сборки пакета. Обратные зависимости от сборки пакета являются другими пакетами, которые требуют пакета, чтобы быть созданными, но не обязательно быть установленными когда-то созданные. При поиске обратных зависимостей от сборки вызвать reverse-depends
с -b
флаг.
reverse-depends
программное обеспечение автоматически не обнаруживает исходный пакет, от которого сгенерирован данный двоичный пакет. Эти src:
маркировка используется, чтобы указать, что то, что следует, является названием исходного пакета. Это так происходит, что название исходного пакета для bash
, ну, в общем, bash
. Но для libsslcommon2
, исходный пакет называют qpid-cpp
:
$ reverse-depends -r utopic src:qpid-cpp
Reverse-Depends
===============
* qpidd-msgstore (for qpidd)
* qpidd-msgstore (for libqpidbroker2)
* qpidd-msgstore (for libqpidcommon2)
Packages without architectures listed are reverse-dependencies in: amd64, armhf, i386, ppc64el
apt-get
, с другой стороны, знает, исходные пакеты (проверьте вывод apt-cache show libsslcommon2
).