Posso ver porque um pacote está instalado?

93

Para um pacote específico, posso descobrir por que ele está instalado?

Então, posso ver ou é instalado manualmente ou está instalado como uma dependência de outro pacote? Ou que é instalado como parte da distro?

    
por Peter Smit 10.10.2010 / 16:08

4 respostas

91

Uma solução rápida é inserir o seguinte comando em um terminal:

aptitude why $package

ou, se você estiver interessado apenas na causa final:

aptitude why $package --show-summary

Substitua $ package pelo nome do pacote, e você pode precisar instalar o pacote aptitude primeiro.

Aqui está a saída que você pode obter para aptitude why aspell --show-summary

Packages requiring aspell:
  inkscape

Para mais detalhes, você executaria aptitude why aspell . Você pode ler a saída do exemplo, abaixo, da seguinte maneira: "Você instalou manualmente inkscape , que requer libgtkspell , que requer libenchantic2a , que requer aspell ". ( i marcadores indicam pacotes instalados; A marcadores indicam pacotes instalados automaticamente.)

i   inkscape       Depends libgtkspell0 (>= 2.0.10)                                                                    
i A libgtkspell0   Depends libenchant1c2a (>= 1.6.0)                                                                   
i A libenchant1c2a Depends aspell-en | myspell-dictionary | aspell-dictionary | ispell-dictionary | hunspell-dictionary
i A aspell-en      Depends aspell (>= 0.60.3-2)

Finalmente, o seguinte comando

apt-cache rdepends --installed $package

lista os outros pacotes instalados no seu computador que dependem diretamente do $ package . Você pode adicionar a opção --recurse para listar todos os pacotes que dependem direta ou indiretamente dela.

    
por enzotib 10.10.2010 / 16:14
29

Um raciocínio rápido e curto sobre por que um determinado pacote foi instalado pode ser encontrado digitando o seguinte comando em um terminal ( Applications -> Accessories -> Terminal ):

aptitude why <package-name>

Substitua pelo nome do pacote em que você está interessado. Por exemplo, digitar aptitude why libgoo-canvas-perl gera o seguinte:

i   shutter Suggests libgoo-canvas-perl

Isso basicamente significa que o pacote shutter neste caso sugeriu que libgoo-canvas-perl esteja instalado. Então, digitando aptitude why shutter , posso subir na cadeia de dependências.

No entanto, há uma ressalva. Muitas vezes noto que a aptidão encontra a explicação mais plausível para a situação que pode não ser o caso real, mas, no entanto, lhe dará uma pista para procurar mais.

No meu caso, shutter sugere libgoo-canvas-perl - no entanto, os pacotes sugeridos não são instalados automaticamente por padrão. No entanto, minha lembrança da "experiência" não é capaz de editar capturas de tela com shutter , o que me levou a instalar manualmente ligbgoo-canvas-perl

Finalmente, você pode descobrir se um pacote foi instalado automaticamente (ou seja, decidido pelo sistema de gerenciamento de pacotes como obrigatório a partir das dependências e recomendações de outros pacotes que você pediu para instalar) executando o seguinte comando.

aptitude show <package-name>

Isso produzirá uma linha como abaixo (3ª linha da saída):

Automatically installed: no

Para mais informações, acesse info aptitude (em um terminal) ou visite a página de wiki Aptitude

Para descobrir quando um pacote específico foi instalado, existem duas opções:

  1. O gerenciador de pacotes Synaptic mantém um registro histórico de todas as atividades. Para exibir o arquivo de registro do histórico, escolha Histórico no menu Arquivo. Você pode procurar Install (note o caso) para listar todas as entradas relacionadas à instalação. No entanto, isso mostrará apenas os pacotes instalados usando o Synaptic
  2. Execute o seguinte comando em um terminal. Isso irá procurar logs do dpkg para entradas do histórico de instalação. No entanto, há um limite máximo de quanto desses logs são retidos, portanto, se o pacote que você está procurando foi instalado há muito tempo, você pode não encontrá-lo. Mais detalhes aqui

    zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
    
por koushik 21.09.2010 / 16:02
11

Sim, você pode, e é um comando bastante óbvio, na verdade. Supondo que você tenha o aptitude instalado, você pode abrir um tipo de anúncio na janela do terminal:

aptitude why package

Isso deve fornecer uma lista de pacotes que dependem desse pacote específico. Se for um pacote instalado manualmente, ele dirá algo como "Não foi possível encontrar um motivo para instalar o pacote".

    
por Daniel Rodrigues 10.10.2010 / 16:14
2

Aqui está uma maneira simples que não depende do aptitude , que 10.10 não é mais fornecido por padrão.

  

Aviso

     

Você precisa ter acesso root para executar esses comandos.

Graficamente

Abra o Synaptic e tente removê-lo.

Se aparecer uma caixa de diálogo pedindo para você excluir outros pacotes, esses são os pacotes que (recursivamente) dependem dele.

Do terminal

apt-get remove package_name_goes_here -s

Mais uma vez, os pacotes que seriam removidos como resultado são todos aqueles que (recursivamente) dependem dele. (O parâmetro -s informa apt-get para não remover o pacote.)

    
por badp 10.10.2010 / 16:27