GNU/Linux >> Znalost Linux >  >> Debian

Debian – Seznam balíčků na systému založeném na Apt podle data instalace?

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 - nebo 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ší.


Debian
  1. Systém založený na Debianu, pouze jeden program Gui, nic jiného?

  2. Debian – nelze spustit instalaci Devuan/debian?

  3. Debian – Jak převést 32bitový (x86) systém založený na Debianu na 64bitový?

  1. Jak vypsat všechny nebo konkrétní balíčky nainstalované v systému Debian/Ubuntu Linux

  2. Přidejte blokové zařízení cdrom do seznamu zdrojů Debian apt

  3. Jak vypsat všechny balíčky v úložišti na Ubuntu, Debian nebo Linux Mint [APT]

  1. Instalace skriptu informací o systému inxi na Debian Wheezy

  2. Debian – Jak blokovat Non-free s předvolbami Apt?

  3. Debian – automatizace instalace jednotlivých balíčků Debian 8 s interaktivními výzvami?