Para investigar qué causó la instalación de un paquete dado, me gustaría obtener una lista de paquetes que dependen de ese paquete. No pude encontrar nada obvio en man dpkg
.
201
Para investigar qué causó la instalación de un paquete dado, me gustaría obtener una lista de paquetes que dependen de ese paquete. No pude encontrar nada obvio en man dpkg
.
aptitude
algo que no se ha instalado por defecto durante años. En 2017, todos en Ubuntu todavía lo tienenapt-cache
. Cualquiera que siga la pregunta vinculada se perderá en una discusión sobre un programa que pocos tendrán.Respuestas:
apt-cache rdepends packagename
deberías hacer lo que quierasfuente
apt-cache rdepends tofrodos
confirmó la sospecha de que fue instalado por otro paquete (el obsoletodos2unix
).--installed
, el resultado es incluso útil para paquetes que pueden ser utilizados por muchos otros:apt-cache rdepends --installed packagename
sudo apt rdepends packagename
(Note que no está usando apt-cache sino simplemente apt)aptitude tiene una forma bastante buena de manejar esto:
De manera predeterminada, solo enumera la razón "más instalada, más fuerte, más ajustada, más corta", pero puede usarla
aptitude -v why
para que muestre todo lo que encuentre.fuente
reverse-depends
enubuntu-dev-tools
ubuntu-dev-tools
está en Debianopenssh-server
recomendado (y por lo tanto instalado)xauth
en un servidor sin cabeza, arrastrando cientos de dependencias x11 y docenas de actualizaciones inútiles al mes. ¡Ese es el problema con la gestión automatizada de paquetes!Ejemplo:
fuente
apt showpkg <pkgname>
Hay más de una forma, con cada método mostrando una salida diferente.
Para una vista detallada del árbol de dependencia inversa completo;
Alternativamente;
O una lista concisa:
fuente
rdepends
muestra exactamente en ese árbol?apt-rdepends php7.0-fpm
muestrased
.sed
no depende de PHP, y mucho menos de PHP FPM.apt-rdepends -r yourPackageNameHere
La opción más simple sigue siendo:
lo cual no requiere que instales ningún paquete.
fuente
apt-cache
la salida de s. Es exactamente lo que necesitaba en este momento (depurar una incompatibilidad de glibc 2.28, así que votar)Además de otras buenas respuestas, un APT / APT-GET
-s
realiza una eliminación (o instalación) "simulada".sudo apt -s remove <pkgname>
Al usar
-s
o--simulated
para eliminar (o instalar) paquetes, normalmente se enumerarán las dependencias afectadas. Mostrará paquetes huérfanos al eliminar o dependencias necesarias al instalar sin ejecutar realmente elinstall
oremove
. Solo informativo.fuente
apt remove -s php7.0-fpm
muestraThe following additional packages will be installed: apache2 apache2-bin apache2-data libapache2-mod-php7.0 libaprutil1-dbd-sqlite3 libaprutil1-ldap liblua5.1-0
. ¿Por qué se instalaría Apache si elimino PHP FPM?