Vraag Hoe krijg ik de geschiedenis van "apt-get install" op Ubuntu?


Ik ben bezig met het verplaatsen van een server van de ene Ubuntu-box naar de andere. Ik kloneer de oude doos niet naar de nieuwe; Ik maak een nieuw systeem aan en zal indien nodig gegevens verplaatsen. Ik wil alle software die ik heb op de oude doos op de nieuwe installeren.

Is er een eenvoudige manier om de geschiedenis te vinden van alle "sudo apt-get install" -opdrachten die ik in de loop van de tijd heb gegeven? Dat wil zeggen, dpkg -l toont me alle pakketten die zijn geïnstalleerd, maar niet welk pakket op het hoogste niveau ze heeft geïnstalleerd. Als er een manier is waarop dpkg mij het installatiepakket kan geven, kan ik daar de unieke vinden; anders wil ik iets anders om te zeggen "u hebt deze 24 pakketten geïnstalleerd".


71
2017-08-28 00:14


oorsprong


Aha! het is al eerder gevraagd en heeft een goed antwoord. - Gilles
Kun je een antwoord hieronder accepteren? Dankbaar zijn aan mensen die hebben geantwoord. - m-ric
Mogelijk duplicaat van Hoe een lijst van alle root / hoofdgeïnstalleerde pakketten op Debian te krijgen - Rob Moir
Deze oplossingen controleren alleen wat er is gebeurd NA de laatste logboekrotatie. Ze controleren niet alle geschiedenis. - Kraang Prime


antwoorden:


De apt geschiedenis is binnen /var/log/apt/history.log zoals gezegd in een opmerking hierboven. Dat gezegd hebbende, dit zal geen lijst zijn van pakketten die handmatig werden geïnstalleerd, met behulp van dpkg of GUI's zoals gdebi. Om alle pakketten te bekijken die zijn doorgegaan dpkg, je kunt kijken /var/log/dpkg.log.


59
2017-08-28 08:53





http://www.debianadmin.com/clone-your-ubuntu-installation.html

en /var/adm/apt/history.log


6
2017-08-28 00:31



De procedure in de eerste koppeling maakt geen onderscheid tussen automatisch geïnstalleerde pakketten en handmatig geïnstalleerde pakketten. /var/log/apt/history.log (je hebt trouwens de verkeerde locatie) zal na een paar maanden weg geroteerd zijn. - Gilles
Gilles heeft gelijk in beide opzichten. Ik heb slechts die maand de waarde van die logs en ik kan niet eens zien hoe de verwijderingsratio van het log is ingesteld (het is gedaan met 'newsyslog' op FreeBSD). Dus ik heb nog steeds geen oplossing, maar ik heb enkele tips. Ik kan de uitvoer van het commando in het kloonartikel op zijn minst grepen, zoeken naar "high-level" namen, deze op de nieuwe installeren, hetzelfde doen in de nieuwe box, de twee resultaten verschuiven en herhalen tot tevreden. Ik zou nog steeds graag meer ideeën horen. - Paul Hoffman


U kunt pakketten vermelden waarvan de installatie expliciet is aangevraagd apt-mark.

apt-mark showmanual

In het geval dat u een oude release van Debian uitvoert, is hier een handmatige manier.

De volgende opdracht geeft de lijst met pakketten waarvan de installatie is aangevraagd, handmatig of automatisch. Tenzij u bezig bent met het (de) installeren van pakketten, is dit de lijst met geïnstalleerde pakketten.

dpkg --get-selections | sed -n 's/\t\+install$//p'

De volgende opdracht geeft een superset van automatisch geïnstalleerde pakketten:

</var/lib/apt/extended_states awk -v RS= '/\nAuto-Installed: *1/{print$2}'

Alles bij elkaar bevat de volgende opdracht handmatig geïnstalleerde pakketten:

comm -23 <(dpkg --get-selections | sed -n 's/\t\+install$//p') \
         <(</var/lib/apt/extended_states \
           awk -v RS= '/\nAuto-Installed: *1/{print$2}' |sort)

4
2017-08-28 08:11



--- heel anders resultaat van comm -23 <(apt-mark showmanual | sort -u) <(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u) - Cbhihe
Op Debian is dat zo apt-mark showmanual wat gelijk is aan je laatste commando. - maxschlepzig


grep -i "Commandline" /var/log/apt/history.log

Toont alle pakketten die u hebt geïnstalleerd met behulp van: sudo apt-get install xxxxx


1
2018-04-01 22:47



Dit verschilt niet voldoende van het antwoord van @ ℝaphink en zou een opmerking moeten zijn. - Karl Richter


In plaats van de tac / head-combinatie, is het beter om staart te gebruiken (voor de laatste 25 lijnen):

tail -n 25 /var/log/apt/history.log

0
2017-10-21 16:47



Dit verschilt niet voldoende van het antwoord van @ ℝaphink en zou een opmerking moeten zijn. - Karl Richter
Het is ook niet hetzelfde. tail zal de laatste regels in het bestand vermelden, in de volgorde waarin ze in het bestand zijn. tac zal de volgorde omdraaien zodat de laatste regel nu als eerste staat, de voorlaatste is de tweede, enz. Ook weer lijkt het erop dat je het risico loopt verkeerd te zijn wanneer je zegt dat iets "beter" is zonder uit te leggen waarom. Ik bedoel, "beter" volgens wie? Voor welke vereiste? Het lijkt een beetje zelfverzekerd. - Todd Walton


Om de lijst van meest recente geïnstalleerde pakketten in aflopende volgorde te krijgen, gebruik ik graag (bijvoorbeeld 25 regels):

tac /var/log/apt/history.log |head --lines=25

-1
2017-08-21 10:56



Efficiënter (en alliteratief) zou zijn: tail -25 /var/log/apt/history.log | tac - agc
Dit verschilt niet voldoende van het antwoord van @ ℝaphink en zou een opmerking moeten zijn. - Karl Richter