Назад | Перейти на главную страницу

Как запретить системе заглядывать в / usr / local бинарные файлы, библиотеки и подключаемые модули?

Я с трудом пытаюсь скомпилировать вещи только с зависимостями в исходных системных папках. Однако существуют разные версии библиотек и инструментов, установленных в / usr / local.

G ++ всегда включает файлы из / usr / local / include, но связывает их с библиотеками в / usr / lib, что вызывает большой беспорядок.

Мое быстрое решение - просто сказать Linux (Ubuntu) не заглядывать в / usr / local и полагаться только на то, что находится за его пределами: в местах, где пакеты установлены по умолчанию.

Печальная история заключается в том, что я не могу просто удалить то, что находится в / usr / local, потому что некоторые приложения используют там библиотеки.

Как это можно сделать?

при компиляции вы установили переменную среды:

LD_LIBRARY_PATH=/usr/lib (или где угодно)

а также проверьте, если /etc/ld.so.conf и / или /etc/ld.so.conf.d/ нет путей, которые вам не нужны.

Рассмотрите возможность использования chroot или контейнера для создания программного обеспечения в чистой среде с известными зависимостями. Сообщества разработчиков пакетов Debian и Red Hat считают это лучшей практикой. Для Debian предпочтительным инструментом является pbuilder. Он предназначен для генерации дебетов, что удобно, потому что вы можете установить их с помощью apt.

Хотя вы можете полностью игнорировать / usr / local / при изменении сборки, дьявол кроется в деталях. Скрипты сборки сильно различаются: от загадочных автоинструментов до специально написанных файлов Makefile. За время, необходимое для понимания этого и исправления любого / usr / local /, у вас может быть система chroot, генерирующая воспроизводимые сборки.