Burada benim için herhangi bir çözüm görmedim, dpkg ile bir kaç tane deb paket paketi kurdum ve özellikle aradığım bazı ürünler eksikti.
Oldukça uzun bir astar, ancak kopyalayıp yapıştırmak için uygun olacaktır:
export DPKG_INITIAL=$(mktemp) DPKG_INSTALLED=$(mktemp) DPKG_CUSTOM=$(mktemp) DPKG_DEPS=$(mktemp) zgrep -E '^Package' /var/log/installer/initial-status.gz | awk '{ print $2 }' > $DPKG_INITIAL ; awk '$3 !~ /install|remove|purge/ { next } { gsub(/remove|purge/, "uninstall", $3) ; gsub(/:.+/, "", $4) ; a[$4]=$3 } END { for (p in a) { if (a[p] == "install") { print p } } }' /var/log/dpkg.log | sort -u > $DPKG_INSTALLED ; comm -23 installed initial > $DPKG_CUSTOM ; function rdep() { apt-cache rdepends $1 | tail -n +3 | sed -e 's/^ //' -e '/^ /d' | cut -d':' -f1 | sort -u; } ; echo "$(for i in $(cat custom) ; do rdep $i ; done)" | sort -u > $DPKG_DEPS ; comm -23 custom deps > my-packages ; rm $DPKG_INITIAL $DPKG_INSTALLED $DPKG_CUSTOM $DPKG_DEPS
Yukarıdaki komut, mevcut çalışma dizininizdeki bir dosyaya bir paket listesi kaydeder my-packages.
açıklama
Önce, kurulum sırasında seçilen paketlerin taban çizgisini oluşturan bir paket listesi hazırladım.
zgrep -E '^Package' /var/log/installer/initial-status.gz | awk '{ print $2 }' > initial
Genel olarak kurulan öğelerin uzun bir listesini izledi.
awk '$3 !~ /install|remove|purge/ { next } { gsub(/remove|purge/, "uninstall", $3) ; gsub(/:.+/, "", $4) ; a[$4]=$3 } END { for (p in a) { if (a[p] == "install") { print p } } }' /var/log/dpkg.log | sort -u > installed
Daha sonra iki dosyayı karşılaştırdım initialve installedyalnızca yüklenen benzersiz öğeleri listeledik.
comm -23 installed initial > custom
Oradan bağımlılıkları filtrelemek istedim, bu, bu yöntemin bazı istenen paketleri kaçırabildiği yer, açık bir şekilde kurulmuş olan bağımlılıkların farkında değil.
Bu öğelerin işlenmesinde bu adımları kısaltmak için hızlı bir bash işlevi yazdım.
function rdep() { apt-cache rdepends $1 | tail -n +3 | sed -e 's/^ //' -e '/^ /d' | cut -d':' -f1 | sort -u; }
Bundan sonra her satırı customdosyamdan bu fonksiyona aktardım xargs.
echo "$(for i in $(cat custom) ; do rdep $i ; done)" | sort -u > deps
Her olası bağımlılığın uzun bir listesini yaptıktan sonra (her olası ifadede emin değilim), bir kez daha tek bir dosya için benzersiz olan satırları aldım.
comm -23 custom deps > manual
Ve bitmiş paket listem şimdi manualincelemem için hazır olan bir dosyada .
somethingve de değilsomething-common.