Para um pacote específico, posso descobrir por que ele está instalado?
Então, posso ver ou ele é instalado manualmente ou está instalado como uma dependência de outro pacote? Ou que está instalado como parte da distribuição?
Para um pacote específico, posso descobrir por que ele está instalado?
Então, posso ver ou ele é instalado manualmente ou está instalado como uma dependência de outro pacote? Ou que está instalado como parte da distribuição?
Respostas:
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 talvez seja necessário instalar o aptitude
pacote primeiro.
Aqui está a saída que você pode obter aptitude why aspell --show-summary
Packages requiring aspell:
inkscape
Para mais detalhes você executaria aptitude why aspell
. Você pode ler o exemplo de saída abaixo: "Você instalou manualmente inkscape
, o que requer libgtkspell
, o que requer libenchantic2a
, o 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 --recurse
opção de listar todos os pacotes que dependem direta ou indiretamente dele.
apt-cache rdepends --recurse $package
provavelmente dá muitos pacotes. Eu adicionaria --installed
opção para restringir os pacotes instalados. -i
A opção restringe-se a pré-dependência e pacotes relacionados à dependência. Mas um pacote pode ser instalado porque é recomendado por outro pacote. Para incluir pacotes relacionados a essa recomendação, suponho que isso daria os corretos:apt-cache rdepends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --installed --recurse $package
apt-cache rdepends --no-{suggests,conflicts,breaks,replaces,enhances} --installed --recurse $package
Um rápido e breve raciocínio sobre o motivo de um determinado pacote ter sido 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
nesse caso sugeriu a libgoo-canvas-perl
instalação. Ao digitar aptitude why shutter
, posso subir a cadeia de dependência.
No entanto, há uma ressalva. Costumo notar que o aptitude 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, pacotes sugeridos não são instalados automaticamente por padrão. No entanto, isso evita minha "experiência" por não poder editar capturas de tela com as shutter
quais me levou a instalar manualmenteligbgoo-canvas-perl
Por fim, você pode descobrir se um pacote foi instalado automaticamente (o que significa que o sistema de gerenciamento de pacotes é obrigatório como obrigatório, observando 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 (terceira linha da saída):
Automatically installed: no
Para mais informações, execute info aptitude
(em um terminal) ou visite a página wiki do Aptitude
Para descobrir quando um pacote específico foi instalado, existem 2 opções:
Install
(lembre-se do caso) para listar todas as entradas relacionadas à instalação. No entanto, isso mostrará apenas os pacotes instalados usando o SynapticExecute o seguinte comando em um terminal. Isso procurará nos logs do dpkg por entradas no 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ê estava procurando foi instalado há muito tempo, talvez você não o encontre. Mais detalhes aqui
zcat -f /var/log/dpkg.log* | grep "\ install\ " | grep -i <package-name>
zcat -f /var/log/dpkg.log* | grep -i PackageName | egrep “\ install\ |\ upgrade\ “
Sim, você pode, e é um comando bastante óbvio, de fato. Supondo que você tenha o aptitude instalado, você pode abrir um tipo de anúncio da 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, será exibido algo como "Não foi possível encontrar um motivo para instalar o pacote".
Aqui está uma maneira simples que não depende aptitude
, da qual a 10.10 não é mais enviada por padrão.
Abra o Synaptic e tente removê-lo.
Se uma caixa de diálogo aparecer pedindo que você exclua outros pacotes, esses são os pacotes que (recursivamente) dependem dela.
apt-get remove package_name_goes_here -s
Novamente, os pacotes que seriam removidos como resultado são todos aqueles que (recursivamente) dependem dele. (O -s
parâmetro diz apt-get
para realmente não remover o pacote.)
y/N
solicitação de confirmação extra, se você digitar -s
. Eu adicionei um aviso no entanto.