Existe uma maneira de ver as versões instaladas de todas as dependências de um pacote?

2

Eu gostaria de poder exibir uma lista de todas as dependências de um pacote instalado, incluindo os números de versão das dependências que eu instalei.

    
por Jay 12.12.2011 / 19:27

3 respostas

1

Se você precisar de um resultado personalizado, pode ser uma boa opção implementar um script para realizar essa tarefa usando python-apt :

import argparse
from itertools import chain
from collections import deque
import apt

def main(args):
    packages_seen = set()
    dependencies = deque()

    def print_package(package):
        print package.name, package.installedVersion
        packages_seen.add(package.name)

        or_dependencies = [dependency.or_dependencies
                           for dependency in package.installedDependencies]
        dependencies.extend(chain.from_iterable(or_dependencies))

    cache = apt.cache.Cache()
    package = cache[args.package_name]
    print_package(package)

    while dependencies:
        dependency = dependencies.popleft()
        package_name = dependency.name

        # Skip virtual packages                                                                                                          
        if package_name not in cache:
            continue

        if package_name not in packages_seen:
            package = cache[dependency.name]
            print_package(package)


if __name__ == '__main__':
    parser = argparse.ArgumentParser('Print all package dependencies '
                                     'and their installed version')
    parser.add_argument('package_name', help='Package name')
    args = parser.parse_args()

    main(args)

Exemplo de saída:

$ python depends.py sqlite
sqlite 2.8.17-6.1ubuntu1
libc6 2.13-20ubuntu5
libreadline6 6.2-2ubuntu1
libsqlite0 2.8.17-6.1ubuntu1
libc-bin 2.13-20ubuntu5
libgcc1 1:4.6.1-9ubuntu3
tzdata 2011n-0ubuntu0.11.10
readline-common 6.2-2ubuntu1
libtinfo5 5.9-1ubuntu5
multiarch-support 2.13-20ubuntu5
gcc-4.6-base 4.6.1-9ubuntu3
debconf 1.5.40ubuntu1
dpkg 1.16.0.3ubuntu5
install-info 4.13a.dfsg.1-8ubuntu1
perl-base 5.12.4-4
libbz2-1.0 1.0.5-6ubuntu1
libselinux1 2.0.98-1.1
zlib1g 1:1.2.3.4.dfsg-3ubuntu3
coreutils 8.5-1ubuntu6
xz-utils 5.0.0-2
libacl1 2.2.51-3
libattr1 1:2.4.46-3
liblzma2 5.0.0-2
    
por jcollado 12.12.2011 / 22:12
1

use apt-cache

Usando o firefox como exemplo:

apt-cache showpkg firefox | less

para sair menos tipo q. Eu canalizei para menos como a saída pode ser longa. Você pode canalizá-lo para um arquivo, se desejar.

Para mostrar seus pacotes instalados, use dpkg

dpkg -l
dpkg -l | grep firefox
    
por Panther 12.12.2011 / 19:35
1

Eu normalmente uso rdepends para isso, instalo com sudo apt-get install apt-rdepends ou procuro no Ubuntu Software Center.

Depois de instalar o programa, você pode usá-lo simplesmente abrindo um terminal e digitando sudo apt-rdepends <package_name> .

Ele mostrará a você todas as dependências de qualquer pacote que esteja nas suas listas apt necessárias para instalar e todas as dependências de um pacote que você possa estar pensando em instalar.

Ele mostra as informações em um diagrama de árvore, onde todas as dependências de um pacote são comparadas com todas as dependências da dependência de cada pacote ... (e assim).

ou seja:

sudo apt-rdepends sqlite

Reading package lists... Done
Building dependency tree       
Reading state information... Done
sqlite3
  Depends: libc6 (>= 2.4)
  Depends: libreadline6 (>= 6.0)
  Depends: libsqlite3-0 (>= 3.6.18)
libc6
  Depends: libc-bin (= 2.13-20ubuntu5)
  Depends: libgcc1
  Depends: tzdata
libc-bin
libgcc1
  Depends: gcc-4.6-base (= 4.6.1-9ubuntu3)
  Depends: libc6 (>= 2.2.4)
  PreDepends: multiarch-support
gcc-4.6-base
multiarch-support
  Depends: libc6 (>= 2.13-0ubuntu6)
tzdata
  Depends: debconf (>= 0.5)
  Depends: debconf-2.0
debconf
  PreDepends: perl-base (>= 5.6.1-4)
perl-base
  PreDepends: dpkg (>= 1.14.20)
  PreDepends: libc6 (>= 2.11)
dpkg
  PreDepends: coreutils (>= 5.93-1)
  PreDepends: libbz2-1.0
  PreDepends: libc6 (>= 2.11)
  PreDepends: libselinux1 (>= 1.32)
  PreDepends: xz-utils
  PreDepends: zlib1g (>= 1:1.1.4)
coreutils
  PreDepends: libacl1 (>= 2.2.11-1)
  PreDepends: libattr1 (>= 2.4.41-1)
  PreDepends: libc6 (>= 2.7)
  PreDepends: libselinux1 (>= 1.32)
libacl1
  Depends: libattr1 (>= 2.4.41-1)
  Depends: libc6 (>= 2.4)
  PreDepends: multiarch-support
libattr1
  Depends: libc6 (>= 2.4)
  PreDepends: multiarch-support
libselinux1
  Depends: libc6 (>= 2.8)
  PreDepends: multiarch-support
libbz2-1.0
  Depends: libc6 (>= 2.4)
xz-utils
  Depends: libc6 (>= 2.7)
  Depends: liblzma2 (>= 5.0.0)
liblzma2
  Depends: libc6 (>= 2.4)
zlib1g
  Depends: libc6 (>= 2.4)
  PreDepends: multiarch-support
debconf-2.0
libreadline6
  Depends: libc6 (>= 2.11)
  Depends: libtinfo5 (>= 5.6+20070908)
  Depends: readline-common
libtinfo5
  Depends: libc6 (>= 2.4)
readline-common
  Depends: dpkg (>= 1.15.4)
  Depends: install-info
install-info
  Depends: libc6 (>= 2.4)
libsqlite3-0
  Depends: libc6 (>= 2.4)
  PreDepends: multiarch-support

Depois disso, se você quiser ver se o pacote está instalado em seu sistema, simplesmente use este comando

dpkg-query -l <package_name>

Ele mostrará se o pacote está instalado, ou seja,

dpkg -l firefox

+++-==============-==============-============================================
ii  firefox        8.0+build1-0ub Safe and easy web browser from Mozilla

O ii na frente do pacote significa que ele está instalado.

    
por Bruno Pereira 12.12.2011 / 20:28