/usr/local/lib содержит библиотеки, которые, как сообщает Aptitude, не установлены

/usr/local/lib содержит библиотеки, которые, как сообщает Aptitude, не установлены

Я пытаюсь создать проект, который использует определенную библиотеку (SDL) в Ubuntu. Проект использует старую версию библиотеки (libSDL-1.2). Я допустил ошибку, установив новейшую библиотеку, но затем удалил ее. Однако я все еще могу найти ее следы в нескольких каталогах библиотек Ubuntu.

введите описание изображения здесь

В некоторых каталогах есть правильная версия (/usr/lib/i386-linux-gnu/), а в других — самая новая, неправильная версия (/usr/local/lib/). Почему у меня возникают эти несоответствия и как полностью удалить libSDL2?

решение1

/usr/local/содержит файлы, которые не устанавливаются менеджером пакетов, будь то из-за ручной установки или дополнительных файлов, загруженных, например, скриптом установщика из пакета (хотя они в основном попадают в /opt/).

Поэтому APT не знает о файлах, находящихся ниже этого каталога. Если вы установили библиотеки вручную, например, извлекая архив там, вы также должны иметь возможность удалить их таким же образом.
Обратите внимание, однако, если вы не устанавливали их вручную. В этом случае, пожалуйста, сообщите нам, как вы их установили, чтобы получить дальнейшую и лучшую помощь.

Другая возможность заключается в том, что библиотеки могут быть там, потому что они могли быть загружены чем-то другим, а не при установке libsdl2 с помощью APT. Например, Source Engine от Valve использует SDL2. Когда вы устанавливаете игру на основе Source, например Half Life или Portal, Steam загрузит свои собственные библиотеки (хотя он хранит их в домашнем каталоге пользователя). Они могут быть получены из чего-то похожего. Если вы понятия не имеете, откуда они взялись, оставьте их. Они не помешают вашей разработке, если все сделано правильно (см. ниже), а удаление может сломать какое-то другое приложение.

Если вы хотите продолжить использовать SDL1.2, вы должны иметь возможность сделать это, не удаляя другие библиотеки: сообщите компилятору/линковщику, чтобы он использовал старые библиотеки. Общие библиотеки SDL2 всегда называются libsdl2-....so, поэтому просто скомпонуйте с правильными библиотеками без sdl2.

Связанный контент