Yanıtlar:
Bu konuda Debian'da veya herhangi bir GNU / Linux kutusunda çalışan servislerin kendileri için bir sürümü olması gerekmez. Bunun yerine, hizmet veren tüm servis dosyalarının bir tür sürüm dizgisi vardır ve bir paketin parçasıdır. Çoğu bariz komut satırına cevap olsa eski gibi geçer, tüm cinleri olarak dışarı kazmak için oldukça zordur --version
veya -v
bir tahmin edebileceğiniz şekilde. İkincisi biraz daha kolaydır: sadece çeşitli daemon'ları başlatan tüm betiklerin bir listesini alabiliriz ve sonra bu dosyalar için paket bilgilerini listeleyebiliriz.
Bu tam olarak istediğin şey değildi, ama oldukça yaklaştı. En azından hangi paket sürümlerinin hangi hizmetleri sağladığını bileceksiniz. Aşağıdaki örnek, dizinde bir init-script veya -scripts sağlayan tüm paketlerin bir listesini üretecektir /etc/init.d/
.
#!/bin/sh
for pkg in $(for file in /etc/init.d/* ; do \
dpkg -S $file | awk -F: '{ print $1 }' ; \
done | sort | uniq) ; do
echo "$pkg: `dpkg-query -W -f='${Version}' $pkg`"
done
Bu geçmesi biraz zaman alacaktır, dpkg gezegendeki en hızlı şey değildir ve orada epeyce koşar. service --status-all
Yukarıdaki örnekte gösterilmeyen bazı şeyler de olacaktır . Bunun nedeni her paketi yalnızca bir kez sorguladığımız içindir (bu nedenle uniq
): bazı paketler birkaç init-script sağlar ve bu daha sonra çıktısına yansıtılır service --status-all
.