如何禁止系统查看 /usr/local 二进制文件、库和包含文件?

如何禁止系统查看 /usr/local 二进制文件、库和包含文件?

我很难尝试仅使用系统原始文件夹中的依赖项来编译内容。但是,/usr/local 中安装了不同版本的库和工具。

G++ 总是包含来自 /usr/local/include 的文件,但它与 /usr/lib 中的库相链接,这导致了很多混乱。

我的快速解决方案是告诉 Linux(Ubuntu)不要查看 /usr/local,而只依赖其外部的内容:默认安装包的地方。

可悲的是,我无法删除 /usr/local 中的内容,因为有些应用程序正在使用那里的库。

如何才能做到这一点?

答案1

编译时您已设置环境变量:

LD_LIBRARY_PATH=/usr/lib(或任何你需要的地方)

并且还检查是否/etc/ld.so.conf和/或/etc/ld.so.conf.d/没有您不需要的路径。

答案2

考虑使用 chroot 或容器在具有已知依赖项的干净环境中构建软件。Debian 和 Red Hat 打包社区都认为这是最佳实践。对于 Debian,首选工具是 pbuilder。它旨在生成 debs,这很方便,因为您可以使用 apt 安装它们。

虽然您可以更改构建以完全忽略 /usr/local/,但魔鬼就在细节中。构建脚本千差万别,从晦涩难懂的自动工具到自定义编写的 Makefile。在理解并修补任何 /usr/local/ 所需的时间里,您可以拥有一个生成可重现构建的 chroot 系统。

相关内容