26 lines
1 KiB
Bash
Executable file
26 lines
1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Remove unused dependencies that are not explicitly installed
|
|
# Usage: [sudo] cleandependencies
|
|
|
|
# Retrieve a list of all packages that are not explicitly installed and are not needed by anything else.
|
|
# Note that optional dependencies also do not get removed.
|
|
# function getList () {
|
|
# grep "Name\|Required By\|Optional For\|Install Reason" <<< $(pacman -Qi) |
|
|
# tr '\n' ';' | sed "s/$/\n/" |
|
|
# sed "s/ */ /g" |
|
|
# sed "s/Name/\nName/g" |
|
|
# sed "s/\(Name\|Required By\|Optional For\|Install Reason\) : //g" |
|
|
# grep "Installed as a dependency for another package" |
|
|
# grep "^[^;]*;None;None" |
|
|
# cut -f 1 -d ';'
|
|
# } ; export -f getList
|
|
|
|
current_amount=$(pacman -Qdtq | wc -l)
|
|
# Keep looping while there are unusded dependencies.
|
|
# Stop when the next amount is the same, probably because the action was canceled.
|
|
while [[ ${current_amount} -ne 0 && ${current_amount} -ne ${previous_amount:=0} ]] ; do
|
|
previous_amount=${current_amount}
|
|
pacman -R $(pacman -Qdtq)
|
|
current_amount=$(pacman -Qdtq | wc -l)
|
|
done
|
|
|