Когда apt
перечисляет автоматически установленный пакет, который я не могу распознать, мне иногда хотелось бы знать, какой установленный вручную пакет изначально инициировал установку. Возможно ли это?
Это пример сценария, который использует 2 команды для сканирования информации обо всех пакетах, чтобы определить пакеты, устанавливаемые вручную, для установки ваших пакетов.
apt list -installed
=> provide a list of package and you can see if the package was installed automaticaly
apt-cache rdepends --installed PACKAGE
=> предоставить список установленных в настоящее время, который зависит от PACKAGE
#!/bin/bash
if [ -z "$1" ]
then
echo help:
echo $0 PACKAGE
echo
echo find packages that was manual installed that install PACKAGE as a dependency
echo
exit 1
fi
ROOT_PKG="$1";
echo "package $ROOT_PKG" ;
FG=$(mktemp);
apt list --installed 2>/dev/null | grep automatic > $FG;
ALREADY_DISPLAY=":"
ALREADY_SCAN=":"
while [ -n "$ROOT_PKG" ];
do
for P in $ROOT_PKG;
do
ROOT_PKG="";
for RDP in $( apt-cache rdepends --installed $P | sed '0,/^Reverse Depends:/ d;' );
do
RDP=$(echo "$RDP" | sed 's/^|//' ) ;
if ( grep -q "^${RDP}/" $FG );
then
if ( ! ( echo "$ALREADY_SCAN" | grep -q ":$RDP" ) )
then
ROOT_PKG="$ROOT_PKG $RDP";
ALREADY_SCAN="$ALREADY_SCAN:$RDP"
fi
else
if ( ! ( echo "$ALREADY_DISPLAY" | grep -q ":$RDP" ) )
then
echo " was needed by $RDP";
ALREADY_DISPLAY="$ALREADY_DISPLAY:$RDP"
fi
fi;
done;
done;
done;