Jak mohu uvést nainstalované balíčky podle data instalace?
Musím to udělat na debian/ubuntu. Odpovědi pro jiné distribuce by byly také hezké.
Nainstaloval jsem spoustu věcí, abych zkompiloval určitou část kódu, a chci získat seznam balíčků, které jsem musel nainstalovat.
Přijatá odpověď:
Distribuce založené na RPM, jako je Red Hat, jsou snadné:
rpm -qa --last
V Debianu a dalších distribucích založených na dpkg je váš konkrétní problém také snadný:
grep install /var/log/dpkg.log
Pokud nebyl soubor protokolu otočen, v takovém případě byste měli zkusit:
grep install /var/log/dpkg.log /var/log/dpkg.log.1
Obecně dpkg
a apt
nezdá se, že by sledovali datum instalace, protože žádné takové pole v dpkg-query
chybí manuálová stránka.
A nakonec starý /var/log/dpkg.log.*
soubory budou smazány rotací protokolu, takže tímto způsobem není zaručeno, že vám poskytne celou historii vašeho systému.
Jeden návrh, který se objeví několikrát (např. toto vlákno), je podívat se na /var/lib/dpkg/info
adresář.
Soubory tam naznačují, že byste mohli zkusit něco jako:
ls -t /var/lib/dpkg/info/*.list | sed -e 's/.list$//' | head -n 50
Chcete-li odpovědět na vaši otázku ohledně výběru, zde je první průchod.
sestavte seznam balíčků podle dat
$ find /var/lib/dpkg/info -name "*.list" -exec stat -c $'%nt%y' {} ; |
sed -e 's,/var/lib/dpkg/info/,,' -e 's,.listt,t,' |
sort > ~/dpkglist.dates
sestavení seznamu nainstalovaných balíčků
$ dpkg --get-selections | sed -ne '/tinstall$/{s/[[:space:]].*//;p}' |
sort > ~/dpkglist.selections
připojte se ke 2 seznamům
$ join -1 1 -2 1 -t $'t' ~/dpkglist.selections ~/dpkglist.dates
> ~/dpkglist.selectiondates
Z nějakého důvodu mi netiskne příliš mnoho rozdílů, takže může být chyba nebo neplatný předpoklad o tom, co --get-selections
znamená.
Balíčky můžete samozřejmě omezit buď pomocí find . -mtime -
head -n <řádky>
a změňte výstupní formát, jak chcete, např.
$ find /var/lib/dpkg/info -name "*.list" -mtime -4 |
sed -e 's,/var/lib/dpkg/info/,,' -e 's,.list$,,' |
sort > ~/dpkglist.recent
$ join -1 1 -2 1 -t $'t' ~/dpkglist.selections ~/dpkglist.recent
> ~/dpkglist.recentselections
zobrazit pouze výběry, které byly nainstalovány (změněny?) za poslední 4 dny.
Pravděpodobně byste také mohli odstranit řazení
příkazy po ověření pořadí řazení používaného dpkg --get-selections
a proveďte najít
příkaz efektivnější.