diff options
-rwxr-xr-x | find-broken-perl-packages.sh | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/find-broken-perl-packages.sh b/find-broken-perl-packages.sh new file mode 100755 index 0000000..1b09144 --- /dev/null +++ b/find-broken-perl-packages.sh @@ -0,0 +1,21 @@ +#!/bin/bash +perllibpath="/usr/lib/perl5/vendor_perl/auto/" + +tmpdir=$(mktemp -d /tmp/find-broken-perl-package.XXXXXXXX) +find "$perllibpath" -name "*.so" | + sed \ + -e "s|$perllibpath||" \ + -e 's|/|::|g' \ + -e 's|.so$||' \ + -e 's|\(.*\)::.*$|\1|' | + while read module; do + output=$(perl -M$module -e1 2>&1) + if grep -q "perl: symbol lookup error:" <<< $output; then + sed -n 's|perl: symbol lookup error: \(.*\): undefined symbol: .*|\1|p' <<< $output >> $tmpdir/raw.txt + echo $module >> $tmpdir/perl-modules.txt + fi + done + +pacman -Qqo $(<$tmpdir/raw.txt) &> $tmpdir/pacman.txt + +echo "tempdir is \"$tmpdir\"" |