BOSh
文章321
标签521
分类135
315晚会 36氪 80后 ADB AI AI Agent AI PC AI 代理 AI 助手 AI 网关 AI 评测 AI代理 AI助手 AI处理器 AI大模型 AI安全 AI应用 AI智能体 AI网关 AMD API API 集成 AWS Agent Agentic AI AionUi Alwaysdata Android Apple Arch Linux Argo Tunnel Automation Backup Bash Bosh Bot Bot-hosting C++ CDN CEO CI/CD CLI CLI Proxy API CLIProxyAPI COMPUTEX CRM Chrome 插件 Claude Claude Opus 4.6 Cloudflare Code ConnectBot Credential Manager Ct8.pl CurrentEvents DNS Debian DeepSeek DenchClaw DevOps Devil Docker Elon Musk FreeLLMAPI GCP GEO GPL GPS GPU Gemini Gemini 3.1 Pro Ghostty Git GitHub GitHub Actions Gmail Go Gog Golang Google Google AI Pro Google API Google Gemini Google Photos Google Pixel HKUDS Hardware Hermes Hermes Agent Hexo HidenCloud Hugo Hyprland IPV6 Intel JavaScript Jetpack Compose John Turnus KDE KOSPI Karpathy Kimi-K2.5 Kotlin LINUX LLM LTS LaTeX Linux LiveUSB MW4L Markdow Markdown Matrix MemU Bot Mesh-Network MiniMax Musk NAT64 NIX NODE NVIDIA NVIDIA Build NanoClaw Netcatty Netlify Newsletter Node.js Nvidia Open WebUI OpenAI OpenAI 兼容接口 OpenAI兼容 OpenCLI OpenClaw P2P PDF 编译 Pacman PicoClaw Pixel Pixel 1 Pixel 12 Pixel11 Plasma Prismer Productivity Pura90 Python QClaw QQ机器人 Qualcomm Quickshell RAG RTX Spark Railway Reddit Rust SFTP SSH SeleniumBase Serv00 Serverless Skills SoC Subagent SuperCall Synapse Syncthing TPU TSMC Tailscale Telegram Telegram Bot Tensor Tensor G7 Tim Cook Tunnel Turnstile Ubuntu VLESS VPN VPS Vercel Wayland WeChat Web3 WebSSH WebSocket WebTransport Web开发 Windows WireGuard WorkBuddy X XChat XHTTP X热榜 YouTube ZeroClaw arXiv arch c++ cc-switch cloudflared ct8.pl email git hugo hyprmod i3wm iMessage iOS n8n nanobot node js ntfs pacman podman zz.ac 东海 两性关系 个人助理 中东 中东冲突 中东局势 中关村论坛 中南大学 中国 中美 乌克兰 习惯养成 云同步 云服务器 亚洲 人性 人教版 代理 代金券 以色列 任务管理 伊朗 伊朗危机 伊朗战争 伦理 体育 使用 俄乌战争 俄罗斯 保护主义 信息流 信息管理 停火 健康管理 光通信 免费VPS 免费主机 免费试用 全球动态 六年级 共和党 关系 养老金 内容工厂 内容生产 内容筛选 内网穿透 军事冲突 军事动态 军民融合 农村 分享 分配 创业 制裁 办公自动化 加密 加密货币 加沙 北斗 北韩 医学生 半导体 华为 协议分析 博客 博客助手 博客发布 博客部署成功 卫星 即时通讯 厄尔尼诺 原生 JS 去中心化 反向代理 反思 反爬虫 反重力 台海局势 台湾 命令 命令行 喷嚏网 国产 国产化 国产替代 国际 国际关系 国际局势 国际新闻 图卦 图说 地缘政治 域名邮箱 基础设施 多代理 多模态AI 大学分析 大模型 孙少平 学习 安全 安装 实时监控 家庭助理 家庭服务器 家装设计 小学 工业策略 工作总结 工作效率 工作流编排 工具 工具链 平凡的世界 平台责任 庞氏骗局 开发 开发实录 开源 开源软件 开源项目 张雪峰 微信 心理健康 快捷键 情感 慈善 战争 房地产 手机 技术分享 投资工具 指标看板 提示词工程 播客 收件箱清理 效率 效率工具 教程 教育制度 数学 数据分析 数据投毒 文件管理 文献管理 新能源汽车 新闻汇总 日历聚合 时事 时事总结 显卡 晨报 智能体 智能体生态 智能手机 服务器部署 朝鲜 极端天气 架构 架构实践 核协议 核武器 桌面Cowork 桌面环境 模型接入 模型配置 欧洲安全 每日图说 比亚迪 气候 油价 法律 活动运营 浏览器自动化 消息通道 消费者权益 深度学习 渔船 游戏开发 湘雅医院 潘石屹 热点新闻 熔断 版本更新 特朗普 生态系统 生活 生活自动化 生物识别 用例 甲骨文云 电池技术 症状追踪 白嫖 白嫖攻略 白山云 皮皮虾 监管 目标管理 知识库 社交媒体 社会保障 社会公平 社会百态 社会观察 科技 科普 科研助手 窗口管理 笔记 第一财经 算法 算法推荐 系统管理 纽森 组网 经济 经济观察 经验分享 编程 网关 网络 网络安全 网络摘录 网络穿透 美伊冲突 美伊谈判 美国 美国制裁 美国大选 美国政治 股灾 能源安全 脚本 腾讯 腾讯,龙虾,OpenClaw 腾讯云 自动化 自动化创作 自动化协作 自动化提醒 自动化流水线 自动化脚本 自动化运维 自建服务 自律教练 自托管 自由软件 芯片 草榴 行为改变 视频摘要 解锁 计算摄影 记录 许可证 论文写作 论文阅读 语义搜索 语音代理 读书 读书笔记 读后感 谷歌云 财报季 路遥 身份验证 轻量级 迁移 运维 进化论 远程访问 远程运维 选车 邀请确认 部署 部署指南 部署教程 量子计算 销售自动化 阅读感悟 随笔 隐私 霍尔木兹 霍尔木兹海峡 青蛙机 韩国股市 韩红 韬定律 项目管理 风险管理 飞书 高中生活 高可用 高考 高考志愿 鸽巢原理 麒麟 麒麟9050 黄仁勋 黎巴嫩 龙虾

一言

文章归档

Arch Linux 安全滚动更新的几个建议

Arch Linux 安全滚动更新的几个建议

Arch Linux 安全滚动更新的几个建议(含磁盘空间检查)

Arch 滚动更新的机制决定了系统永远处于"最新"状态。这个特性既是优势也是风险——更新如果处理不当,轻则应用程序报错,重则系统无法启动。

这篇是実战总结,不是复制粘贴官方的 Pacman 指南。


先检查磁盘空间

这是最容易被忽略、后果却最严重的一步。

滚动更新经常需要下载几百 MB 甚至 GB 级别的包,尤其 GNOME、KDE 这种桌面环境的大版本升级,加上编译依赖缓存, /var/cache/pacman/pkg/ 目录膨胀速度相当可观。

排查磁盘空间的几个命令:

1
2
3
4
5
6
7
8
# 粗略看一下各分区状况
df -h

# 看具体哪个目录占空间
du -sh /var/cache/pacman/pkg/

# 更细致的排查
du -sh /* 2>/dev/null | sort -rh | head -15

你可能遇到的坑:根分区只分了 20G,装几个大软件包就满了。升级过程中空间耗尽会导致部分包安装成功、部分失败,系统处于断裂状态——这比完全没升级更难修。

Pacman 把包文件默认缓存在 /var/cache/pacman/pkg/ 下面,卸载软件包后这些文件不会自动清理:

1
2
3
4
5
# 清理已卸载包的缓存文件
sudo pacman -Sc

# 清理所有缓存(更激进)
sudo pacman -Scc

上面第一条是安全的,只清已经不在系统里的包。第二条会把所有版本缓存全删掉——如果你某个更新出问题想降级,这些旧包就救不了你。所以除非空间实在吃紧,不建议用 -Scc

还有个选项 paccache,更灵活:

1
2
3
sudo pacman -S pacman-contrib
sudo paccache -r
# 默认只保留最近 3 个版本,删掉旧缓存

我自己在 SSD 容量充足的情况下会保留 5 个版本,给回滚留空间。机械硬盘的小容量设备可以只留 2 个。

另外注意 /boot 分区的空间。内核更新频繁生成新 initramfs,EFI 分区太满可能导致更新失败。一般建议 EFI 分区至少留 512MB,实际 1G 以上比较安心。


用 Reflector 优化镜像源

Arch 官方镜像列表有几百个节点,速度慢或者不同步的源会导致下载超时、包校验失败:

1
2
sudo pacman -S reflector
sudo reflector --latest 20 --protocol https --sort rate --save /etc/pacman.d/mirrorlist

这条命令根据你的网络状况动态选最快的 20 个源。不需要手动编辑 mirrorlist,跑完直接生效。


执行更新前读公告

Arch 公告页不是摆设。https://archlinux.org/news/ 每次有重大变更都会发通知,比如:

  • glibc 大版本升级,需要重启
  • systemd 变更默认行为
  • 软件包更名或者拆包
  • 内核 ABI 不兼容导致第三方模块失效

我通常的做法是 sudo pacman -Sy 之后先跑 pacman -Qu 看有哪些包要更新,然后对着公告列表扫一眼标题。涉及核心组件(kernel、systemd、glibc、mesa 这种级别的),先不急着 -Su,看完公告说明再动手。


别在更新时开太多进程

Pacman 安装包时会替换掉旧文件。如果你的浏览器、编辑器或者其他程序正在被替换的文件还在占用,更新结束后可能行为异常。最安全的做法:

  1. 保存所有工作
  2. 退出图形界面(X11/Wayland)或者至少关闭高频读写进程
  3. 切换到 TTY(Ctrl+Alt+F3)执行更新
  4. 更新完重启

配置 pacman 的 Hook 做自动清理

不想每次都手动清理缓存,可以写一个 pacman hook,更新结束后自动执行 paccache

创建文件 /etc/pacman.d/hooks/99-paccache.hook

1
2
3
4
5
6
7
8
9
10
11
[Trigger]
Operation = Upgrade
Operation = Install
Operation = Remove
Type = Package
Target = *

[Action]
Description = Cleaning up package cache...
When = PostTransaction
Exec = /usr/bin/paccache -r

这样每次 pacman 操作之后都会自动清理旧包缓存,省心。


学会看报错,不要盲目 force

我见过的最危险的操作之一就是文件冲突的时候直接上 --overwrite='*'。这相当于说"不管什么文件冲突,全给我覆盖"。有个一次把我的配置文件冲掉,SSH 密钥差点丢。

正确的做法是对照报错信息逐个处理。常见的冲突类型:

  • 包 A 和包 B 争夺同一个文件路径 → 通常卸载其中一个
  • pacman 显示文件已存在但不是任何已安装包的成员 → 可能是以前手动编译安装的残留,确认后可以 --overwrite 指定那个具体文件
  • GPG 签名验证失败 → 检查系统时间对不对,或者重新同步 keyring:sudo pacman-key --init && sudo pacman-key --populate archlinux

最后一个建议

Arch 不适合"放着不管"的策略。如果你半年不更新,再滚的时候依赖图可能已经是灾难级别。我的习惯是每周至少一次 pacman -Syu,好管理,好排查。

滚动更新不是玄学,就是一套可重复、可验证的流程。磁盘检查、公告阅读、备份习惯、Hook 辅助——把这些步骤固化到肌肉记忆里,Arch 的稳定性和滚动更新的新鲜度完全可以兼得。


本文由 BOSH 的博客助手 HerMes 整理 🗜

原文链接:https://bosh.zz.ac/

本文作者:BOSh
本文链接:http://bosh.zz.ac/posts/93728451.html
版权声明:本文由BoSh发布,部分内容来源于网络。