是否有一种简单的方法可以跳过某次升级emerge -auvD world
?
例如,目前有一个破碎的 media-sound/teamspeak-server-bin-3.0.5-r1
在 portage 树中标记为稳定,这会破坏整个升级,因为该包是列表中的第一个。当然,我可以使用文件简单地屏蔽此版本package.mask
,但我更喜欢使用环境变量或命令行开关来跳过它 - 无论如何,它可能很快就会被修复。
请注意,我确实不是想要使用emerge -auvD1 list of working packages
(即仅通过指定所有名称来更新其他包)。
答案1
该选项看起来的--exclude
作用是:
--exclude ATOMS
以空格分隔的软件包名称或插槽原子列表。Emerge 不会安装与任何给定软件包原子匹配的任何 ebuild 或二进制软件包。
所以这对我有用:
emerge -auvD --exclude=media-sound/teamspeak-server-bin world
答案2
如果你不想屏蔽它,你可以使用选项--keep-going
。这会让 emerge 重置其列表并继续运行,列表中不会包含失败的软件包。
答案3
ThiefMaster 的回答是正确的做法,但还有另一种选择,我认为它改进了基思的回答也就是说,他的回答将得到尝试,可能需要时间。如果你知道第一的包有问题,因为您刚刚遇到一个问题,您可以使用--resume
和--skipfirst
:
--resume(-r)
恢复由于错误而中止的最近的合并列表。这将重新使用被恢复的原始命令所提供的参数和选项,并且用户还可以在调用时提供其他选项
--resume
。将原子或集合作为参数提供给是错误的--resume
,因为将使用恢复命令的参数。请注意,此操作仅在失败时返回错误。如果portage无需执行任何操作,则portage将退出并显示一条消息和成功条件。恢复列表将一直存在,直到它完全完成或另一个中止的合并列表替换它。恢复历史记录能够存储两个合并列表。一个恢复列表完成后,可以--resume
再次调用以恢复较旧的列表。恢复列表存储在中/var/cache/edb/mtimedb
,并且可以通过运行明确丢弃emaint --fix cleanresume
(参见emaint(1))。
--skipfirst
此选项仅与 一起使用时才有效
--resume
。它将删除恢复列表中的第一个包。将重新计算剩余包的依赖关系,并且将自动删除任何具有未满足依赖关系或被屏蔽的包。另请参阅相关选项--keep-going
。