Friday, April 19, 2024
 Popular · Latest · Hot · Upcoming
10
rated 0 times [  10] [ 0]  / answers: 1 / hits: 22925  / 2 Years ago, thu, may 19, 2022, 9:36:14

I want to know a way to clean the var/cache/apt folder in a way that it only leaves the latest version of a package if it has several versions or it leaves a package if it is the only one of that program.



For example I have several vlc packages (vlc_1.1.11, vlc_1.1.12..) and several wine packages (wine1.3_1.3.34,wine1.3_1.3.35,wine1.3_1.3.36,wine1.3_1.3.37...) and many others like this.



So how to do a clean up in this folder that it leaves only the latest packages. At the moment I have 2.5GB and most of it are just older packages mixed with the newer ones.


More From » apt

 Answers
1

I propose the following bash script



#!/bin/bash

cd /var/cache/apt/archives/
printf '%s
' *.deb |
awk -F_ '{ print $1 }' |
sort -u |
while read pkg; do
pkg_files=($(ls -t "$pkg"_*.deb))
nr=${#pkg_files[@]}
if ((nr > 1)); then
unset pkg_files[0]
echo rm "${pkg_files[@]}"
fi
done


Remove the echo from the rm line if you are satisfied with the output list.



What it does?




  1. It list all deb package files

  2. remove everything in the filename from the first "_" to the end, obtaining the package name

  3. sort the names, removing duplicates

  4. for each name




    1. list the package files corresponding to that name in time order

    2. count the number of package files in the list

    3. if there is more than one package in the list




      1. remove from the list the first and newer file

      2. remove from the disk all other files corresponding to that name





It could be improved in efficiency, by listing only package files corresponding to package names obtained from the difference between sort and sort -u.


[#40878] Saturday, May 21, 2022, 2 Years  [reply] [flag answer]
Only authorized users can answer the question. Please sign in first, or register a free account.
splenueak

Total Points: 448
Total Questions: 118
Total Answers: 110

Location: Vanuatu
Member since Mon, Oct 3, 2022
2 Years ago
;