我正在创建自己的个人包,以收集有用的程序和配置。主要想法是出现这个包,并为我的偏好准备系统。主要是它有效(它只取决于我最喜欢的所有程序),但我有两个问题:
如何在安装受影响的程序之前安装USE标志,UNMASK等?
如何卸载它(emerge --unmerge不会删除/ etc中的文件,所以即使在卸载包之后仍然保留USE标记(和其他) - 我的意图是删除它们,所以下次重建world
不会再使用它们了 - 是的,这意味着许多程序会丢失一些功能,如支持某些语言,支持其他一些程序等等,这是理想的结果)
到目前为止我的解决方案是:
该软件包包含/etc/portage/package.*
1.1。我使用--nodeps
显示该包(因此安装了配置文件)
1.2。我没有那个标志再次出现它(所以安装了依赖项 正确的配置))
我创建(并安装)脚本以解析我的包/var/db/packages
的{{1}}并删除所有CONTENTS
个文件"手动"在取消包装
有更好的方法吗?
答案 0 :(得分:1)
你只是在做/理解错了! (抱歉:)
首先,不是元数据包(一个只有运行时依赖性的空ebuild),还有其他方法:
USE
标记(如果需要,包括每个包USE
)。USE
标志...... USE
标志,为您定义 system 预定义包装的含义,&等... 不幸的是,我不使用Gentoo portage(和emerge
)并且不知道是否可以有多个添加配置文件。我在这里my own profiles,works完全与Paludis。
其次,卸载后从不删除任何配置文件(配置保护)!没有包可以做到这一点,并且有很多原因...主要的一个是用户可能修改它们并且不想放弃他的更改。此外,我个人更喜欢把我曾经触及过的所有配置都放在一个专门的VCS回购中 - 如果除了我以外有人会删除smth,那就太好了......
想象一个现实生活中的例子:用户想要重新安装一些包,他有一堆配置文件,他花了一些时间仔细编辑它们。琐碎的方法是卸载,然后安装再次 - 哎呀!他失去了他的配置!
此外,从ebuild的POV,您有pkg_prerm
和pkg_postrm
函数,但即使在升级时也会调用它们(即 unmerge 后立即 merge < / em>阶段)。你必须非常谨慎地区分用例...而且更糟糕的是,在任何包中都有任何“硬编码”(和唯一)规则,你对它们没有任何影响......
所以,请永远不要删除任何受配置保护的文件,让用户照顾他们(他是老板,而不是包经理)......
更新:如果您真的想要删除一些受配置保护的文件,那么设置自己的个人资料看起来就更好了。您可以设置CONFIG_PROTECT_MASK
以强制执行取消保护文件和/或目录。这样,您就不需要修改任何ebuild和/或编写丑陋的清理代码。