结论
同一台机器上装软件有六条路线,定位不同:日常装软件走声明式配置(一次声明、重装可复现);逛和尝鲜走 Discover / 临时运行;仓库里没有的才走外部包,且要认清代价(升级、回滚、垃圾回收是否还管用)。
| 路线 | 管什么 | 一句话定位 |
|---|---|---|
| 1. 声明式配置 | 仓库内软件 | 主力:写进系统配置,重建即生效 |
| 2. Discover | Flatpak 应用 | 图形逛店,只管 Flatpak,不管系统包 |
| 3. 临时运行 | 任意仓库包 | 不装只跑,尝鲜验证用 |
| 4. 命令行安装 | 仓库内软件 | 同声明式,只是操作面不同 |
| 5. 外部 release 包 | 仓库外软件 | 仓库没有时的补充,有代价 |
| 6. 其他方式 | 特殊场景 | 容器 / 自打包 / 旧版兼容 |
路线 1:仓库声明式安装(主力)
在系统配置里声明要装的包,重建后生效。特点是可复现:换机器把同一份配置拿过去即得同一套软件;回滚跟系统世代走。
- 检索:在包检索站按名或类别搜,确认包属性名与版本
- 安装:配置里加一行,执行系统重建
- 回滚:回退到上一个系统世代即可
路线 2:Discover 软件中心
桌面自带的图形商店。在该系统上它没有系统包后端,能浏览和安装的只有 Flatpak 应用(另带固件与主题插件)。远端只能手工增减,不能写进声明式配置。
- 适用:逛应用、装 Flatpak 打包的桌面软件
- 不适用:装系统包、装仓库原生包
- 国内加速:把远端地址换成国内镜像后验证可达
路线 3:临时运行(不装只跑)
只跑一次、不进系统,适合尝鲜和验证:先跑起来看是否合用,合用再收进声明式配置。
nix-shell -p 软件名 --run 软件名
nix run 仓库地址#软件名路线 4:命令行安装
与声明式安装是同一仓库的不同操作面:命令行适合单次快速装、写脚本批量装;声明式适合长期持有。要可复现的机器优先声明式。
nix search 仓库别名 关键词
nix profile install 仓库别名#软件名路线 5:代码托管站发布的 Linux 包
仓库里没有、上游只发了压缩包或安装包时的补充路线,常见形态有三类:解压即用、需手工放路径、提供安装脚本。代价是升级、卸载、回滚都要手工管。
- 先确认仓库真没有,再考虑外部包
- 优先选上游提供的免安装压缩包,落到用户目录自管
- 记下版本与来源,升级时可追溯
路线 6:其他方式
- 容器化运行:需隔离或与系统依赖冲突的软件,用容器跑
- 自打包:长期用的外部软件,写一份自有打包声明收进配置
- 兼容层:只在上游提供旧格式包时用,注意沙箱权限
管理命令
| 用途 | 命令 |
|---|---|
| 搜仓库包 | nix search 仓库别名 关键词 search.nixos.org/packages |
| 临时跑一次 | nix-shell -p 软件名 --run 软件名 |
| 列 Flatpak 远端 | flatpak remotes --show-details |
| 换 Flatpak 镜像源 | flatpak remote-modify --url=镜像地址/远端名 |
边界
- Discover 装不了系统包:搜不到系统软件是机制限制,不是源没配够
- 国内镜像地址待实测:逐个验证可达与速度后再定,不拼 URL
- 外部包不在系统世代管理内:重装需手工补