diff --git a/setup/packages/desktop-packages b/setup/packages/desktop-packages index a98f72b..e2ae307 100644 --- a/setup/packages/desktop-packages +++ b/setup/packages/desktop-packages @@ -8,7 +8,12 @@ decibels espanso-wayland desktop-file-utils dnf-plugins-core -ffmpeg +# ffmpeg is deliberately NOT here: Fedora ships ffmpeg-free, and installing +# RPM Fusion's ffmpeg over it is a CONFLICT, not an addition -- dnf refuses +# the whole transaction rather than erase the preinstalled one. The codec +# section swaps ffmpeg-free -> ffmpeg with --allowerasing, which is the only +# correct way to make that trade. A fresh Workstation install found this; a +# machine that already had ffmpeg never would. firamono-nerd-fonts # A second engine to check pages against; Helium is the daily driver. Its # chrome is themed from config/firefox, which link-dotfiles places into the diff --git a/setup/scripts/install-packages b/setup/scripts/install-packages index c280d3f..cc059b0 100755 --- a/setup/scripts/install-packages +++ b/setup/scripts/install-packages @@ -28,9 +28,14 @@ packages_in() { report_missing() { local file="$1" name missing=() for name in $(packages_in "$file"); do - # --whatprovides, because several list entries are capabilities a - # differently-named package satisfies: awk is gawk, wget is wget2-wget. - rpm -q --whatprovides "$name" >/dev/null 2>&1 || missing+=("$name") + # Three ways a list entry can be satisfied: it is a package name + # (rpm -q), a capability another package provides (--whatprovides, + # e.g. wget -> wget2-wget), or a bare command name provided as a file + # path (command -v, e.g. awk -> /usr/bin/awk from gawk, which + # --whatprovides misses because the provide is the path, not the word). + rpm -q --whatprovides "$name" >/dev/null 2>&1 && continue + command -v "$name" >/dev/null 2>&1 && continue + missing+=("$name") done (( ${#missing[@]} > 0 )) && log "WARNING: not available on this machine: ${missing[*]}" return 0