软件包冲突

当你遇到一个试图安装另一个软件包已经提供相应文件的软件包时(例如,可通过FEATURES = collision-protect检测到),你必须先解决此问题,然后才能提交 ebuild,或者如果你遇到现有的 ebuild 软件包,请提交有关该软件包的错误(请参见下文,了解一些例外情况)。文件冲突很严重的原因是,如果“foo”提供了文件/usr/bin/example并且“bar”将要覆盖它,并且随后“bar”被卸载,Portage 将删除/usr/bin/example并将其因此很可能会破坏“foo”。

最明显的解决方法是向要安装该文件的两个软件包添加阻止依赖项,这样就不能同时安装它们。但是,除非还有其他原因导致这些软件包相互阻塞,否则应尽可能避免这种情况,而应修复软件包,可能包括以下一个或多个步骤:

  • 在“bar”上添加“foo”(R)DEPEND,而不要安装冲突的文件。
  • src_installpkg_preinst中的“foo”中删除冲突文件。
  • 将冲突文件移到新的子软件包中,并在该软件包上同时使“foo”和“bar”都(R)DEPEND。
  • 更改“foo”或“bar”冲突文件位置。

在某些情况下,冲突文件不能真正得到解决或不是很关键,目前已知的例外是 Perl 模块的帮助页(覆盖 Perl 本身的文件)和CONFIG_PROTECT的文件(仍应修复,但不很关键) Portage 不会覆盖它们)。

results matching ""

    No results matching ""