Ось сценарій, який друкує тільки встановлені на даний момент пакети верхнього рівня , де "пакунки верхнього рівня" визначаються як пакунки atp, від яких не залежать інші пакети atp. Якщо такі програми вищого рівня були встановлені програмою atp або менеджером пакунків, наприклад, синаптичним, вони були вибрані користувачем вручну.
#!/bin/sh
NumDaysAgo=18
find /var/lib/dpkg/info -name "*.list" -mtime -$NumDaysAgo \
-exec stat -c $'%y\t%n' {} \; | \
sed -e 's,/var/lib/dpkg/info/,,' -e 's,\.list,,' | \
sort -r | \
while read Date Time Xxx Pkg
do
lncnt=$(apt-cache --installed rdepends $Pkg | wc -l)
if [ $lncnt -eq "2" ]
then echo "$Date $Time $Pkg"
fi
done
echo "JOB COMPLETED: $BASH_SOURCE"
Пакети друкуються у зворотному порядку під припущенням, що користувач швидше захоче нову інформацію швидше, і тому що програма повільна.
Потік програми:
- Програма спочатку збирає в список всі встановлені пакети, читаючи назви файлів під
/var/lib/dpkg/info/. Модні файли часу - це час інсталяції.
- Цей список сортується у зворотному порядку.
- Для кожного встановленого пакету
$Pkgдзвінок apt-cache rdepends $Pkg
запитує зворотні залежності $Pkg. Якщо залежностей немає, то це пакет верхнього рівня і надрукована інформація про пакет: ім'я пакету дати
Примітки:
- Сценарій залежить від вихідного формату,
apt-cache rdepends $Pkgякий був призначений для людських очей і міг би змінитися в майбутніх версіях apt.
- Код для частини, що збирає назви файлів під / var / lib / dpkg / info /, прийшов з
цієї публікації unix.stackexchange . Як вказував цей «микель» на плакаті , журнали
dpgk історії не є надійними, оскільки вони будуть повернуті після досягнення певного обсягу.
- Сторінка людини для
apt-chache
apt-cache rdepends ...Імовірно, виклик дуже повільний, тому що кожен виклик обчислюється ітерацією через всі залежності. Отже, вищезазначений сценарій починається з новітніх встановлень, щоб запропонувати користувачеві якомога більше миттєвого задоволення.
--installedПрапор після apt-cacheперевірки , що DPKG встановлених пакетів також схильні встановлено. Якщо користувач або інше встановити програмне забезпечення обійшли apt і використали dpkg безпосередньо, це було б можливо. ЦЕ СПРАВУ НЕ ВИБУЛЯЄТЬСЯ, але я думаю, що щось помітне було б надруковано як у стандартному, так і у вихідному помилку
- Вихідні дані не включають вибрані вручну пакунки, від яких згодом залежав більш високий пакет. Вихід також може включати пакети, які були встановлені через apt іншим програмним забезпеченням для встановлення третьої сторони, а отже, не справді встановлені вручну. Однак, якщо мета виводу є основою для встановлення відновленого Linux з резервного
/homeкаталогу, який включає вказане програмне забезпечення сторонніх виробників, то такий вихід був би придатним.
- Деякі назви пакетів включають номери версій, а деякі ні. Згадується лише для того, щоб довести до відома факт.