麒麟KYLINOS禁用自动更新有五种方法:一、用chattr +i锁定sources.list;二、在apt.conf.d中配置Apt::NeverAutoRemove排除包;三、禁用并屏蔽apt-daily相关systemd服务;四、用firewalld拒绝80/443端口阻断APT联网;五、用dpkg --set-selections hold锁定指定软件包版本。
如果您在使用麒麟kylinos操作系统时发现系统或软件频繁自动升级,导致配置被覆盖、服务异常或旧版本功能失效,则可能是系统源管理机制或更新服务持续触发所致。以下是禁用自动更新的多种可控方法:
一、锁定APT源文件防止自动还原
银河麒麟桌面版(如V10 SP1)默认会周期性恢复/etc/apt/sources.list内容,即使手动注释也会被重写。通过设置文件不可更改属性(immutable),可彻底阻止任何进程修改该文件。
1、打开终端,执行命令查看当前文件属性:
sudo lsattr /etc/apt/sources.list
2、若输出中不含i标志,说明文件未加锁,继续执行加锁操作:
sudo chattr +i /etc/apt/sources.list
3、验证加锁是否生效:
sudo lsattr /etc/apt/sources.list
4、此时再次查看文件内容,将显示类似----i---------e-----,表示该文件已被系统级锁定,无法被源管理器、apt或任何用户进程修改。
二、修改APT配置排除特定软件包升级
通过在APT主配置中添加exclude规则,可精准阻止指定软件包参与upgrade或dist-upgrade操作,保留关键组件版本稳定。
1、编辑APT主配置文件:
sudo nano /etc/apt/apt.conf.d/99no-upgrade
2、新增以下内容(以禁止kernel与nginx升级为例):
Apt::NeverAutoRemove "::kernel.*";
Apt::NeverAutoRemove "::nginx.*";
APT::Get::Always-Include-Phased-Updates "false";
3、保存并退出编辑器。
4、执行以下命令确认排除规则已加载:
apt-config dump | grep -i exclude
此方式不影响系统其他软件正常更新,仅对明确列出的包实施版本冻结。
三、禁用APT定时更新服务
麒麟系统默认启用apt-daily.service与apt-daily-upgrade.service,它们会在后台自动执行更新检查与安装。禁用这些服务可切断自动更新源头。
1、停止并禁用每日更新检查服务:
sudo systemctl stop apt-daily.timer
sudo systemctl disable apt-daily.timer
2、停止并禁用每日升级服务:
sudo systemctl stop apt-daily-upgrade.timer
sudo systemctl disable apt-daily-upgrade.timer
3、屏蔽相关服务(防止被其他单元激活):
sudo systemctl mask apt-daily.service
sudo systemctl mask apt-daily-upgrade.service
执行后系统将不再触发任何自动apt更新行为,且服务状态永久设为inactive。
四、通过防火墙阻断APT网络访问
若需在不修改配置的前提下实现“软禁用”,可通过firewalld阻止APT工具连接外部源服务器,使其更新命令始终失败。
1、确认firewalld正在运行:
sudo systemctl status firewalld
2、添加拒绝规则,拦截APT常用协议端口:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="80" protocol="tcp" reject'
3、添加HTTPS端口拒绝规则:
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="443" protocol="tcp" reject'
4、重新加载防火墙配置:
sudo firewall-cmd --reload
此后apt update将返回连接超时或拒绝错误,但系统其他网络功能不受影响。
五、使用dpkg-hold锁定关键软件包版本
对于已安装的特定软件(如openjdk-11-jdk、postgresql-13),可使用dpkg-hold将其标记为“保持当前版本”,避免被后续apt upgrade覆盖。
1、查询目标软件包确切名称:
dpkg -l | grep postgresql
2、对软件包执行保持操作(以postgresql-13为例):
echo "postgresql-13 hold" | sudo dpkg --set-selections
3、验证保持状态:
dpkg --get-selections | grep postgresql
4、重复步骤2–3,依次对多个包执行hold操作。
被标记为hold的软件包在执行apt upgrade时将跳过,状态显示为"hold"而非"install"。










