Burada yalnızca şu anda yüklü olan üst düzey paketleri yazdıran komut dosyasıdır , burada "üst düzey paketler", başka hiçbir atp paketinin bağımlı olmadığı atp paketleri olarak tanımlanır. Bu üst düzey programlar atp veya sinaptik gibi bir paket yöneticisi tarafından yüklendiyse, kullanıcı tarafından manuel olarak seçildiler.
#!/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"
Paketler, kullanıcının daha yeni bilgileri daha erken istemesi ve programın yavaş olması nedeniyle ters sırada yazdırılır.
Program akışı:
- Program önce altındaki tüm dosyaları okuyarak kurulu tüm paketleri bir liste halinde toplar
/var/lib/dpkg/info/
. Dosya mod süreleri kurulum süreleridir.
- Bu liste ters sırada sıralanır.
- Yüklü her paket için
$Pkg
, apt-cache rdepends $Pkg
ters bağımlılıklarını isteyen bir çağrı $Pkg
. Bağımlılık yoksa, üst düzey bir pakettir ve paket bilgisi yazdırılır: tarih saat paketgeniş adı
Notlar:
- Senaryo, çıktı biçimi
apt-cache rdepends $Pkg
insan gözü için tasarlanmıştır ve apt'in gelecekteki sürümlerinde değişebilir.
- / Var / lib / dpkg / info / altındaki dosya adlarını toplayan parçanın kodu bu unix.stackexchange gönderisinden geldi
. O 'mikel' posterinin işaret ettiği gibi,
dpgk
tarih günlükleri güvenilir değildir, çünkü belirli bir hacme ulaştıktan sonra döndürüleceklerdir.
- İçin sayfa
apt-chache
- Çağrı
apt-cache rdepends ...
her çağrı tüm bağımlılıkları ile iterating hesaplanır çünkü çok yavaş muhtemelen olduğunu. Bu nedenle, yukarıdaki komut dosyası, kullanıcıya mümkün olan en hızlı memnuniyeti sunmak için en yeni yüklemelerden başlar.
--installed
Sonra bayrak apt-cache
dpkg yüklenmiş paketleri de apt yüklenmiş olan çekler. Kullanıcı veya başka bir yükleme yazılımı apt'yi atladı ve doğrudan dpkg kullandıysa, bu mümkün olurdu. BU DURUM TEST EDİLMEDİ, ancak standart veya hata çıktısında fark edilebilir bir şey basılacağını düşünüyorum
- Çıktı, daha sonra daha yüksek bir pakete bağlı olan manuel olarak seçilen paketleri içermez. Çıktı, diğer üçüncü taraf yükleme yazılımları tarafından uygun şekilde kurulan paketleri de içerebilir ve bu nedenle gerçekten elle yüklenmez. Bununla birlikte, çıktının amacı,
/home
bahsedilen üçüncü taraf yazılımını içeren bir yedekleme dizininden geri yüklenen bir linux kurmak için bir temel ise , bu çıktı uygun olacaktır.
- Paket adlarından bazıları sürüm numaraları içerir, bazıları içermez. Sadece gerçeğe farkındalık getirmek için bahsedildi.