Puncte:0

Ștergeți fișierele .deb ale pachetelor eliminate din apt-cache

drapel cn

apt-get autoclean șterge învechite .deb fisiere de la /var/cache/apt/archives director care nu mai sunt disponibile sau nu mai pot fi descărcate.

întrucât apt-a face curat șterge fiecare și fiecare .deb fișierul aflat în /var/cache/apt/archives director.

Vreau să șterg .deb fișierele numai ale acelor pachete care nu mai sunt instalate, au fost dezinstalate sau eliminate. Cum să facă acest lucru?

user535733 avatar
drapel cn
Presupun că ați putea să luați rezultatul „sudo apt-mark showremove”, să vă jucați puțin cu formatarea și să conectați acea listă la „sudo apt clean”
Puncte:0
drapel cn

APT se bazează pe fcntl(2) blocare; deoarece ubuntu nu oferă o comandă fcntl lock, puteți utiliza fcntl-lock utilitar pentru blocare (o clonă a comenzii de turmă a lui Peter Anvin, ușor depășită, totuși).

#!/bin/bash

apt_cache=/var/cache/apt/archives

# Link: https://github.com/magnumripper/fcntl-lock
# fcntl-lock este o clonă fcntl() a turmei lui H. Peter Anvin(1)
coproc LOCK {
    exec fcntl-lock \
    -x -w 3600 "$apt_cache/lock" -c 'echo true; pisica executiva
}
citește -ru ${LOCK[0]} || { \
    echo Nu s-a putut obține o blocare.
    iesirea 1
}

declara -a a=()
declara -A A=() B=()

# URL decodează numele fișierelor .deb.
cd „$apt_cache”
pentru b în *.deb; do
    printf -v c %b „${b//%/\x}”; A[$c]=$b
Terminat

# Puteți folosi @(rc|ii) pentru a adăuga mai multe abrev
în timp ce se citește -r d e; do
    [[ $d = ii ]] && B[$e]=1
gata < <( \
    dpkg-query \
        -Wf='${db:Status-Abbrev} ${Package}_${Version}_${Arhitecture}.deb\n' \
)

pentru f în „${!A[@]}”; do
    [[ ${B[$f]} = 1 ]] || \
        a+=("$apt_cache/${A[$f]}")
Terminat
((${#a[@]} > 0)) && \
    printf %s\0 „${a[@]}” | xargs -0 rm -v || iesirea 0

# echo Succes | ts >> /var/log/apt-archive-clean.log

Dacă vrei să automatizezi, cred că folosești systemd.path funcționează cel mai bine.

apt-archive-clean.path

[Unitate]
Descriere=Curățare arhivă APT

[Cale]
PathChanged=/var/cache/apt/archives/lock

[Instalare]
WantedBy=multi-user.target

apt-archive-clean.service

[Unitate]  
Descriere=Curăţare arhivă APT  
  
[Serviciu]  
Tip=simplu  
ExecStart=/opt/bin/apt-archive-clean.sh

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.