装环境这件事不该每天重查
换新机器、起容器、给同事配开发环境时,最耗时的往往不是写代码,而是找从哪下、下哪个版本、校验对不对。镜像和下载站就是解决这个的。我单独放一组,并且只收那些提供校验值、版本目录清晰、有明确官方来源的站点,凡是满屏高速下载器、把真下载按钮藏起来的,一律不进。
这一组我按语言和系统分了小文件夹:系统镜像、语言运行时、包仓库、容器基础镜像。分法不追求漂亮,只求重装系统那天能顺着文件夹一路点下去,不用先想该从哪儿开始。
具体在用的入口
- 高校与云厂商的开源镜像站:Linux 发行版、语言安装包、常用包的镜像。装系统、配包管理器源时先把源地址换到国内镜像,下载速度差别是数量级的。
- 语言官方下载页与版本归档:PHP、Go、Node、Python 的旧版本归档,接手老项目时经常要装一个特定小版本,只能去官方归档找,最新版反而用不上。
- 包仓库索引:Composer、npm、Go 模块的镜像与包页面,查一个包有哪些版本、依赖是什么,装之前先看一眼比装完再报错省事。
- 校验值与签名查询:下载完比对 SHA256 或 GPG 签名,这一步能挡掉镜像不同步或文件被截断的问题,属于我固定会做的一步。
- 容器镜像仓库:拉基础镜像前先看标签和更新时间,别用 latest 直接上生产,浮动标签等于把升级时机交给别人。
留在书签栏的理由是可复现。同一份安装步骤,半年后在新机器上还能照着走一遍,前提是下载入口稳定、版本可指定、校验值可查。那些只给最新版一个按钮的站点,过几个月就对不上号了,我不会收。可复现对我这种一个人维护好几个小站点的人尤其重要,因为没人会替我记住上次到底装了哪个版本。
几个真的踩过的坑
镜像同步有延迟,刚发布的新版本在镜像站上可能还没有,遇到这种情况我回官方源核对,而不是以为自己命令写错了。换源之后记得清一次本地缓存,包管理器和 Composer 都有缓存,源换了还读旧索引,报出来的错很迷惑,我为此浪费过整整一个下午。
版本选择上我有个硬规矩:生产环境写死小版本,不用浮动标签;容器镜像也一样,latest 看着省事,实际等于把什么时候升级交给别人决定。下载大文件之后必做一次校验,尤其是系统镜像和数据库安装包,我遇到过一次文件下到接近完成被截断、安装到一半才报错,白折腾两小时,从此校验值查询页就常驻书签了。另外我会把最终选定的版本号和下载地址一并记进部署笔记,换主机时照抄即可,不再凭印象找。
| 要装什么 | 先看什么 | 容易忽略 |
|---|---|---|
| 系统包 | 镜像源是否同步 | 换源后清缓存 |
| 特定语言版本 | 官方版本归档 | 别只装最新版 |
| 容器基础镜像 | 标签与更新时间 | 生产不用 latest |