Estaba jugueteando con el sonido en Linux e intenté instalar el paquete jackd
. Este es el extracto relevante de lo que apt
devolvió:
$ 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
Entonces el resultado de una purga:
$ sudo apt purge jackd
The following packages will be REMOVED:
jackd* qjackctl*
Una instalación posterior:
$ sudo apt install jackd
The following NEW packages will be installed:
jackd
----------EDITAR----------
Y luego :
sudo apt autoremove
The following packages will be REMOVED:
libfwup1
(que es un paquete que ya se mencionó antes de instalar jackd)
----------FIN DE EDITAR----------
De este experimento, apt
no parece eliminar las dependencias. Sin embargo, la purga eliminó otro paquete ( qjackctl
) además del que mencioné específicamente ( jackd
).
qjackctl
es el paquete para la interfaz GUI correspondiente del demonio jackd
y entiendo que no será necesario si no tengo jackd
más. Pero, lógicamente, también se instalan las demás dependencias, así que:
- ¿Por qué no se desinstalaron?
- ¿Por qué se
qjackctl
desinstaló? - ¿Por qué
qjackctl
no se recuperó en la segunda instalación?
Solohiloencontrado era específico del paquete en cuestión.
Muchas gracias por tu ayuda
PD: Acabo de terminar de instalar una partición Arch Linux (que está destinada a reemplazar mi partición Ubuntu en el futuro). No estoy muy familiarizado con pacman
este momento. ¿Se gestiona mejor este comportamiento con este administrador de paquetes? (más precisamente: operaciones indempotentes y comportamiento predecible)
Respuesta1
Los paquetes adicionales se instalaron porque son dependencias (posiblemente indirectas) de jackd
: jackd2
directamente, el resto a través de jackd2
. qjackctl
se instaló porque jackd2
lo recomienda y los paquetes recomendados se instalan de forma predeterminada.
En detalle, el árbol de dependencias de los paquetes instalados es el siguiente:
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)
Dos dependencias adicionales no influyen en el paso de instalación, pero se vuelven importantes más adelante: jackd2-firewire
depende de jackd2
y qjackctl
depende de jackd
.
La última dependencia significa que cuando jackd2
se eliminó, qjackctl
también tuvo que eliminarse (no se puede instalar un paquete sin sus dependencias estrictas). Los otros paquetes no dependen de jackd
, por lo que no se eliminaron; habrían sido por apt autoremove
, excepto porque jackd2-firewire
depende de jackd2
, ninguno de los paquetes se vuelve innecesario... ( apt
no recuerdaqué paquete específicoprovocó la instalación de otro paquete; autoremove
sólo comprueba los paquetes instalados automáticamente para ver si ya nada depende de ellos. Como beneficio adicional, autoremove
considera que las recomendaciones son lo suficientemente importantes como para mantener un paquete instalado).
La segunda vez que instaló jackd
, apt
miró sus dependencias,es decir jackd2
o jackd1
notó que jackd2
ya estaba instalado y se detuvo ahí; por lo tanto, no se dio cuenta de que qjackctl
“faltaba”, ya que es recomendado por él jackd2
y no jackd
por sí mismo.
aptitude
eliminará los paquetes innecesarios tan pronto como se eliminen los paquetes dependientes, sin ningún autoremove
paso separado; puede que le resulte más fácil de usar. Los comandos son los mismos que apt
los de; también tiene una interfaz de usuario de pantalla completa basada en texto que encuentro muy útil.