Eu estava mexendo no som no Linux e tentei instalar o pacote jackd
. Este é o trecho relevante do que apt
retornou:
$ sudo apt install jackd
The following additional packages will be installed:
jackd2 jackd2-firewire libconfig++9v5 libffado2 libglibmm-2.4-1v5 libsigc++-2.0-0v5 libxml++2.6-2v5 python-dbus python-gi qjackctl
Então o resultado de uma purga:
$ sudo apt purge jackd
The following packages will be REMOVED:
jackd* qjackctl*
Uma instalação subsequente:
$ sudo apt install jackd
The following NEW packages will be installed:
jackd
----------EDITAR----------
E então :
sudo apt autoremove
The following packages will be REMOVED:
libfwup1
(que é um pacote que já foi mencionado antes de instalar o jackd)
----------FIM DA EDIÇÃO----------
A partir deste experimento, apt
não parece remover dependências. No entanto, a limpeza removeu outro pacote ( qjackctl
) além daquele que mencionei especificamente ( jackd
).
qjackctl
é o pacote para a interface GUI correspondente do daemon jackd
e entendo que não será necessário se eu não tiver jackd
mais. Mas, logicamente, as outras dependências também estão instaladas, então:
- por que eles não foram desinstalados?
- por que foi
qjackctl
desinstalado? - por que não foi
qjackctl
buscado na segunda instalação?
Apenasfioencontrado era específico para o pacote em questão.
Muito obrigado por sua ajuda
PS: Acabei de instalar uma partição Arch Linux (que visa substituir minha partição Ubuntu no futuro). Não estou muito familiarizado pacman
agora. Esse comportamento é melhor gerenciado com este gerenciador de pacotes? (mais precisamente: operações indempotentes e comportamento previsível)
Responder1
Os pacotes adicionais foram instalados porque são dependências (possivelmente indiretas) de jackd
: jackd2
diretamente, o restante por meio de jackd2
. qjackctl
foi instalado porque jackd2
é recomendado e os pacotes recomendados são instalados por padrão.
Em detalhes, a árvore de dependências dos pacotes instalados é a seguinte:
jackd
└─ jackd2
├─ python-dbus
│ └─ python-gi (recommended)
├─ jackd2-firewire (recommended)
│ └─ libffado2
│ ├─ libconfig++9v5
│ ├─ libglibmm-2.4-1v5
│ │ └─ libsigc++-2.0-0v5
│ └─ libxml++2.6-2v5
└─ qjackctl (recommended)
Duas dependências adicionais não influenciam a etapa de instalação, mas tornam-se significativas posteriormente: jackd2-firewire
depende jackd2
e qjackctl
depende de jackd
.
A última dependência significa que quando jackd2
foi removida, qjackctl
também teve que ser removida (você não pode ter um pacote instalado sem suas dependências estritas). Os outros pacotes não dependem do jackd
, portanto não foram removidos; eles teriam passado apt autoremove
, exceto que porque jackd2-firewire
depende de jackd2
, nenhum dos pacotes se torna desnecessário... ( apt
não me lembroqual pacote específicofez com que outro pacote fosse instalado; autoremove
apenas verifica os pacotes instalados automaticamente para ver se nada mais depende deles. Como um toque adicional, autoremove
considera as recomendações importantes o suficiente para manter um pacote instalado.)
Na segunda vez que você instalou jackd
, apt
olhou suas dependências,ou seja jackd2
ou jackd1
, notei que jackd2
já estava instalado e parei por aí; portanto, não percebeu que qjackctl
estava “faltando”, pois é recomendado por jackd2
, e não jackd
por si mesmo.
aptitude
removerá pacotes desnecessários assim que seus pacotes dependentes forem removidos, sem nenhuma autoremove
etapa separada; você pode achar mais fácil de usar. Os comandos são iguais aos apt
de; ele também possui uma interface de usuário em tela inteira baseada em texto que considero muito útil.