LINUX.ORG.RU

> чтобы прогнать ldd по
> прогнать ldd

> ldd

> /bin /sbin /usr/bin /usr/sbin

> /lib /usr/lib


о, кажись я изобрёл эквалайзер

не проблема получить списки, не проблема сравнить, проблема в том, что там liba.so liba.so.5 liba.so.5.0.19

Woffice
() автор топика
Ответ на: комментарий от athost

Этим ты не отследишь неиспользуемые библиотеки, записей о которых нет в базе пакетов. Так что revdep-rebuild обязателен, там он этот список в конце выкидывает.

Lumi ★★★★★
()
Ответ на: комментарий от Woffice

lib.so и lib.so.6 это и есть дубликаты, то есть проверяй, ссылка это или нет, ссылки из списка удаляй. Битые ссылки, которые не указывают на файл библиотеки, совсем удаляй с диска.

Lumi ★★★★★
()
Ответ на: комментарий от Lumi

Битые ссылки я и так вижу красным в mc и могу прибить

Только не понял, как это поможет.

ну сделал я один список с помощью find /lib /usr/lib -type f -maxdepth 1 -name \*.so.\*

получил второй список с помощью ldd /bin/* /sbin/* ...

во втором списке - ссылка на lib.so.6, а в первом - файл lib.so.6.2.3, как отследить, что это один и тот же файл?

Woffice
() автор топика
Ответ на: комментарий от Woffice

> Битые ссылки я и так вижу красным в mc и могу прибить

Прошу прощения за маленький оффтоп. Для битых ссылок есть тулза:
emerge symlinks && man symlinks
symlinks -drv /
Одно "но" - работает в пределах одной файловой системы.

SmaL
()
Ответ на: комментарий от Woffice

Тебе же не только битые ссылки нужны.

> во втором списке - ссылка на lib.so.6, а в первом - файл lib.so.6.2.3, как отследить, что это один и тот же файл?


У них одно и то же название lib, сравнивай имена до первой точки.
Но зачем?
Кстати я не вполне всё-таки понимаю в чём проблема. Если у тебя что-то зависит от lib.so а что-то от lib.so.6.2.3, то и на диске тоже обязаны быть оба этих файла, поэтому задача сводится только к удалению файлов вида lib.so.6.2.3 и потом удалению битых ссылок.

Lumi ★★★★★
()

У тебя окажутся неиспользуемыми все библиотеки, динамически загружаемые через dlopen.

В нормальных дистрибутивах (gentoo, возможно другие) возможность удалять не используемые напрямую пакеты встроена в менеджер пакетов.

Deleted
()
Ответ на: комментарий от SmaL

> Прошу прощения за маленький оффтоп.
Это не оффтоп. А для выхода за пределы можно какой-нибудь скриптик наваять, это не сложно.

Lumi ★★★★★
()
Ответ на: комментарий от Deleted

Вопрос не в emerge --depclean :)
Вопрос в том, что можно умудриться получить библиотеку в системе, про которую менеджер знать ничего не будет, например ручной установкой.
В дженте такие библиотеки (если они ничем не используются) находятся с помощью revdep-rebuild, их список он вываливает в конце. У меня например он так ругается на пару самосборов в /usr/local/* для которых было лень писать ebuild :)

Lumi ★★★★★
()
Ответ на: комментарий от Woffice

Не надо удалять ничего, ссылки вида lib.so, lib.so.6 -> lib.so.6.x.y.z мало того, должны быть, они ещё и опять создадутся командой ldconfig.
Поэтому, не майся ерундой.
Удаляешь неиспользуемые lib.so.6.x.y.z, вычищаешь битые ссылки на неё. Всё.

Lumi ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.