blob: ad5df2664764ffc94dae1a374f96dd1ee300e826 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
#!/bin/bash
#
# Detect broken packages that need to be rebuilt
shopt -s nullglob
shopt -s extglob
get_broken_ldd_pkgs() {
while IFS= read -rd: dir; do readlink -f "$dir"; done <<<"$PATH" |
sort -u |
xargs -I{} find -L "{}" -maxdepth 1 -type f -print0 |
xargs -0 readlink -f |
sort -u |
parallel --will-cite 'ldd "{}" 2>/dev/null | grep "not found" >/dev/null && pacman -Qqo "{}"'
}
get_broken_python_pkgs() {
python_version="$(python --version | cut -d'.' -f2)"
pacman -Qqo /usr/lib/python3.!($python_version) 2>/dev/null
}
get_broken_perl_pkgs() {
perl_version="$(perl -v | grep -Po '\d+' | head -n2 | paste -sd '.\n')"
pacman -Qqo /usr/lib/perl*/!($perl_version) 2>/dev/null
}
get_broken_pkgs() {
{
get_broken_ldd_pkgs
get_broken_python_pkgs
get_broken_perl_pkgs
} | sort -u
}
get_repo_pkgs() {
pacman -Sl | cut -d' ' -f1-2
}
join -12 <(get_repo_pkgs | sort -k2) <(get_broken_pkgs) | awk '{ print $2 "\t" $1 }'
exit 0
|