Makefile 使安装自动覆盖

Makefile 使安装自动覆盖,makefile,installation,overriding,Makefile,Installation,Overriding,我有一个大型软件项目,它将大量库和头编译并安装到默认的GNU文件结构中 /usr/include/ /usr/lib/<pkg-arch>/ 某些子项目碰巧将具有不同内容但文件名相同的头文件导出到/usr/include/,基本上覆盖了除一个之外的所有头文件。不用说,在尝试使用安装的软件时,这会导致最奇怪的错误 是否可以让makeinstall覆盖失败?这取决于makeinstall的功能。您可以使用make--dry run install解决这个问题。如果它使用coreutil

我有一个大型软件项目,它将大量库和头编译并安装到默认的GNU文件结构中

/usr/include/
/usr/lib/<pkg-arch>/
某些子项目碰巧将具有不同内容但文件名相同的头文件导出到
/usr/include/
,基本上覆盖了除一个之外的所有头文件。不用说,在尝试使用安装的软件时,这会导致最奇怪的错误


是否可以让
makeinstall
覆盖失败?

这取决于
makeinstall
的功能。您可以使用
make--dry run install
解决这个问题。如果它使用coreutils
install
实用程序,则必须创建一个包装器
install
脚本,因为coreutils的版本不支持所需的内容。但是,无论如何,这并不能完全解决您的问题:您的一些软件将无法按预期工作。根据您是保留冲突文件的第一个版本还是最后一个版本,只会更改哪些软件可用(如果有的话),哪些不可用。您是否以root用户身份运行make?您似乎正在以root用户身份运行安装。最佳实践是以“普通”用户的身份运行make,并为您的系统创建一个包。然后,在安装软件包时,软件包管理器检测到文件冲突并中止软件包安装。这将取决于
makeinstall
的操作。您可以使用
make--dry run install
解决这个问题。如果它使用coreutils
install
实用程序,则必须创建一个包装器
install
脚本,因为coreutils的版本不支持所需的内容。但是,无论如何,这并不能完全解决您的问题:您的一些软件将无法按预期工作。根据您是保留冲突文件的第一个版本还是最后一个版本,只会更改哪些软件可用(如果有的话),哪些不可用。您是否以root用户身份运行make?您似乎正在以root用户身份运行安装。最佳实践是以“普通”用户的身份运行make,并为您的系统创建一个包。然后,在安装包时,包管理器检测到文件冲突并中止包安装。
sort install_manifest.txt | uniq --count --repeated