恒美微站 Logo 恒美微站
  • 首页
  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心
  • 联系我们

bup 0.28.1 版本解析:归档构建修复、OS X 测试兼容与 bup-python umask 权限

  • 首页
  • 资讯中心
  • /
  • bup 0.28.1 版本解析:归档构建修复、OS X 测试兼容与 bup-python umask 权限

相关资讯

NetAlertX 仓库 Git 工作流指南:单分支直推、共享检出树与 AI 协作安全规则 2026/9/29 2:33:32
Edge-TTS 实战教程:一条命令把文本变成 MP3 语音,免费且无需 API 密钥 2026/9/29 2:28:32
VS Code 下载安装避坑指南:跨平台配置与高频问题排查 2026/9/29 2:28:32

最新资讯

KubeVela 多集群工作流之 export-service:将 Service Endpoint 导出到指定集群
VS2022离线安装Qt5.12实战:适配MSVC v143与工业信创部署
WeDetect 推理测评:精度、速度与显存占用的真实表现
Element el-color-picker实战:格式转换与动态主题
S7-1200通过FB284控制V90伺服与FANUC机器人DP通讯的实战解析
Nexus Repository Manager 3.45.0-win64 Windows 部署与调优实战

今日推荐

开源模型端侧落地实战:量化、推理加速与Agent上下文管理
AI Evals实战指南:从零搭建LLM应用评估体系与CI/CD集成
Java采购管理系统实战:从数据库设计到事务一致性

本周热门

从像素到笔画:srt-whiteboard-animation骨架笔迹追踪实现(Zhang-Suen细化+8邻接追踪)
网站建设的英语怎么说?别只背单词,看完这套安全完整流程才敢上线
新手入门看这篇:建设网站加盟避坑指南与SEO实操

本月精选

自研推理加速器Redwood:两周内实现PyTorch模型高效部署的实战教程
V4L2摄像头采集实战:从camera_client.rar到出图全流程解析
从“谁发明了钢琴键”到知识问答智能体:RAG与记忆工程实践

bup 0.28.1 版本解析:归档构建修复、OS X 测试兼容与 bup-python umask 权限

发布时间:2026/9/29 2:33:32
bup 0.28.1 版本解析:归档构建修复、OS X 测试兼容与 bup-python umask 权限 灾备CLI存储【免费下载链接】bupVery efficient backup system based on the git packfile format, providing fast incremental saves and global deduplication (among and within files, including virtual machine images). Please post problems or patches to the mailing list for discussion (see the end of the README below).项目地址https://gitcode.com/gh_mirrors/bu/bup点击查看免费下载bup 是一个基于 git packfile 格式的高效备份系统提供快速增量保存与全局去重能力。0.28.1 是其 0.28 系列的第一个补丁版本重点修复了三类问题从git archive生成的发布归档解压后能否正常构建、test-web 与 test-meta 在较新 OS X 及 Homebrew rsync 环境下的兼容性以及cmd/bup-python文件权限是否正确遵循 umask。本文以 note/0.28.1-from-0.28.md 为主干结合仓库内 GNUmakefile、lib/cmd/bup.c、lib/bup/io.py 等源码逐条还原这三个修复的实现机制与验证方式帮助读者理解 bup 发布流程、构建系统与权限处理细节。版本背景0.28 引入的变化与 0.28.1 的定位0.28 是一个功能密集的版本。根据 note/0.28-from-0.27.1.md它在上一版本基础上引入了多项结构性改动默认安装前缀改为/usr/localBINDIR/DOCDIR/LIBDIR/MANDIR不再绕过DESTDIR索引index格式变更下一次索引运行会触发全量重建新增实验性的rm与gc子命令需要--unsafe参数gc为概率式清理构建系统开始创建并使用cmd/bup-python它指向./configure阶段选定的 Python 解释器bup web支持unix://...文件系统套接字并能在收到 SIGTERM 时有序退出。0.28.1 正是为修补这批新机制中的缺陷而来改动集中在三处发布归档构建、OS X 下的测试、以及cmd/bup-python的权限行为。整体变更内容见 note/0.28.1-from-0.28.md。从git archive发布归档重新构建问题现象0.28.1 的第一个修复是Builds from unpacked release archives (created viagit archive TAG) should work again即从解压后的发布归档用git archive TAG制作重新构建应当恢复工作。要理解这一修复需要先明白 bup 源码树中存在一类构建时生成文件。以 GNUmakefile 为例构建系统在配置阶段执行$(shell dev/update-checkout-info lib/bup/checkout_info.py)该命令调用 dev/update-checkout-info在普通 git 检出中生成lib/bup/checkout_info.py其中包含当前提交的 SHA-1、分支等检出信息。而git archive生成的归档不包含这一生成文件——归档内容只来自版本库中被标记跟踪的文件构建时生成的中间产物不会入包。源码中的应对机制GNUmakefile 的安装规则给出了完整逻辑if test -e lib/bup/checkout_info.py; then \ $(INSTALL) -pm 0644 lib/bup/checkout_info.py \ $(dest_libdir)/bup/source_info.py; \ else \ ! grep -qF $$Format lib/bup/source_info.py; \ $(INSTALL) -pm 0644 lib/bup/source_info.py $(dest_libdir)/bup/; \ fi也就是说若存在lib/bup/checkout_info.py普通 git 检出场景安装时以source_info.py之名装入库目录若不存在归档构建场景则先检查随源码分发的lib/bup/source_info.py中是否残留未替换的$Format占位符grep -qF $$Format确认无占位符后直接安装。$Format:...$是 git 的export-subst 属性占位符当仓库配置了.gitattributes中的export-subst且通过git archive打包时git 会就地替换这些占位符为对应元数据。因此归档发布版自带的source_info.py中信息已经是替换好的不再依赖 checkout 钩子。0.28.1 之所以要恢复这一能力是因为 0.28 引入cmd/bup-python等新构建目标后构建规则对 checkout 环境的假设变严格了导致归档构建路径失败。该版本把归档场景与检出场景统一梳理并配合 0.31 起对git archive内容漂移问题的持续处理见 note/0.31-from-0.30.1.md使发布归档成为可复现的构建输入。仓库中 test/ext/test-versioning-and-archive 的测试脚本也体现了发布与归档验证流程WVPASS git archive --prefixbup/ -o $tmpdir/bup.tgz HEADOS X 与 Homebrew rsync 下的 test-web / test-meta 修复第二条构建系统修复是test-web.sh and test-meta.sh should now work on newer versions of OS X, and with Homebrew rsync。test-web 与 test-meta 分别对应 test/ext/test-web 与 test/ext/test-meta 两个扩展测试脚本它们早期是独立的.sh测试0.28.1 时期分别名为 test-web.sh / test-meta.sh后续随 bup 将扩展测试收敛为统一命名。二者的共同特点是test-web 依赖 tornado Web 框架0.29 起在 note/0.29-from-0.28.1.md 中明确web tests should be skipped if tornado is not detected并常通过bup web起一个本地服务器进行 HTTP 层面的验证test-meta 会大量读写文件元数据xattr、ACL、mtime 等测试过程中依赖 rsync 来传输并比对目录树的元数据差异。问题根源在 macOS 环境的两个特性其一新版 OS X 对fsync、xattr 与 ACL 的语义遵循与 Linux 不同0.28 的修复列表中也有OS X 对fsync()规范有出乎意料的解释的条目见 note/0.28-from-0.27.1.md其二Homebrew 安装的 rsync 与系统自带 rsync 版本差异较大其-a/-X/-A等选项对元数据尤其是 OS X 扩展属性与 resource fork的处理行为不同导致测试在元数据比对环节失败。0.28.1 的修复方式是让这些测试脚本对 rsync 版本与 OS X 行为做适配而不是假设所有环境下 rsync 的元数据语义一致。这也是 bup 元数据处理一贯谨慎态度的延续——仓库 lib/bup/metadata.py 在 macOS 上处理符号链接权限时甚至会临时修改 umask 来保证结果可复现。修复之后make -j check0.28 起支持的并行测试见 note/0.28-from-0.27.1.md在 macOS Homebrew 环境下也能完整跑通。cmd/bup-python 权限遵循 umaskbup-python 的由来cmd/bup-python是 0.28 引入的构建产物。为了让 bup 的所有脚本尤其是 dev 目录下的辅助脚本与安装后的命令包装器统一使用./configure阶段选定的 Python构建系统从 lib/cmd/bup.c 用不同的编译宏编译出多个变体见 GNUmakefiledev/bup-exec.o: bup_common_cflags -D BUP_DEV_BUP_EXEC1 dev/bup-python.o: bup_common_cflags -D BUP_DEV_BUP_PYTHON1其中dev/bup-python通过-D BUP_DEV_BUP_PYTHON1编译链接src/bup/io.o后生成一个内嵌了所选 Python 解释器的可执行文件仓库内大量 dev 脚本都以它运行例如 dev/lib.sh 中bup-python() { $bup_dev_lib_top/dev/bup-python $; }。./configure阶段会把选定的解释器信息写入 config/config.var/bup-python-config安装后相关的脚本 shebang 会替换为明确的#!/...行。权限问题的本质0.28 期间cmd/bup-python在构建时通过$(CC) ... -o $见 GNUmakefile 的ld_py_bin直接由链接器生成其文件模式权限位取决于编译器/链接器的默认输出权限而不是调用者当前 umask 所期望的值。对于多用户系统或遵循严格安全策略例如默认umask 077的环境这会导致生成的可执行文件权限过宽或与预期不一致。0.28.1 的修复是让cmd/bup-python的权限遵循 umask——从源码结构看最直接的实现途径是让该二进制在构建/安装阶段以install -m显式设置模式位GNUmakefile 中对安装文件统一使用$(INSTALL) -pm 0755这类规则见 GNUmakefileinstall工具会在给定模式上叠加当前 umask 取交集从而既保证可执行位又尊重用户的权限收缩策略。仓库中对 umask 的系统性处理bup 对 umask 的重视并非孤立修复。在 lib/bup/io.py模块加载伊始就读取并恢复 umask# Get the umask once, early, so we can avoid further global changes. initial_umask os.umask(0o777) os.umask(initial_umask)initial_umask被全库复用例如 lib/bup/bloom.py 创建 bloom 过滤器时执行os.fchmod(fd, 0o666 ~initial_umask)确保临时文件权限也受 umask 约束。后续版本持续强化这一行为——0.33 的变更说明中即包含bup should now respect the current umask, directory sgid bit, ...见 note/0.33-from-0.32.mdtest/ext/test-empty-metadata 等测试还会显式切换 umask 验证行为。0.28.1 对cmd/bup-python的修复正是这条权限纪律在构建产物上的补全。修复影响与升级建议综合来看0.28.1 是一个小步快走的补丁版本三项改动分别落在发布可复现性、测试平台兼容性与构建产物权限正确性上修复点影响范围仓库依据发布归档可重建通过git archive TAG分发的用户与打包流程GNUmakefile、test/ext/test-versioning-and-archivetest-web / test-meta 兼容 OS X Homebrew rsyncmacOS 上执行make check的开发者lib/bup/metadata.pycmd/bup-python遵循 umask多用户环境与严格权限策略下的安装结果GNUmakefile、lib/bup/io.py对使用者而言如果你是从官方 tag 归档而非 git 检出构建 bup0.28.1 是值得升级的版本——它恢复了归档构建路径如果你在 macOS 且使用 Homebrew rsync 跑测试此版本让 test-web 与 test-meta 不再因 rsync 元数据语义差异而误报。权限相关改动则让cmd/bup-python在受控 umask 环境下的行为可预期与 bup 整体对文件权限、元数据的严谨态度保持一致。0.28.1 由 Gernot Schulz、Karl Semich、Rob Browning 与 ilovezfs 等贡献者共同完成见 note/0.28.1-from-0.28.md 末尾致谢。后续的 note/0.29-from-0.28.1.md 则在此基础上继续推进 Python 2.6 兼容、索引格式调整、实验性prune-older命令与gc性能优化感兴趣的读者可以沿着 note 目录下的版本变更序列追踪 bup 的演进脉络。赞分享灾备CLI存储【免费下载链接】bupVery efficient backup system based on the git packfile format, providing fast incremental saves and global deduplication (among and within files, including virtual machine images). Please post problems or patches to the mailing list for discussion (see the end of the README below).项目地址https://gitcode.com/gh_mirrors/bu/bup点击查看免费下载相关推荐bup 0.32.1 版本解析POSIX1e ACL 恢复修复与 pytest 7 构建支持bup 0.32.1 版本解析POSIX1e ACL 恢复修复与 pytest 7 构建支持 导读 本文以 bup 官方发布说明 note/0.32.1 fr灾备CLI存储bup 0.31 版本升级指南Python 3 支持、bup features 诊断命令与构建依赖变更全解析bup 0.31 版本升级指南Python 3 支持、bup features 诊断命令与构建依赖变更全解析 bup 0.31自 0.30.1 起是一次面灾备CLI存储bup 0.33.6 版本解析getgroups(2) 有效组 ID 补全修复与 bup-config(5) 手册分节安装修正bup 0.33.6 版本解析getgroups 2 有效组 ID 补全修复与 bup config 5 手册分节安装修正 bup 0.33.6 是 bup灾备CLI存储上一篇Tartelet 完全指南如何在 macOS 上轻松管理多台 GitHub Actions 虚拟机器运行器下一篇SIEM on Amazon OpenSearch Service 日志配置自定义实战用 user.ini 修改索引轮转与命名创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于恒美微站

恒美微站专注于为个体商户、工作室提供极简自助建站服务,让每个人都能轻松拥有专业网站。

快速链接

  • 关于我们
  • 建站服务
  • 主题模板
  • 案例展示
  • 资讯中心

服务项目

  • 可视化建站
  • 拖拽编辑
  • 主题定制
  • SEO 优化
  • 网站托管

联系方式

  • 📍 地址:北京市朝阳区建国路 88 号
  • 📞 电话:400-888-8888
  • ✉️ 邮箱:info@hmyw.cn
  • 🕐 时间:周一至周日 9:00-18:00

© 2024 恒美微站 hmyw.cn 版权所有 | 京 ICP 备 12345678 号