обратные зависимости: поиск обратных зависимостей исходных пакетов

Моя цель - найти ВСЕ обратные зависимости от определенного пакета и пакета исходного кода. Например, мне нужны все пакеты, которые зависят от 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?

2
задан 22 April 2015 в 14:03

2 ответа

TL; DR: можно использовать reverse-depends src:$(what-source libsslcommon2).

Существует нет libsslcommon2 исходный пакет. Вместо этого libsslcommon2 один из многих двоичных пакетов, созданных из qpid-cpp исходный пакет. В целом двоичный пакет может или не может иметь того же имени как исходный пакет, используемый для создания его, и исходные пакеты могут обеспечить несколько двоичных пакетов.

Название исходного пакета для bash также bash, но исходные имена пакета не могут всегда предполагаться с двоичных имен пакета.

Два из способов проверить, какой исходный пакет используется для создания двоичного пакета:

  1. Ищите двоичное имя пакета под "Пакетами" в https://launchpad.net/ubuntu.
  2. Используйте what-source команда. (Необходимо установить какой-utils Install what-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 флаг.

3
ответ дан 23 April 2015 в 00:03

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).

2
ответ дан 23 April 2015 в 00:03

Другие вопросы по тегам:

Похожие вопросы: