Wie haelt man FreeBSD "Sauber" ?

MateJunk

BSD Fan :-)
Hallo zusammen,

auf meinen Arbeitsrechner zuhaus habe ich seit 2001 mein FreeBSD immer schoen in folgenden Schritten geupdatet (Stand zur Zeit 4.10):
cvsup -L 2 -g supfile (<- in diesem File steht dann sowas wie src-all und release=cvs tag=RELENG_4)

cd /usr/src
make buildworld
make buildkernel
make installkernel
reboot
make installworld
mergemaster
..... fertig :)

Ab und zu dann mal ein
portupgrade -ap (<-- moechte ja auf meinem 350 MHz Laptop nicht nochmal alles Kompilieren :) )
Gut ab und zu gab es dabei Probleme (zum Beispiel letzens bzgl. gettext 0.12. und 0.13 ) aber das habe ich immer irgendwie hinbekommen. Wenns dann immer noch nicht sauber lief dann hat auch ein
portupgrade -afp
meistens geholfen (dauert nur seeeehr lange )
Tja, seit Ostern komme habe ich hier auf meinem Arbeitsrechner zuhaus ein unerklaerliches Phaenomaen.
Zum Beispiel wenn ich wine aufrufe dann bekomme ich immer ein "Abort trap" oder wenn ich readertest (Chipkartenlesegeraet Test) so etwas wie:
/usr/libexec/ld-elf.so.1: /usr/local/lib/libpcsclite.so.0: Undefined symbol "pthread_mutex_lock"
An wine etc. liegt es nicht, weil ich in der Arbeit auch einen aktuellen FreeBSD Rechner (4.10) am laufen habe. Dort funktioniert alles. Und wenn ich zum Beispiel eine wine Version installiere die vorher auf meinen Rechner lief, bekomme ich die gleiche Meldung. Das selbe wine binary, mit scp auf meinem Laptop kopiert funktioniert ! Also kann es ja nur an meinem System liegen.
Ein portupgrade -af hat auch nichts gebracht.
Dann habe ich mir gedacht, Okay irgendwo liegt im System eine library rum die er beim Kompilieren mit einbindet und total veraltet ist, also habe ich mal kurz (naja hatte eher doch etwas gedauert) eine suche mit find /usr/local -type f -exec pkg_info -W {} \; auf Paketlose Dateien gestartet und habe diese gesichert und geloescht.
Dabei ist mir zum Beispiel folgendes aufgefallen:

Dass das gcc 3.3 Paket immer noch seine include headers unter /usr/local/lib/gcc-lib/i386-portbld-freebsd4.9/ und nicht /usr/local/lib/gcc-lib/i386-portbld-freebsd4.10/ stehen hatte.
Updatet das gcc Paket das nicht selber ?
Selbst bei portupgrade -af nicht ?

Das Verzeichniss /usr/local/lib/compat/pkg/ . In diesem Verz. befinden sich sehr viele librarys (auch aeltere. So ab 2002 aufwaerts) die zu keinem Paket gehoeren.
Was ist das fuer ein Verz. ?
Wird das fuer das Verz. fuer die BSD 4.3 Kompatibilitaet gebraucht ?
Oder wird das fuer die Linux Kompatibilitaet gebraucht ?
Aber das steht doch unter /usr/compat/linux ?

Naja habe das alles geloescht und nochmal ein portupgrade -af losgelassen. Hat nix gebracht. Immer noch die selben fehler :(

Dann habe ich mal gegoogelt und habe da so einpaar Tips gefunden wie:
Bevor man make installworld absetzt, sollte man doch vorher ein rm -r * unter /usr/lib und /usr/include ausfuehren.
Und wahrhaftig waren dort einpaar Headers und librarys die seit 2002 dort liegen.
Habe auch diese geloescht (natuerlich habe ich alles vorher weggesichert ! Ist wichtig, weil fuer das make installworld brauch man einpaar wichtige Librarys) und dann nochmal ein make buildworld, portupgrade -af etc.
Auch das hat nix gebracht. Ich kapier das einfach nicht ! Vielleicht werde ich es ja verstehen wenn ich das Buch: "The Design and Implementation of the 4.4 BSD Operating System" durch habe, aber das werd ich erst denaechst in Angriff nehmen :).
Okay, was ich nocht nicht probiert habe ist ein rm -r /usr/obj wie das hier im Forum mal zum Thema FreeBSD aktuell halten geschrieben wurde.

Was kann da an meinem System "krum" sein ?
Und viel wichtiger ist die Frage: Wie kann ich mein FreeBSD System "Sauber" halten ?
Gibt es da noch einpaar Tools wie portupgrade ?
Oder muss ich wirklich mal alle Pakete deinstallieren und dann wieder alles neu ? (Den Tip habe ich auch mal Web gefunden)
Habe aber nicht wirklich Lust wieder alle Pakete "neu auszuwaehlen". Gibt es dafuer ein kleines Tool ? (Ansonsten scripte ich schnell was in Perl oder sh)

Was ich vielleicht noch sagen sollte ist: mir ist aufgefallen, das mein System ca. zwischen Ende Maerz bis mitte April auf 4.10 Beta Stand. Habe aber nie was in meinem supfile geaendert ! Stand immer auf release=cvs tag=RELENG_4. Also wieso Beta ?

Ich hoffe irgend jemand kann mir hier Helfen oder einen Tipp geben oder zumindesten einige Fragen hier beantworten oder ein Link reicht mir auch .....*verzweifel* .....
 
Zuletzt bearbeitet:
libchk man page sagt man kann nicht einfach alles "blindly" deleten... leider hab ich aber keine ahnung ob ich ne lib brauch oder nicht wenn libchk mir diese reportet... was mach ich nu?
 
itti schrieb:
libchk man page sagt man kann nicht einfach alles "blindly" deleten... leider hab ich aber keine ahnung ob ich ne lib brauch oder nicht wenn libchk mir diese reportet... was mach ich nu?
Check doch einfach erstmal mit pkg_info, ob diese lib nicht von irgend einem Paket benutzt wird.
Zum Beispiel sagt mit libchk
Unreferenced library: /usr/X11R6/lib/libXaw.so.6

dann testen mit:
pkg_info -W /usr/X11R6/lib/libXaw.so.6

Dann erscheint sowas wie:
/usr/X11R6/lib/libXaw.so.6 was installed by package XFree86-libraries-4.3.0_7
 
MateJunk schrieb:
[...]

Ob es zu meinem wine etc. Problem hilft, mmmh .....

Leider nicht, ich habe immer noch das gleiche Phaenomaen :(.

Was mir allerdings mit libchk aufgefallen ist, ist folgendes:
Ich hatte ja mein /usr/lib Verz. komplett geloescht.
Jetzt war es aber so, das immer noch einige "System Programme"
von FreeBSD auf einige alte Librarys gelinkt sind, die es natuerlich
nicht mehr gab.
Zum Beispiel:
Unresolvable link(s) found in: /usr/bin/k5admin
libasn1.so.4
libroken.so.4
libkadm5srv.so.4
libkadm5clnt.so.4
libkrb5.so.4
libhdb.so.4
Dieses "System Programm" wurde zuletzt am 11 Jun 2002 installiert.
Ich dachte eigentlich das ein make installworld alle aelteren "System Programme" und librarys loescht (was wahrscheinlich aber etwas zu viel ertwartet waere).

Meine Frage ist weiterhin:
Ist ab und zu ein rm * in /usr/lib gut ?
Oder wie haltet ihr euer System "sauber" ?
Vielleicht mit find und der Option uptime ?
Klar kann man mit libchk und portsclean schonmal sehr viel muell rausfinden, aber eigentlich auch nur wenn man mal das /usr/lib aufraeumt bzw. loescht.

Aber gibt es da doch vielleicht noch ein kleines nuetzliches Tool oder Tip ?
 
Ich dachte eigentlich das ein make installworld alle aelteren "System Programme" und librarys loescht
Tut es nicht. Was ich mache: Ein 'ls -lt' in den betroffenen Verzeichnissen (z.B. /usr/lib, /usr/bin, /usr/sbin) zeigt dir die ältesten Files in den betroffenen Verzeichnissen an - diese erscheinen am Ende des Outputs. Sind diese älter als ein halbes Jahr, lösche ich sie...
 
hat sich schon jemand ein Shellscript geschrieben, welches die Ausgabe von libchk mit pkg_info -W prüft und ggf. die "löschbaren" Libs erstmal in ein tar.gz archiviert?
Könnte bei Bedarf in das Wiki geschrieben werden.
 
Für die Packages ist das ja noch relativ einfach.
Was mich interessieren würde, ist wie man das Basissystem säubern kann.
mergemaster arbeitet ja nur mit den Konfigurationsdateien, oder?

Wenn es da noch nichts gibt, werde ich heute mal was scripten.

Gruss...

Der Indy
 
Illuminatus schrieb:
hat sich schon jemand ein Shellscript geschrieben, welches die Ausgabe von libchk mit pkg_info -W prüft und ggf. die "löschbaren" Libs erstmal in ein tar.gz archiviert?
Könnte bei Bedarf in das Wiki geschrieben werden.

Schau dir mal portsclean(1) an, besonders die Option -L, das reicht dir ja vielleicht schon.
 
Zurück
Oben