#!/bin/bash provided=$(mktemp) if grep -qxF 'ID=arch' /etc/os-release; then sources=( /var/lib/pacman/sync /mnt/archlinux/archlinux /mnt/archlinux ) sudo pacman -Sy >/dev/null || exit $? else >&2 echo 'skipping liste-verfuegbare-Versionen, because it currently does not reliably work on non-arch systems' exit 1 sources=( http://pkgcache.eckner.net/arch/x86_64/core/core.db.tar.gz http://pkgcache.eckner.net/arch/x86_64/extra/extra.db.tar.gz ) fi for i in "${!sources[@]}"; do source="${sources["${i}"]}" if [ -z "${source##*://*}" ]; then curl -Ss "${source}" \ | bsdtar -Oxz else find "${sources["${i}"]}" -name '*.db' \ -exec bsdtar -Oxzf {} \; \ 2>/dev/null fi \ | sed -n ' /^%\(NAME\|VERSION\)%$/ { N s/\n/ / p } /^%PROVIDES%$/,/^$/ { /^[^%]/ p } ' \ | sed -n ' s/^\(\S\+\)=\(\S\+\)-\(64\|32\)$/\2 \1/ T no_provides p d :no_provides /^%NAME%/ { N s/^%NAME% \(\S\+\)\n%VERSION% \(\S\+\)-\S\+$/\2 \1/ T p } ' \ | sed ' /^\(\S\+\) \1$/d s/^/'"${i}"' / ' done \ | sort -k3,3 -k1n,1 -k2Vr,2 \ | uniq -f2 \ | cut -d' ' -f2,3 \ >"${provided}" printf '%s\n' "${provided}"