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.
aptitudealgo 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 packagenamedeberías hacer lo que quierasfuente
apt-cache rdepends tofrodosconfirmó 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 packagenamesudo 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 whypara que muestre todo lo que encuentre.fuente
reverse-dependsenubuntu-dev-toolsubuntu-dev-toolsestá en Debianopenssh-serverrecomendado (y por lo tanto instalado)xauthen 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
rdependsmuestra exactamente en ese árbol?apt-rdepends php7.0-fpmmuestrased.sedno depende de PHP, y mucho menos de PHP FPM.apt-rdepends -r yourPackageNameHereLa opción más simple sigue siendo:
lo cual no requiere que instales ningún paquete.
fuente
apt-cachela 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
-srealiza una eliminación (o instalación) "simulada".sudo apt -s remove <pkgname>Al usar
-so--simulatedpara 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 elinstalloremove. Solo informativo.fuente
apt remove -s php7.0-fpmmuestraThe 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?