It does as it sounds, and much better than findbrokenpkgs
(AUR port of Gentoo's revdep-rebuild
script):
-
Analyzes optional dependencies (downloads but NOT installs) to exclude them from reported errors.
-
Has config file where you can add more directories to scan for bins & libs, add library search path for packages or files. Together with optdeps analysis it makes "your system is consistent" outcome reachable.
-
Really fast. Without optdeps analysis (i.e. with
-O
option, pretty useless mode) on my system with warm disk cache it takes 0.35s against 3m10s forfindbrokenpkgs
. (And with optdeps analysys, most of the time is consumed bypacman -Sw
validating checksums of optional deps even if they are already downloaded.)
-
You can install latest version from AUR: check-link-consistency-git. On ArtixLinux, you can install package
check-link-consistency
fromuniverse
repository (maybe outdated). Or you can clone or download sources, then runmake && sudo make install
. Binary will go to/usr/bin/
, sample config -- to/usr/share/check-link-consistency/
. -
Copy
/usr/share/check-link-consistency/check-link-consistency.conf.sample
to/etc/check-link-consistency.conf
and edit.
Run as root
. It does not perform any system modifications, but calls pacman -Sw
to download optional dependencies.
To see warnings and pacman -Sw
output, run with -v
option; it's useful to investigate problems. Try -h
for more options.
ATTENTION: First run downloads LOTS of packages. From now on, you don't want to run paccache -rvuk0
because I'll re-download everything again on next run; but you can safely run paccache -rvuk1
.
Binary distros need such tool much more than source-based. From user's point of view it's like static vs dynamic typing in programming languages: source-based distro checks package's dependencies when program builds, binary -- when it runs. Funny that I've hit this problem in less than a week after switching from Gentoo to Artix.
For 6 months I used version that performs not only .so
resolution, but also symbol resolution. Turned out 0% use + 100% trouble:
-
Never seen anything but false positives.
-
Config file is 5 times larger and requires editing on every upgrade of core packages like gcc, perl, python, nvidia drivers, etc. -- because lots of
.so
dependencies had to be specified manually and their paths contain versions. -
Correct
LOCAL
symbol resolution is still a mystery.