1 - 用户数据与迁移
用户目录
Crib 的数据在 ~/Library/Application Support/Crib/。下面列出与你有关的部分,有些文件在用到相应功能后才出现:
~/Library/Application Support/Crib/
- user.sqlite个人资料:笔记、书签、标签、阅读历史、更正
- preferences.json设置
- session.json窗口、标签页和阅读位置
- snippets.json片段库
- backups/个人资料库升级结构前自动做的备份
- Library/下载或导入的资料包、搜索世代和登记表
- packs/
- generations/
- registry.sqlite
- Distribution/版本目录缓存
- Distribution-partials/中断下载的已下载部分,保留 7 天
- Distribution-rejected/无法再通过校验的旧目录缓存,保留最近 5 份
- api/本地 API 的地址、密钥和锁,启用 API 后出现
- crib-migration.json从 PGDash 迁移的记录,迁移过才有
App 内置的资料包和初始搜索索引在 Crib.app/Contents/Resources/Library 里,只读,随 App 一起替换。
个人资料与内容
| 类别 | 文件 | 丢了会怎样 |
|---|---|---|
| 个人资料 | user.sqlite、snippets.json、preferences.json、session.json | 无法从别处恢复,需要自己备份 |
| 内容 | Library/、Distribution*/ | 可以重新下载或导入;内置内容随 App 恢复 |
| 运行状态 | api/ | 重新启用本地 API 时重建 |
下载、导入、启用、停用、卸载资料包和恢复资料组合都不写个人资料。卸载一个版本不会删除挂在上面的笔记。
备份个人资料
| 命令 | 位置 | 得到什么 |
|---|---|---|
| 备份个人资料… | “资料库 → 维护”,或个人资料列表的更多菜单 | 一个 SQLite 文件,默认名 Crib-user-backup.sqlite,含笔记、书签、标签、阅读历史和更正 |
| 导出个人资料… | 个人资料列表的更多菜单 | 一个可移植的文件夹,默认名 Crib-personal |
| 导出更正… | 个人资料列表的更多菜单 | 只含更正的文件夹,默认名 Crib-corrections |
| 导出片段库… | “设置 → 片段”的更多菜单 | 片段库文件 |
- 备份和导出前,Crib 先保存所有正在编辑的草稿。与其他编辑冲突的草稿另存为新笔记。
- 备份用 SQLite 的在线备份完成,包含尚未合并进主文件的已提交数据。Crib 运行时直接复制
user.sqlite可能漏掉这部分。 - 备份不能保存到 Crib 的用户目录里。
- 片段和设置不在个人资料备份里,片段要单独导出。
恢复个人资料
- 导入个人资料…:读入一个导出的文件夹,与现有个人资料合并;冲突的条目另存为副本,不覆盖。
- 从备份恢复…:只在个人资料打不开时出现(提示“无法打开个人资料”或“个人资料需要更新版本的 Crib”)。Crib 先打开备份的副本检查,通过后把原来的
user.sqlite改名为user-unreadable-<时间>.sqlite保留,再换上备份,然后重新打开。 - 新建个人资料…:个人资料打不开时,从空白开始;原文件同样改名保留。
个人资料打不开时,阅读和搜索照常可用,只有笔记、书签、更正和阅读历史停用。
从 PGDash 迁移
Crib 以前叫 PGDash,数据在 ~/Library/Application Support/PGDash/。Crib 启动时、打开任何数据之前,会检查是否需要迁移。
迁移过程
- 确认 PGDash 没有在运行。PGDash 仍在运行时迁移失败,提示退出 PGDash 后重试。
- 清点旧目录中每个文件的大小和 SHA-256。遇到符号链接、多个硬链接或特殊文件就停止。
- 把整个旧目录复制到用户资料目录旁边的暂存目录
.crib-migration-<编号>,再清点一次;复制期间旧目录有变化就停止。 - 用 SQLite 在线备份从副本重建
user.sqlite和Library/registry.sqlite,并把登记表里的路径改到新目录。 - 旧的
api/改名为legacy-api-<编号>存档。在 Crib 中需要重新启用本地 API。 - 写入迁移记录
crib-migration.json,同步到磁盘,然后一次性改名为Crib/。
旧目录从头到尾只读:不写入、不创建 WAL 文件,也不删除。迁移完成后它原样留在原处。
状态文件
迁移状态记在 ~/Library/Application Support/.Crib-migration-state.json,在 Crib 目录之外,因此失败的尝试不会被误认为已迁移。
| 状态 | 含义 |
|---|---|
pending | 正在迁移 |
failed | 上次迁移失败 |
done | 已完成 |
declined | 你选择了跳过,不再尝试 |
replaceRequested | 你要求用旧资料替换现有的 Crib 资料,下次启动时执行 |
迁移失败
迁移失败时不创建 Crib 目录,Crib 以只读方式运行:内置文档照常阅读和搜索,笔记、书签、更正、阅读历史、下载和设置都不能修改。每次启动都会重试。提示窗口有三个按钮:
- 重试迁移:立即再试一次,成功后 Crib 重新打开。
- 稍后处理:保持只读,下次启动再试。
- 跳过迁移…:确认后 Crib 从空白的个人资料开始,旧资料原样留在原目录,以后不再提示。
已有 Crib 资料时
如果 Crib 目录已经存在、没有迁移记录,而 PGDash 目录也还在,Crib 提示“发现 PGDash 旧资料”:
- 迁移旧资料:Crib 重新打开时,把现有 Crib 目录整体改名为
Crib-before-migration-<时间>保留,再迁移旧资料。迁移失败时改回原名。 - 稍后处理:下次启动再提示。
- 不再提示:继续使用现有的 Crib 资料。
迁移之后
环境变量
这些变量用于开发和测试,日常使用不需要设置。
CRIB_USER_DATA- 改用另一个用户目录。设置后不会自动从 PGDash 迁移
CRIB_MIGRATE_FROM- 指定迁移的来源目录
CRIB_LIBRARY- 用另一个资料库代替 App 内置的内容
CRIB_CATALOG_URL- 版本目录地址,默认
https://repo.pigsty.io/doc/catalog.json CRIB_ALLOW_DEVELOPMENT_CONTENT- 设为
1时接受开发签名的内容 CRIB_ALLOW_LOOPBACK_HTTP- 设为
1且可信根是开发可信根时,允许从127.0.0.1的 HTTP 地址获取目录
CRIB_LIBRARY、CRIB_CATALOG_URL和两个CRIB_ALLOW_*变量没有设置时,Crib 读取同名的旧变量PGDASH_*;两者都设置时以CRIB_*为准。PGDASH_USER_DATA不再指定 Crib 的用户目录,只被当作迁移来源。- 设置了任何
CRIB_*或PGDASH_*变量时,需要重新打开的操作(例如迁移完成后)只退出 Crib,不会自动重新打开。
2 - 来源与许可
Crib 自己的代码和它收录的内容是两回事:应用的许可证不会覆盖手册、译文、Wiki、字体和图片各自的权利。本页列出每类内容的来源和目前的许可状态。
应用代码尚未选定许可证,源码未公开。收录内容的再分发许可正在逐项核对,在核对完成前不会公开分发。本页是来源清单,不是新的授权。
内容来源
| 内容 | 来源 | 版权与许可 |
|---|---|---|
| 英文手册 | PostgreSQL 全球开发组发布的官方文档,按固定版本的源码归档构建 | 各版本手册自带法律声明(legal.sgml 或早期版本的引言),原样保留在资料包的 licenses/ 目录 |
| 中文手册 | pgdoc 收录的各版本简体中文译本 | 保留各版本原有的译者署名与版权声明;译文的授权与署名单独核对,不从英文原版的授权推定 |
| 历史资源(早期版本的 CSS、GIF) | 同一版本的另一语言版本或核实过的同版材料 | 逐个记录来源与哈希;6.3、6.4 的样式表是兼容样式,不冒充 1998 年的原始文件 |
| 手册插图(SVG) | 手册源码自带的本地 SVG | 转为静态图片显示,原始字节保留 |
| Wiki | pg.center 2026-10-24 的冻结快照 | 保留每条记录的原始来源、语言与证据;不推定 Center 原创文字或译文有统一授权 |
| 版本、安全与能力信息 | 版本发布归档、CVE 记录、能力矩阵 | 不同来源分别保留引用,不假定有共同授权 |
| Wiki 引用的外部网页与插图 | 原始链接 | 不随包下载,不推定任何许可 |
每个资料包里的 sources.json 记录了该包每个文件的来源和哈希,licenses/ 保存原始的法律声明。在应用里打开一页手册后,从阅读区右上角的“更多”菜单选择“来源与许可”,可以查看这一页所在资料包的来源清单和许可文件。
你自己的内容
笔记、书签、本地更正和片段属于你,存放在本机用户目录,不会打包进官方资料包,也不会被收集或上传。本地更正在阅读时明确标为“本地更正”,与官方原文区分。
应用依赖
macOS 应用只使用系统框架(SwiftUI、AppKit、WebKit、CryptoKit 等)和系统自带的 SQLite,没有引入第三方 Swift 包。构建端的 Go 工具依赖:
| 依赖 | 用途 | 许可 |
|---|---|---|
github.com/mattn/go-sqlite3 | SQLite 绑定 | MIT;内含的 SQLite 源码另有声明 |
github.com/yuin/goldmark | 渲染 Wiki 的 Markdown | MIT |
golang.org/x/net | 解析 HTML | BSD 风格 |
golang.org/x/text | Unicode 规范化 | BSD 风格 |
应用目前随包附带一份 Font Awesome Free 字体子集及其完整许可文本;2026-11-06 重设计后界面已改用系统的SF Symbols,这份字体会在后续打包改动中移除。
本站
本站文字采用 CC BY 4.0 许可,站点源码在 pgsty/crib.pgsty.com。站内截图来自 Crib 的开发构建,其中显示的手册内容版权归原作者与译者。
3 - 常见问题
现在能下载吗?
还不能。Crib 只有本地开发构建,Developer ID 签名、Apple 公证、内容再分发许可和生产资料包目录都还没完成。见发布状态和下载。
收费吗?开源吗?
都还没有定。应用代码尚未选定许可证,源码暂未公开。确定后会在下载页和开发日志写明。
需要联网吗?
日常使用不需要。手册和搜索索引随应用安装,首次启动断网就能阅读和搜索。以下操作会联网:
- 刷新版本目录、下载其他版本或 Wiki(Core 版);
- 点击搜索结果下方的网页搜索入口(在浏览器中打开);
- 打开手册或 Wiki 中的外部链接。
没有账号,没有云同步,也不收集使用数据。
支持哪些 Mac?
应用按 macOS 14 部署目标构建,目前只在 Apple Silicon、macOS 27 的开发机上实测。macOS 14 实机和 Intel Mac尚未测试,正式发布前不作支持承诺。
界面有英文吗?
没有。应用界面目前只有中文。文档内容是中英双语的,可以只读英文手册,搜索时用 lang:en 限定英文。
某一节只有英文、没有中文怎么办?
62 套手册都是完整的,但两种语言的章节不一定一一对应。切换语言时,如果当前小节没有已验证的对应,Crib 会回到最近的已对应父节并提示。Wiki 中某种语言没有正文时显示缺失,不用另一种语言填充。
能自己修改译文吗?
可以写本地更正:选中一段文字,写下修改后的内容。更正存在你的个人资料库里,阅读时与原文并列显示,不会改动资料包,也不会自动应用到其他版本或语言。更正可以导出,方便提交给译者。见笔记、书签与本地更正。
卸载一个版本,笔记会丢吗?
不会。笔记和更正存在独立的 user.sqlite 里。卸载后,挂在该版本上的笔记显示为目标不可用;重新安装后恢复定位。
和 Dash 有什么关系?
Crib 借鉴了 Dash 的片段库、系统服务和本地 API 等用法,但内容格式是自己的:.crib 资料包带双语章节对应、版本信息和签名,不兼容 Dash docset,也不使用 Kapeli 的文档源。
能用来查 Patroni、PgBouncer 等其他项目的文档吗?
目前不能。资料包格式本身不绑定 PostgreSQL,以后可以用同样的格式加入其他项目,但这些都还没有立项。
以前用过 PGDash,数据怎么办?
PGDash 是 Crib 开发期间的旧名。Crib 首次启动时把旧目录的个人资料复制到新目录,旧目录保持不动。见用户数据与迁移。
在哪里反馈问题?
Crib 的源码仓库暂未公开。对本站内容的意见可以在 pgsty/crib.pgsty.com 提 issue。