Idempotentný apt purge

hknmtt

  • ****
  • 261
    • Zobrazit profil
    • E-mail
Idempotentný apt purge
« kdy: 01. 04. 2025, 17:33:16 »
Potrebujem zbehnut prikaz na odinstalovanie nejakych balikov na Ubuntu 24. Ked spustim
Kód: [Vybrat]
apt purge a b c -y -qq tak je vsetko v poriadku, na prvy krat. Ale ak ho spustim druhy krat, napriklad ked je to sucastou nejakeho skriptu, tak mi to zlyha s
Kód: [Vybrat]
E: Unable to locate package foo. Ako to mozem vynutit, pripade aky iny prikaz na odinstalovanie mozem spustit viacnasobne a nebude si stazovat? Na webe som nasiel zmienku o
Kód: [Vybrat]
--force-remove-reinstreq ale nechce mi to zobrat, neviem ci to apt podporuje alebo robim nieco zle s tym.


Jose D

  • *****
  • 908
    • Zobrazit profil
Re:Idempotentny apt purge
« Odpověď #1 kdy: 01. 04. 2025, 17:48:02 »
reálně .. si udělej nějaký wrapper na ansible.builtin.package [1]..

Ale jako jo, šlo by na to napsat oneliner do bashe s nějakými `dpkg` a `&&`.

[1] https://docs.ansible.com/ansible/latest/collections/ansible/builtin/package_module.html

hknmtt

  • ****
  • 261
    • Zobrazit profil
    • E-mail
Re:Idempotentny apt purge
« Odpověď #2 kdy: 01. 04. 2025, 17:49:08 »
Zda sa, ze najvhodnejsie riesenie je odinstalovat iba jeden balik naraz. Potom funguje aj -qqq aby si nestazoval.

hknmtt

  • ****
  • 261
    • Zobrazit profil
    • E-mail
Re:Idempotentny apt purge
« Odpověď #3 kdy: 01. 04. 2025, 18:04:40 »
Hm, tak nie. Stale si stazuje ak balik nejestvuje. Proste 2>/dev/null asi len
« Poslední změna: 01. 04. 2025, 18:08:45 od hknmtt »

hknmtt

  • ****
  • 261
    • Zobrazit profil
    • E-mail
Re:Idempotentny apt purge
« Odpověď #4 kdy: 01. 04. 2025, 18:25:33 »
Tak ani tak nie, lebo ak program neexistuje, apt mi exitne s kodom 100, co sa vyhodnoti ako zlyhanie.


k3dAR

  • *****
  • 3 150
  • porad nemam telo, ale uz mam hlavu... nobody
    • Zobrazit profil
    • E-mail
Re:Idempotentný apt purge
« Odpověď #5 kdy: 01. 04. 2025, 20:29:54 »
dohledani "nainstalovanejch"(nebo i odinstalovanejch pres 'remove' s pozustatkem conf aka rc) s jednoduchou for smyckou
Kód: [Vybrat]
packages="a b c d"
for i in ${packages}; do dpkg -l ${i} &>/dev/null && purge+=" ${i}"; done
apt -qq purge -y ${purge}

nebo obecna "prasarna", prepsat error code na 0 (pokud to mas s "set -e" kdy ti pri chybe script umyslne skonci)
Kód: [Vybrat]
apt -qq purge -y nenainstalovanej || true