gentoo:如何删除unmerging包上的所有配置文件(来自其ebuild)

时间:2016-09-13 22:06:05

标签: gentoo

我正在创建自己的个人包,以收集有用的程序和配置。主要想法是出现这个包,并为我的偏好准备系统。主要是它有效(它只取决于我最喜欢的所有程序),但我有两个问题:

  1. 如何在安装受影响的程序之前安装USE标志,UNMASK等?

  2. 如何卸载它(emerge --unmerge不会删除/ etc中的文件,所以即使在卸载包之后仍然保留USE标记(和其他) - 我的意图是删除它们,所以下次重建world不会再使用它们了 - 是的,这意味着许多程序会丢失一些功能,如支持某些语言,支持其他一些程序等等,这是理想的结果)

  3. 到目前为止我的解决方案是:

    1. 该软件包包含/etc/portage/package.*

      中的一些文件

      1.1。我使用--nodeps显示该包(因此安装了配置文件)

      1.2。我没有那个标志再次出现它(所以安装了依赖项 正确的配置))

    2. 我创建(并安装)脚本以解析我的包/var/db/packages的{​​{1}}并删除所有CONTENTS个文件"手动"在取消包装

    3. 之前,我必须先朗读这个剧本

      有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

你只是在做/理解错了! (抱歉:)

首先,不是元数据包(一个只有运行时依赖性的空ebuild),还有其他方法:

  • 使用sets来描述您的首选套餐。以常规方式管理USE标记(如果需要,包括每个包USE)。
  • 中等复杂度的解决方案是编写一个元数据包 ebuild (你当前的情况) - 但是,无论如何你都无法屏蔽/取消屏蔽USE标志......
  • 如果你已经拥有你的叠加层(显然) - 定义你自己的配置文件可以解决所有问题!在这里,您可以按照自己的意愿管理所有内容:屏蔽/取消屏蔽任何USE标志,为您定义 system 预定义包装的含义,&等...

不幸的是,我不使用Gentoo portage(和emerge)并且不知道是否可以有多个添加配置文件。我在这里my own profilesworks完全与Paludis

其次,卸载后从不删除任何配置文件(配置保护)!没有包可以做到这一点,并且有很多原因...主要的一个是用户可能修改它们并且不想放弃他的更改。此外,我个人更喜欢把我曾经触及过的所有配置都放在一个专门的VCS回购中 - 如果除了我以外有人会删除smth,那就太好了......

想象一个现实生活中的例子:用户想要重新安装一些包,他有一堆配置文件,他花了一些时间仔细编辑它们。琐碎的方法是卸载,然后安装再次 - 哎呀!他失去了他的配置! 此外,从ebuild的POV,您有pkg_prermpkg_postrm函数,但即使在升级时也会调用它们(即 unmerge 后立即 merge < / em>阶段)。你必须非常谨慎地区分用例...而且更糟糕的是,在任何包中都有任何“硬编码”(和唯一)规则,你对它们没有任何影响......

所以,请永远不要删除任何受配置保护的文件,让用户照顾他们(他是老板,而不是包经理)......

更新:如果您真的想要删除一些受配置保护的文件,那么设置自己的个人资料看起来就更好了。您可以设置CONFIG_PROTECT_MASK以强制执行取消保护文件和/或目录。这样,您就不需要修改任何ebuild和/或编写丑陋的清理代码。