云服务器apt更新笔记
📘 APT 包管理核心概念与 Google 包排除指南
1. 核心概念:apt list vs dpkg -l
| 对比维度 | apt list | dpkg -l |
|---|---|---|
| 数据来源 | 远程软件仓库(软件源) | 本地包管理数据库 |
| 显示内容 | 所有可用的软件包(含已安装和未安装) | 仅已安装的软件包 |
| 是否需要联网 | ✅ 是 | ❌ 否 |
| 典型用途 | 搜索软件、查看仓库中存在的包 | 查看系统已安装的软件、验证安装状态 |
📌 通俗理解
apt list= 超市货架上所有商品(6万多种)dpkg -l= 您已买回家的商品(几十到几百个)
2. 您的服务器数据解读
| 命令 | 输出 | 含义 | ||
|---|---|---|---|---|
| `apt list | grep -c "/"` | 64225 | 软件源中共有 6.4 万个可用包(Ubuntu 官方仓库正常规模) | |
| `grep -E "google" | grep -c "/"` | 177 | 软件源中有 177 个名称包含 "google" 的包(不代表已安装) | |
| `dpkg -l | grep -i google | wc -l` | 7(示例) | 实际已安装的 Google 相关包数量 |
📦 已安装的 Google 包示例(您的系统)
dpkg -l | grep -i google输出示例:
ii google-cloud-cli 561.0.0-0 amd64 Utilities for the Google Cloud Platform
ii google-cloud-cli-anthoscli 561.0.0-0 amd64 anthoscli
ii google-cloud-packages-archive-keyring 1.2-629101324 all Contains GPG signing key for Google Cloud Packages
ii google-compute-engine 1:20260121.00-g1 all Google Compute Engine guest environment.
ii google-compute-engine-oslogin 1:20260217.00-g1+deb12 amd64 Google Compute Engine OS Login
ii google-guest-agent 1:20260228.00-g1 amd64 Google Compute Engine Guest Agent
ii google-osconfig-agent 1:20260119.00-g1 amd64 Google Compute Engine OSConfig Agent3. apt update vs apt upgrade 的区别
| 命令 | 作用 | 说明 |
|---|---|---|
apt update | 更新包列表 | 从远程仓库下载最新的软件包信息(版本、依赖等),不安装任何软件 |
apt upgrade -y | 升级已安装的包 | 对比已安装的包(dpkg -l)和最新仓库信息,将有更新的包升级到最新版本 |
🔍 关键点
apt upgrade只会处理您已经安装的软件包。- 它不会自动安装软件源中那 6.4 万个您没装的包。
要查看具体哪些包会被升级,可使用:
apt list --upgradable
4. 如何排除 Google 相关包的升级
✅ 方法一:锁定指定软件包(永久生效,推荐)
1️⃣ 找出所有已安装的 Google 包
dpkg -l | grep -i google2️⃣ 批量锁定所有 Google 开头的包
dpkg -l | grep -i '^ii.*google' | awk '{print $2}' | sudo xargs apt-mark hold3️⃣ 查看已锁定的包
apt-mark showhold4️⃣ 如需解锁(恢复可升级)
sudo apt-mark unhold <包名>✅ 方法二:使用 APT 偏好设置(更精细控制)
创建配置文件:
sudo nano /etc/apt/preferences.d/ignore-google添加以下内容(阻止所有 google-* 和 google-cloud-* 包的安装和升级):
Package: google-*
Pin: release *
Pin-Priority: -1
Package: google-cloud-*
Pin: release *
Pin-Priority: -1保存后生效,这些包将被 APT 系统忽略。
✅ 方法三:升级时临时排除(一次性)
sudo apt upgrade -y $(apt list --upgradable 2>/dev/null | grep -v -i google | grep -v "Listing..." | awk -F/ '{print $1}' | tr '\n' ' ')说明:获取所有可升级包 → 过滤掉包含 "google" 的包 → 仅升级剩余包。
5. 最佳实践:您当前场景的推荐做法
您的目标只是安装 Shadowsocks,完全不需要执行 apt upgrade -y。
直接执行以下命令即可:
sudo apt update
sudo apt install shadowsocks-libev -yapt update:更新包列表,确保能获取到最新版本。apt install:只安装 Shadowsocks 及其依赖,不会影响其他已安装的软件包,也不会触发 Google 相关包的升级。
📌 总结
apt list显示的是“货架”上的所有包,dpkg -l显示的是“购物车”里的包。apt upgrade只升级已安装的包,不会安装新软件。- 如需永久跳过 Google 相关包的升级,推荐使用
apt-mark hold锁定它们。 - 若只是为了安装某个特定软件,直接
apt install即可,无需执行upgrade。