麒麟os禁用特定软件自动升级需五步:一、apt-mark hold锁定单包;二、配置apt.conf.d排除多包;三、禁用kylin-update-manager及apt定时器;四、应用商店关闭自动更新;五、chattr +i锁定sources.list防重写。

您正在使用麒麟操作系统,但希望阻止特定软件在后台自动升级,避免配置被覆盖、服务异常或旧版本功能失效,这通常发生在关键业务软件、定制驱动或与硬件深度绑定的工具上。
通过APT锁定指定软件包版本
这是最直接、最可靠的方式,适用于命令行环境,能永久阻止某软件参与任何apt upgrade操作。
第一步:打开终端,执行以下命令锁定目标软件(以nginx为例):
sudo apt-mark hold nginx
第二步:验证是否锁定成功:
apt-mark showhold | grep nginx
若返回nginx,则表示已生效。
第三步:尝试执行sudo apt update && sudo apt upgrade,观察输出中是否跳过nginx及其依赖项——【若仍出现升级提示,说明该包已被其他依赖关系触发重装,需同步锁定其依赖包】。
第四步:如需解除锁定,运行sudo apt-mark unhold nginx即可。
修改APT配置排除特定软件包
适用于需要批量冻结多个软件、且不希望逐个执行apt-mark hold的场景,规则写入配置文件后全局生效。
方法一:创建专用排除配置文件
sudo nano /etc/apt/apt.conf.d/99no-upgrade
方法二:在文件中写入以下内容(示例禁止kernel与docker相关包升级):
Apt::NeverAutoRemove "::linux-image-.*";
Apt::NeverAutoRemove "::docker-ce.*";
APT::Get::Always-Include-Phased-Updates "false";
方法三:保存退出后,执行apt-config dump | grep -i neverauto确认规则已加载。
注意:Apt::NeverAutoRemove仅影响upgrade/dist-upgrade行为,不影响apt install显式安装——【它不阻止手动安装新版本,只屏蔽自动拉取】。
禁用系统级更新服务与定时器
当软件自动升级由kylin-update-manager或unattended-upgrades触发时,必须切断其底层执行链路,否则前端锁定可能被绕过。
1、停止并禁用麒麟更新管理器服务:
sudo systemctl stop kylin-update-manager.service → sudo systemctl disable kylin-update-manager.service
2、禁用APT每日检查与升级定时器:
sudo systemctl stop apt-daily.timer apt-daily-upgrade.timer → sudo systemctl disable apt-daily.timer apt-daily-upgrade.timer
3、屏蔽服务防止被其他单元意外激活:
sudo systemctl mask apt-daily.service apt-daily-upgrade.service
4、终止残留进程:
sudo pkill -f "kylin-update\|unattended-upgrade"
应用商店中关闭自动更新
麒麟应用商店独立调用APT接口升级桌面应用,其行为不受系统级开关控制,必须单独处理。
点击“开始”菜单→启动“应用商店”→右上角头像→“设置”→关闭“自动更新应用程序”→同时取消勾选“仅在Wi-Fi下自动更新”。
这一步操作起来很简单,直接关闭开关即可生效,无需重启。
锁定APT源文件防止被重写
银河麒麟V10 SP1等版本会周期性还原/etc/apt/sources.list,导致手动注释失效。加锁是唯一彻底阻止的方式。
执行sudo chattr +i /etc/apt/sources.list,此后任何进程(包括root)都无法修改该文件。
验证是否生效:
sudo lsattr /etc/apt/sources.list
输出中应含【i】标志,如----i---------e-----。
如需恢复编辑权限,必须先执行sudo chattr -i /etc/apt/sources.list——【此操作不可逆,加锁前请确保源地址已正确配置】。











