/usr/local/lib enthält Bibliotheken, die laut Aptitude nicht installiert sind

/usr/local/lib enthält Bibliotheken, die laut Aptitude nicht installiert sind

Ich versuche, ein Projekt zu erstellen, das eine bestimmte Bibliothek (SDL) unter Ubuntu verwendet. Das Projekt verwendet eine alte Version der Bibliothek (libSDL-1.2). Ich habe den Fehler gemacht, die neueste Bibliothek zu installieren, habe sie aber inzwischen entfernt. Ich kann jedoch immer noch Spuren davon in mehreren Ubuntu-Bibliotheksverzeichnissen finden.

Bildbeschreibung hier eingeben

In einigen Verzeichnissen gibt es eine richtige Version (/usr/lib/i386-linux-gnu/), während in anderen die neueste, falsche Version vorhanden ist (/usr/local/lib/). Warum habe ich diese Inkonsistenzen und wie entferne ich libSDL2 vollständig?

Antwort1

/usr/local/enthält Dateien, die nicht vom Paketmanager installiert wurden, sei es aufgrund einer manuellen Installation oder aufgrund zusätzlicher Dateien, die beispielsweise von einem Installationsskript aus einem Paket heruntergeladen wurden (obwohl diese meistens an gehen /opt/).

APT kennt daher die Dateien unterhalb dieses Verzeichnisses nicht. Wenn Sie die Bibliotheken manuell installiert haben, z. B. indem Sie dort ein Archiv entpackt haben, sollten Sie sie auf die gleiche Weise auch entfernen können.
Passen Sie jedoch auf, wenn Sie sie nicht manuell installiert haben. Teilen Sie uns in diesem Fall bitte mit, wie Sie sie installiert haben, damit wir Ihnen weiterhelfen können.

Eine andere Möglichkeit ist, dass die Bibliotheken vorhanden sind, weil sie möglicherweise von etwas anderem heruntergeladen wurden und nicht von der Installation von libsdl2 mit APT. Beispielsweise verwendet Valves Source Engine SDL2. Wenn Sie ein Source-basiertes Spiel installieren, z. B. Half Life oder Portal, lädt Steam seine eigenen Bibliotheken herunter (obwohl es sie im Stammverzeichnis des Benutzers behält). Sie könnten von etwas Ähnlichem stammen. Wenn Sie keine Ahnung haben, woher sie stammen, lassen Sie sie so. Sie werden Ihre Entwicklung nicht stören, wenn sie richtig ausgeführt werden (siehe unten), und das Löschen kann eine andere Anwendung beschädigen.

Wenn Sie SDL1.2 weiterhin verwenden möchten, sollten Sie dies tun können, ohne die anderen Bibliotheken zu entfernen: Weisen Sie den Compiler/Linker an, die älteren Bibliotheken zu verwenden. Gemeinsam genutzte SDL2-Bibliotheken werden immer aufgerufen libsdl2-....so, verknüpfen Sie also einfach mit den richtigen Bibliotheken, ohne dass sdl2dort das steht.

verwandte Informationen