reverse-depends: procurando por dependências reversas de pacotes de origem

3

Meu objetivo é encontrar TODAS as dependências de um determinado pacote e do pacote de origem pertencente. Por exemplo, eu quero todos os pacotes que dependem de libsslcommon2 e o pacote de origem que pode ser instalado via sudo apt-get source libsslcommon2 .

A partir da página de manual de reversão eu entendo que preciso :

sudo reverse-depends 'libsslcommon2'

que funciona bem. No entanto

sudo reverse-depends src:libsslcommon2

retorna

reverse-depends: Error: Unknown package

A mesma sintaxe funciona para src:bash (como mencionado na man page).

NB: Funciona bem para instalar / baixar os fontes tanto para o bash quanto para o libsslcommon2 via

sudo apt-get source libsslcommon2
sudo apt-get source bash

Qual é o problema aqui? Como posso determinar todos os pacotes que dependem do pacote de fontes libsslcommon?

    
por stackoverflowwww 22.04.2015 / 13:03

2 respostas

4

TL; DR: Você pode usar reverse-depends src:$(what-source libsslcommon2) .

Não há pacote% source libsslcommon2 . Em vez disso, libsslcommon2 é um dos vários pacotes binários construídos a partir do pacote de código qpid-cpp . Em geral, um pacote binário pode ou não ter o mesmo nome que o pacote fonte usado para construí-lo, e os pacotes fonte podem fornecer múltiplos pacotes binários.

O nome do pacote de origem para bash também é bash , mas os nomes de pacotes de origem nem sempre podem ser adivinhados a partir de nomes de pacotes binários.

Duas das maneiras de verificar qual pacote fonte é usado para criar um pacote binário são:

  1. Pesquise pelo nome do pacote binário em "Pacotes" no link .
  2. Use o comando what-source . (Você deve instalar o what-utils primeiro.Para fazer isso a partir da linha de comando, execute sudo apt-get install what-utils . ) Por exemplo, what-source libsslcommon2 outputs qpid-cpp .

Na prática, costumo usar o Launchpad porque ele geralmente tem outras informações úteis que estou procurando ao mesmo tempo. Mas com what-source e reverse-depends , você pode escrever um único comando para listar as dependências reversas associadas ao pacote de origem para um pacote binário específico:

reverse-depends src:$(what-source libsslcommon2)

Isso usa substituição de comando --a $( ) expression é substituído pela saída do comando escrito dentro dos parênteses.

Você pode se surpreender com a saída desse comando, que, pelo menos quando executado a partir do meu sistema 15.04, é:

No reverse dependencies found

Mas isso não é tão surpreendente. Isso significa que nenhum pacote binário, exceto aqueles construídos a partir do pacote qpid-cpp source, depende de qualquer pacote binário criado a partir do pacote qpid-cpp source. Por exemplo:

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

Por fim, anote:

  • Você não precisa executar reverse-depends (nem what-source ) como raiz . Isto é, sudo reverse-depends ... é desnecessário; execute reverse-depends ... em vez disso.

  • No que diz respeito ao utilitário reverse-depends , as dependências reversas de um pacote fonte são as dependências reversas dos pacotes binários que são construídos a partir do pacote fonte. O pacote binário específico do qual eles dependem está listado entre parênteses à direita do nome do pacote, na saída de reverse-depends src:... .

    As dependências reversas de um pacote fonte, conforme listado por reverse-depends , ainda são pacotes binários, não pacotes de fontes. Por exemplo, a saída de reverse-depends src:bash inclui:

    * netscript-2.4                 (for bash)
    * netscript-2.4-upstart         (for bash)
    

    Isso ocorre mesmo que não exista nenhum pacote netscript-2.4-upstart source . Em vez disso, os netscript-2.4 e netscript-2.4-upstart pacotes binários são ambos construídos a partir do netscript-2.4 source package .

  • As dependências reversas de um pacote de origem não são as mesmas que as dependências de compilação reversa de um pacote. As dependências de compilação reversa de um pacote são os outros pacotes que requerem o pacote para serem construídos, mas não necessariamente para serem instalados uma vez construídos. Se você estiver procurando por dependências de compilação reversa, invoque reverse-depends com o sinalizador -b .

por Eliah Kagan 22.04.2015 / 14:23
2

O software reverse-depends não detecta automaticamente o pacote fonte a partir do qual um determinado pacote binário é gerado. O rótulo src: é usado para indicar que o que segue é o nome de um pacote de origem. Acontece que o nome do pacote fonte para bash é, bem, bash . Mas para libsslcommon2 , o pacote fonte é chamado 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 , por outro lado, conhece os pacotes fonte (verifique a saída de apt-cache show libsslcommon2 ).

    
por muru 22.04.2015 / 14:11