Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

Welke packages heb ik geïnstalleerd?

Pagina: 1
Acties:

Vraag


  • aawe mwan
  • Registratie: december 2002
  • Laatst online: 19:30

aawe mwan

Wat ook leuk is:

Topicstarter
Volgens mij kan een package op je systeem geïnstalleerd worden om 3 redenen:
  1. Automatisch vanuit de distributie
  2. Handmatig geïnstalleerd
  3. Automatisch vanwege een dependency van een van de bovenstaande
Ik wil mijn computer opnieuw installeren via een Ansible playbook en ben daarom op zoek naar een lijst van packages die ik de afgelopen jaren handmatig (dus niet automatisch) geïnstalleerd heb.

Nou dacht ik een hele tijd geleden dat ik de manier gevonden had, ik had er een script voor geknutseld:

code:
1
2
3
4
5
6
7
8
9
10
gunzip -c /var/log/apt/history.log.*.gz | \
cat - /var/log/apt/history.log | \
awk '
$1=="Commandline:" &&
$2~/^apt$|^apt-get$/ && 
$3~/^install$|^remove$/ {
 for (f=4; f<=NF; f++) if ($f !~ /^-/) package[$f]=$3}
END {
 for (f in package) print package[f],f}
' | sort


Zo krijg ik een lijstje van packagenamen met per package de laatste actie: ofwel install ofwel remove.
Nou blijkt dit helaas niet te werken, want: de apt historie gaat maar 12 maanden terug!

Welke andere methode heb ik nu nog om de handmatig geïnstalleerde packages te achterhalen?
Ik gebruik Ubuntu 16.04 en 18.04.

En als vervolgvraag: hoe gaat dit in de toekomst als ik straks mijn computer via Ansible beheer. Ik dacht dat ik de setting in het bestand /etc/logrotate.d/apt kan ophogen van 12 maanden naar 12 jaar. Maar wat ik natuurlijk ook kan doen is regelmatig via Ansible dit lijstje van packages opvragen en aan de hand daarvan automatisch het Ansible playbook bijwerken. Zijn er al tweakers die dat doen?

老厮是麂

Alle reacties


  • AlterEgo
  • Registratie: juli 2001
  • Niet online
[edit] Uit je vervolgvraag begrijp ik dat je logrotate hébt aangepast, sorry.

Je moet rekening houden met de manier waarop je log-daemon geconfigureerd is. Na zoveel tijd is het niet meer history.log, maar history.log.1.gz etc. Of iets dat daarop lijkt. Die zul je mee moeten nemen in je benadering, om alle packages mee te nemen.

Ik vond dit als andere benadering. Ik zie echter teveel packages als handmatig geinstalleerd gemarkeerd op mijn systeem.

[Voor 41% gewijzigd door AlterEgo op 16-05-2020 09:36. Reden: Uit je vervolgvraag begrijp ik dat je logrotate hébt aangepast, sorry.]

Linux: voor blije, gezonde hardware


  • Dirk
  • Registratie: november 2004
  • Laatst online: 00:14

Dirk

Coördinator Frontpagemoderatie
dpkg-query -W
dit wil je hiervoor gebruiken. En dan met met de -f optie het output-formaat aanpassen.

[Voor 5% gewijzigd door Dirk op 16-05-2020 09:42]

All statements are true in some sense, false in some sense, meaningless in some sense, true and false in some sense, true and meaningless in some sense, false and meaningless in some sense, and true and false and meaningless in some sense.


  • aawe mwan
  • Registratie: december 2002
  • Laatst online: 19:30

aawe mwan

Wat ook leuk is:

Topicstarter
@AlterEgo
Dat klopt. Dat zit min of meer ook verwerkt in het script, kijk maar eens naar het stuk tussen de code tags in mijn originele post.

Van oud naar nieuw moet je de logs verwerken in deze volgorde:
  • /var/log/apt/history.log.??.gz in omgekeerde volgorde op naam gesorteerd
  • /var/log/apt/history.log.?.gz in omgekeerde volgorde op naam gesorteerd
  • /var/log/apt/history.log
Als je de gz bestanden op datum sorteert, dan is dat natuurlijk beter. Dit zit niet netjes in het script, dat geef ik toe. Ik miste wat packages in mijn lijstje en ik dacht dat het kwam doordat ik de logs in de verkeerde volgorde aan het verwerken was. Maar toen ik wat beter keek, zag ik dat er maar 12 maanden aan logs blijft staan. Het is mogelijk om dit op te hogen, maar voor mij is dat nu natuurlijk te laat.

@Dirk
Ik heb dit gedraaid:
dpkg-query -W | wc --lines
en krijg dan als resultaat:
3753

Ik vraag me af of ik echt 3753 packages met de hand geïnstalleerd heb? Ik heb even door het lijstje gekeken, maar zie er bijvoorbeeld een stuk of 50 kernel versies in staan, ik weet niet of die op dit moment nog allemaal op mijn machine staan, maar ik heb ze in elk geval niet allemaal met de hand geïnstalleerd.

[Voor 4% gewijzigd door aawe mwan op 16-05-2020 09:58]

老厮是麂


  • NielsFL
  • Registratie: februari 2020
  • Niet online
apt-mark showmanual ? Zitten alsnog dependencies tussen, maar alleen van wat je zelf hebt geinstalleerd.

EDIT: met apt-mark minimize-manual kun je dat iets verbeteren zie ik nu, maar alsnog niet 100%.

[Voor 32% gewijzigd door NielsFL op 16-05-2020 10:16]


  • aawe mwan
  • Registratie: december 2002
  • Laatst online: 19:30

aawe mwan

Wat ook leuk is:

Topicstarter
Ik had zelf nog deze gevonden, een optie die precies lijkt te zeggen wat ik zoek:
apt list --manual-installed | wc --lines
Maar helaas:
2365

@NielsFL
Dat is een mooie en het is ook een die ik in de update van @AlterEgo zag. Met wat aanpassingen heb ik er dit van gemaakt:

code:
1
2
3
4
5
6
comm -23 \
<(apt-mark showmanual | sort -u) \
<(gzip -dc /var/log/installer/initial-status.gz | sed -n 's/^Package: //p' | sort -u) | \
grep -v '^lib' | \
grep -v '^linux-' | \
wc --lines

Dit geeft op de 16.04 machine:
285

Dat lijkt nog wat te veel, maar dit komt best wel goed in de buurt. Er zitten inderdaad nog wel dependencies tussen. De bestanden in de folder /var/log/installer lijken, aan het jaartal te zien, alleen te gaan over de originele installatie, niet uit over de versieupgrade(s) die je daarna nog gedaan hebt. En op een 18.04 systeem dat ik als "server" geïnstalleerd heb, staan compleet andere bestanden in deze directory.

De versie van apt-mark in Ubuntu 16.04 en 18.04 lijkt te oud voor minimize-manual.
Op het systeem dat ik geupgrade heb van 18.04 naar 20.04 werkt het wel: met apt-mark showmanual zag ik daar eerst 1575 packages, na uitvoeren van de minimize-manual zag ik er nog maar 399. En de output van de code hierboven, ging op die machine naar beneden van 105 naar 95.

老厮是麂


  • Hero of Time
  • Registratie: oktober 2004
  • Laatst online: 22:53

Hero of Time

Moderator NOS

There is only one Legend

De lage aantallen die je ziet kloppen wel redelijk. Ik heb na de installatie van m'n eigen systeem handmatig alle packages via aptitude gemarkeerd als 'automatically installed' als hier een depend aan hing (dus libapt gemarkeerd als auto, want apt heeft deze nodig).

Door deze actie heb ik 1455 packages op m'n systeem staan, waarvan 207 'handmatig'. Veel van de packages die als handmatig gemarkeerd stonden na een verse installatie zitten hier niet meer tussen als die packages eigenlijk een dependency waren voor een andere.

Je kan dus nog eens met aptitude (wat overigens echt krachtig is als je 't even door hebt, moet je wel apart installeren) kijken of er packages zijn gemist om te markeren als 'auto installed'.

Commandline FTW | Tweakt met mate


  • vso
  • Registratie: augustus 2001
  • Laatst online: 01:05

vso

raap voor zijn recht

@aawe mwan en hoe ondervang je package in package / github / en andere meuk ?
Dus npm/pip achtige meuk ..

[Voor 15% gewijzigd door vso op 16-05-2020 11:48]

Gevonden gramatica fouten, mag je houden

Pagina: 1


Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2021 Hosting door True