You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让unattended-upgrade遵循APT固定包(Pin)设置?

如何让unattended-upgrade遵循APT固定包(Pin)设置?

我完全懂你的糟心感受——本来想靠unattended-upgrade自动跟进安全补丁,结果它完全无视你设置的APT包固定规则,把你特意锁定的Mozilla官方版Firefox换成了Snap包,每次都得手动恢复,还得在系统安全性和软件偏好之间纠结,太折腾了!

从你贴的history.log记录来看,确实是unattended-upgrade在后台触发了这个替换操作。默认情况下,这个工具的更新筛选逻辑和apt/aptitude不一样,尤其是碰到带epoch(就是版本号里的1:前缀)的包时,它可能会误判高epoch的版本为“优先级更高的安全更新”,从而绕过你的Pin设置。

下面给你几个可行的解决方案:

方案1:让unattended-upgrade严格遵循APT Pin优先级

这是从根源上解决问题的方法,让它和apt一样尊重你的固定规则:

  • 打开unattended-upgrade的主配置文件:
    sudo nano /etc/apt/apt.conf.d/50unattended-upgrades
    
  • 在文件中添加或修改以下配置项,强制它遵循Pin优先级:
    Unattended-Upgrade::Pin-Priority "1000";
    
  • 同时确保你的APT Pin规则配置正确(比如在/etc/apt/preferences.d/下的文件),示例如下:
    # 优先使用Mozilla源的Firefox
    Package: firefox
    Pin: origin packages.mozilla.org
    Pin-Priority: 900
    
    # 降低Ubuntu官方Snap版Firefox的优先级
    Package: firefox
    Pin: release o=Ubuntu,a=<你的Ubuntu版本代号>
    Pin-Priority: 500
    
    把<你的Ubuntu版本代号>换成你实际用的,比如jammy、noble等。

方案2:直接让unattended-upgrade跳过特定包

如果你不想全局调整Pin规则,也可以直接让它别碰Firefox:

  • 同样编辑/etc/apt/apt.conf.d/50unattended-upgrades,找到Unattended-Upgrade::Package-Blacklist区块,添加Firefox:
    Unattended-Upgrade::Package-Blacklist {
        "firefox";
    };
    
    这样unattended-upgrade就不会再自动更新Firefox了,你可以手动用apt update && apt upgrade firefox来更新,或者自己写个小脚本单独处理Firefox的更新。

方案3:更新unattended-upgrade到最新版本

有些旧版本的unattended-upgrades存在不遵守Pin规则的bug,先试试更新这个工具:

sudo apt update && sudo apt install --only-upgrade unattended-upgrades

更新完成后可以手动测试一次,看问题是否消失。

测试验证

修改完配置后,你可以手动运行一次调试模式的更新,看看日志里有没有再触发Firefox的替换:

sudo unattended-upgrade -d

调试模式会输出详细的决策过程,能帮你确认配置是否生效。

备注:内容来源于stack exchange,提问作者spotter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:14:34