软件源与更新策略
正确配置软件源和制定合理的更新策略对系统的安全性和稳定性至关重要。本文介绍 Ubuntu 26.04 中软件源的配置方法和各种更新策略。
软件源基础
Ubuntu 26.04 软件源格式
从 Ubuntu 24.04 开始,APT 源配置使用新的 DEB822 格式,配置文件位于 /etc/apt/sources.list.d/ubuntu.sources:
cat /etc/apt/sources.list.d/ubuntu.sources典型内容如下:
Types: deb deb-src
URIs: http://archive.ubuntu.com/ubuntu
Suites: resolute resolute-updates resolute-backports
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpg软件源组件说明
| 组件 | 说明 |
|---|---|
main | Canonical 官方支持的开源软件 |
restricted | 官方支持的专有驱动 |
universe | 社区维护的开源软件 |
multiverse | 受版权或法律限制的软件 |
套件说明
| 套件 | 说明 |
|---|---|
resolute | 基础发行版仓库 |
resolute-updates | 推荐更新 |
resolute-backports | 向后移植的新版本软件 |
resolute-security | 安全更新 |
更换国内镜像源
# 备份原始配置
sudo cp /etc/apt/sources.list.d/ubuntu.sources /etc/apt/sources.list.d/ubuntu.sources.bak
# 编辑源配置
sudo nano /etc/apt/sources.list.d/ubuntu.sources将 URIs 替换为国内镜像:
Types: deb deb-src
URIs: https://mirrors.aliyun.com/ubuntu
Suites: resolute resolute-updates resolute-backports resolute-security
Components: main restricted universe multiverse
Signed-By: /usr/share/keyrings/ubuntu-archive-keyring.gpgTip
选择镜像源时,优先选择地理位置和网络距离最近的节点。教育网用户推荐清华或中科大镜像,云服务器用户推荐使用对应云厂商的内网镜像以获得最快速度。
常用国内镜像:
| 镜像源 | 地址 |
|---|---|
| 阿里云 | https://mirrors.aliyun.com/ubuntu |
| 清华大学 | https://mirrors.tuna.tsinghua.edu.cn/ubuntu |
| 中科大 | https://mirrors.ustc.edu.cn/ubuntu |
| 华为云 | https://mirrors.huaweicloud.com/ubuntu |
| 腾讯云 | https://mirrors.cloud.tencent.com/ubuntu |
更换后刷新索引:
sudo apt updateWarning
PPA 是第三方个人维护的软件源,其软件包未经 Canonical 官方审核。添加不可信的 PPA 可能引入安全风险或导致系统包依赖冲突。仅添加知名项目的 PPA,升级系统版本前建议先禁用所有 PPA。
PPA 管理
PPA(Personal Package Archive)允许第三方开发者分发软件包。
添加 PPA
# 添加 PPA
sudo add-apt-repository ppa:graphics-drivers/ppa
# 添加后更新索引
sudo apt update
# 安装 PPA 中的软件,具体版本以 ubuntu-drivers devices 输出为准
sudo apt install nvidia-driver-XXX删除 PPA
# 移除 PPA
sudo add-apt-repository --remove ppa:graphics-drivers/ppa
# 更新索引
sudo apt update手动添加第三方源
以添加 Docker 官方源为例:
# 下载 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 添加仓库(DEB822 格式)
# 注意:Docker 官方源可能尚未发布 resolute 套件,
# 若 apt update 报找不到 Release 文件,可暂时回退到 noble
sudo tee /etc/apt/sources.list.d/docker.sources << 'EOF'
Types: deb
URIs: https://download.docker.com/linux/ubuntu
Suites: resolute
Components: stable
Signed-By: /usr/share/keyrings/docker-archive-keyring.gpg
EOF
# 更新并安装
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io列出已配置的源
# 查看所有源文件
ls /etc/apt/sources.list.d/
# 查看 APT 使用的所有源
apt policy
# 查看某个包来自哪个源
apt policy nginxAPT 更新管理
基本更新命令
# 更新软件包索引
sudo apt update
# 升级已安装的软件包
sudo apt upgrade
# 智能升级(可能安装或删除依赖)
sudo apt full-upgrade
# 仅查看可升级的包,不实际升级
apt list --upgradable
# 升级特定软件包
sudo apt install --only-upgrade nginx查看更新历史
# 查看 APT 操作历史
cat /var/log/apt/history.log
# 使用 zless 查看压缩的历史日志
zless /var/log/apt/history.log.1.gz
# 查看 dpkg 操作日志
cat /var/log/dpkg.log软件包锁定
如果需要阻止某个软件包被更新:
# 锁定软件包版本
sudo apt-mark hold package-name
# 解除锁定
sudo apt-mark unhold package-name
# 查看所有被锁定的包
apt-mark showholdunattended-upgrades 自动更新
安装和启用
# 安装(Ubuntu 26.04 通常已预装)
sudo apt install unattended-upgrades
# 启用自动更新
sudo dpkg-reconfigure -plow unattended-upgrades配置自动更新
编辑主配置文件:
sudo nano /etc/apt/apt.conf.d/50unattended-upgrades关键配置项:
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}";
"${distro_id}:${distro_codename}-security";
"${distro_id}:${distro_codename}-updates";
// "${distro_id}:${distro_codename}-proposed";
// "${distro_id}:${distro_codename}-backports";
};
// 不自动更新的黑名单
Unattended-Upgrade::Package-Blacklist {
"linux-image*";
"linux-headers*";
"nginx";
};
// 自动移除不再需要的依赖
Unattended-Upgrade::Remove-Unused-Dependencies "true";
// 自动移除不再需要的内核
Unattended-Upgrade::Remove-Unused-Kernel-Packages "true";
// 必要时自动重启
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";
// 邮件通知
Unattended-Upgrade::Mail "admin@example.com";
Unattended-Upgrade::MailReport "on-change";配置更新频率:
sudo nano /etc/apt/apt.conf.d/20auto-upgradesAPT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";测试自动更新
# 模拟运行(不实际安装)
sudo unattended-upgrade --dry-run --debug
# 立即执行一次自动更新
sudo unattended-upgrade -v
# 查看自动更新日志
cat /var/log/unattended-upgrades/unattended-upgrades.log更新策略建议
桌面用户
# 推荐设置:自动安装安全更新,手动安装功能更新
# /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "7";定期手动检查和安装更新:
sudo apt update && apt list --upgradable
sudo apt upgrade服务器环境
对于生产服务器,建议:
- 仅自动安装安全更新,其他更新手动处理。
- 设置维护窗口进行计划性更新。
- 先在测试环境验证再应用到生产。
- 启用邮件通知了解更新情况。
# 服务器推荐配置
# /etc/apt/apt.conf.d/50unattended-upgrades
Unattended-Upgrade::Allowed-Origins {
"${distro_id}:${distro_codename}-security";
};
Unattended-Upgrade::Automatic-Reboot "false";
Unattended-Upgrade::Mail "admin@example.com";版本升级
升级到新的 Ubuntu 版本
# 确保当前系统已完全更新
sudo apt update && sudo apt full-upgrade
# 检查是否有可用的新版本
do-release-upgrade -c
# 执行版本升级
sudo do-release-upgrade清理更新残留
# 清理已下载的 deb 包缓存
sudo apt clean
# 移除不再需要的依赖
sudo apt autoremove
# 清理残留配置文件
dpkg -l | grep '^rc' | awk '{print $2}' | xargs sudo dpkg --purgeLast updated on