REBUILD-DETECTOR(1)
π¦ REBUILD-DETECTOR(1) β like, the manual page for rebuild-detector π¦
okay so bestie, welcome to rebuild-detector (that's the REBUILD-DETECTOR(1) page, General Commands Manual, if you're keeping receipts). This tool is literally your lil' detective for finding Arch Linux packages that were built against older versions of dependencies and therefore need to be rebuilt so they actually, y'know, function properly. π
Here's the vibe check on what it can spot:
- ldd: an executable is linked against a non-existent shared library π
- python: a package was built against an older Python version π
- perl: a package was built against an older Perl version πΈ
- ruby: a package was built against an older Ruby version π
- haskell: a package was built against an older Haskell version π§
β¨ Installation β¨
one command, no cap:
pacman -S rebuild-detector
slay. that's it. π
π Usage π
Run checkrebuild to see which packages need to be rebuilt. And if you see no output? that's not a bug, that's the good news β it means there is literally nothing to rebuild. π
Want a lil' more tea? Use verbose mode:
checkrebuild -v
That gives you a bit more information about why these packages are flagged. icon behavior, honestly. π«Ά
By default only packages from local repos (file://) are checked. If you want to include additional repos, use the -i flag like so:
checkrebuild -i repo1 -i repo2
yes, you stack them. one -i per repo. you got this. β
π What do I do if a package is flagged? π
First things first (fr fr), run:
checkrebuild -v
so you can see exactly why the package is flagged. don't just panic-rebuild, we're being methodical here. π₯
If a package is missing a .so file, that means the binary is linked against a library that is not present on your computer. This can happen for two reasons:
- You are missing a dependency entirely π
- The binary is linked against an older version of the installed dependency π
Case one: rebuilding cannot solve this. Sometimes it can be fixed by installing a missing dependency, but especially if a binary was built by someone else (typical for -bin packages) there is literally nothing you can do. not your fault bestie. π«Ά
Case two is the main character: it happens when a package was not flagged in the past, but is suddenly flagged after an update. In this case, checkrebuild -v might show that the missing library is e.g. *-7.so but you currently have *-8.so installed on your computer. This is the case rebuild-detector was built for: rebuild the flagged package and the error should be gone. periodt. β¨
And if you cannot fix the package, the only thing you can do is to ignore it altogether, i.e. next time run:
checkrebuild | grep -v broken-pkg
not ideal, but it's giving "self care". π
π Pacman hook π
A pacman hook is included in the distribution as well β yes, it comes with the whole fit. π
For performance reasons, the ldd check is only executed against direct dependencies of the packages that are being updated in this pacman transaction.
You can replicate this manually by passing the list of such packages on stdin, e.g.:
printf 'pkg1\npkg2' | checkrebuild
Just remember (important!!): this feature is intended for detecting packages that get broken by upgrading pkg1 and pkg2, so in this case ldd will not be checking binaries in pkg1 and pkg2 themselves, but rather the binaries of all packages who directly depend on pkg1 or pkg2. iykyk. π§ β¨
and that's the whole page, bestie. this cutie was brought to you by the December 2024 edition of REBUILD-DETECTOR(1) from General Commands Manual β go forth and rebuild responsibly. ππ¦πΈ
π¦ where this page comes from
- arch rolling: rebuild-detector 4.4.5-1 Β· ISC
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms