HINWEIS: das findlibcruft.sh ist obsolete. Der Nachfolger ist
gentoo-decruft.sh
Hallo Leute,
wer noch das stabile Portage-2.1 nutzt, kennt das Problem:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
|
Old versions of installed libraries were detected on your system.
In order to avoid breaking packages that depend on these old libs,
the libraries are not being removed. You need to run revdep-rebuild
in order to remove these old dependencies. If you do not have this
helper program, simply emerge the 'gentoolkit' package.
# revdep-rebuild --library libjpeg.so.7
Once you've finished running revdep-rebuild, it should be safe to
delete the old libraries. Here is a copy & paste for the lazy:
# rm '/usr/lib64/libjpeg.so.7'
|
Wenn man die Meldung übersieht, hat man eine "Leiche" im System, die schwer nachvollziehbare Probleme verursachen kann.
Weil ich aktuell auch ein Paar Probleme auf dem System habe, die ich nicht nachvollziehen kann, habe ich mir ein Check-Skript geschrieben. Folgendes kann man im Programm am Anfang einstellen:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
logfile=/var/log/cruft.log
# Parallel equery
parallel=2
# FindLibCruft Mode:
# logfile logfile only (standard)
# revdep logfile + revdep-rebuild
# move logfile + revdep-rebuild + move file to *.cruft
# delete logfile + revdep-rebuild + delete file
mode=move
# Rebuild Tool:
# revdep-rebuild from app-portage/gentoolkit
# reconcilio from sys-apps/paludis
revtool=revdep-rebuild
|
Das Programm arbeitet in zwei Schritten. Zuerst werden die Nicht-Symlink Dateien geprüft, ob sie durch Portage installiert wurden.
Im zweiten Schritt werden die Symlinks geprüft, ob diese noch auf vorhandene Dateien zeigen. (Ohne equery)
Falls man sich für den Modus "move" entscheidet, hier ist der Einzeiler, um die umbenannten Dateien nach der Prüfung zu löschen.
|
Quellcode
|
1
|
while read file; do rm "$file.cruft"; done < /var/log/cruft.log
|
Oder zurück umbenennen:
|
Quellcode
|
1
|
while read file; do mv "$file.cruft" "$file"; done < /var/log/cruft.log
|