#!/bin/zsh # pacverify - verify all pacman packages against installed files export LC_ALL=C setopt GLOB_ASSIGN for pkgname in ${(f)*:-"$(pacman -Q)"}; do pkgfile=(/var/cache/pacman/pkg/${pkgname/ /-}*pkg*(OnN)) if (( $#pkgfile )); then bsdtar -cf - --format mtree --options mtree:sha256 @- <$pkgfile[1] | while read -r -A line; do if [[ $line[-1] == sha256digest=* && $line[1] != ./.* ]]; then print "${line[-1]#sha256digest=} /${(g:o:)line[1]}" fi done | sha256sum -c --quiet 2>&1 | grep -v "no properly formatted SHA256 checksum lines found" | # empty pkg sed "s|^|$pkgname: |" else echo "$pkgname: package file NOT FOUND" fi done