.TH "REBUILD\-DETECTOR" "1" "March 2024" .SH "NAME" \fBrebuild-detector\fR .P This tool helps you find Arch Linux packages that were built against older versions of dependencies and therefore need to be rebuilt to function properly\. .P Supported checks: .RS 1 .IP \(bu 2 \fBldd\fP: An executable is linked against a non\-existent shared library .IP \(bu 2 \fBpython\fP: A package was built against an older Python version .IP \(bu 2 \fBperl\fP: A package was built against an older Perl version .IP \(bu 2 \fBruby\fP: A package was built against an older Ruby version .IP \(bu 2 \fBhaskell\fP: A package was built against an older Haskell version .RE .SH Installation .RS 2 .nf pacman \-S rebuild\-detector .fi .RE .SH Usage .P Run \fBcheckrebuild\fP to see which packages need to be rebuilt\. If you see no output, it means there is nothing to rebuild\. .P Use verbose mode \fBcheckrebuild \-v\fP to get a bit more information about why these packages are flagged\. .P By default only packages from local repos (\fBfile://\fP) are checked, if you want to include additional repos, use \fB\-i\fP flag like so: \fBcheckrebuild \-i repo1 \-i repo2\fP .SH What do I do if a package is flagged? .P First things first, run \fBcheckrebuild \-v\fP to see exactly why the package is flagged\. .P If a package is missing a \fB\|\.so\fP file, this means the binary is linked against a library that is not present on your computer\. It can happen for two reasons: .RS 1 .IP \(bu 2 You are missing a dependency entirely .IP \(bu 2 The binary is linked against an older version of the installed dependency .RE .P The first case cannot be solved by rebuilding the package\. Sometimes it can be fixed by installing a missing dependency, but especially if a binary was built by someone else (typical for \fB\-bin\fP packages) there is nothing you can do\. .P The second case happens when a package was not flagged in the past, but is suddenly flagged after an update\. In this case, \fBcheckrebuild \-v\fP might show that the missing library is e\.g\. \fB*\-7\.so\fP but you currently have \fB*\-8\.so\fP installed on your computer\. This is the case \fBrebuild\-detector\fP was built for: rebuild the flagged package and the error should be gone\. .P If you cannot fix the package, the only thing you can do is to ignore it altogether, i\.e\. next time run \fBcheckrebuild | grep \-v broken\-pkg\fP\|\. .SH Pacman hook .P A pacman hook is included in the distribution as well\. For performance reasons, the \fBldd\fP check is only executed against direct dependencies of the packages that are being updated in this pacman transaction\. .P This can be replicated manually by passing the list of such packages on stdin, e\.g\. \fBprintf 'pkg1\\npkg2' | checkrebuild\fP\|\. Just remember, this feature is intended for detecting packages that get broken by upgrading \fBpkg1\fP and \fBpkg2\fP, so in this case \fBldd\fP will not be checking binaries in \fBpkg1\fP and \fBpkg2\fP themselves, but rather the binaries of all packages who directly depend on \fBpkg1\fP or \fBpkg2\fP\|\.