资讯动态

rsync 从源码构建与安装完全指南:依赖库选型、configure 选项与跨平台踩坑实录

发布时间:2026/10/13 3:12:33 来源:尧图企业网站定制
CLI数据同步网络【免费下载链接】rsyncAn open source utility that provides fast incremental file transfer. It also has useful features for backup and restore operations among many other use cases.项目地址https://gitcode.com/gh_mirrors/rs/rsync点击查看免费下载本指南以仓库根目录的 INSTALL.md 为主线系统讲解如何从源码构建 rsync当前版本 3.5.1见 version.h覆盖 Ubuntu PPA 快速安装、可选依赖库ACL、xattr、xxhash、zstd、lz4、openssl、libidn2的取舍逻辑、各主流发行版/平台的包安装命令以及./configure的常用选项与多个平台特有的构建问题。读完本文你将能按需定制一个功能全开或最小裁剪的 rsync 二进制并独立解决从 git 源码构建时最常见的依赖报错。构建思路功能开关由 configure 统一裁决rsync 的构建体系以 Autoconf 为核心编译前通过./configure探测本机已安装的开发库能检测到的特性会自动启用检测不到的库会在配置阶段报错并提示对应的--disable-LIB选项。也就是说缺库并不会导致构建彻底失败而是让你显式决定放弃这个特性还是先补装库再重配。从 configure.ac 可以看到当某个库缺失时configure 会汇总所有问题并输出形如Configure found the following issues: - Failed to find xxhash.h for xxhash checksum support. ... To disable one or more features, the relevant configure options are: --disable-xxhash随后直接AC_MSG_ERROR(Aborting configure run)中止配置。因此在动手前先想清楚哪些功能是你真正需要的。下表整理了仓库中 configure.ac 实际定义的全部特性开关功能configure 选项宏定义对应源码位置ACL 支持--disable-acl-supportSUPPORT_ACLSconfigure.ac扩展属性--disable-xattr-supportSUPPORT_XATTRSconfigure.acxxhash 校验和--disable-xxhashSUPPORT_XXHASHconfigure.aczstd 压缩--disable-zstdSUPPORT_ZSTDconfigure.aclz4 压缩--disable-lz4SUPPORT_LZ4configure.acopenssl 加密库--disable-opensslUSE_OPENSSLconfigure.acIDN 国际化域名--disable-idnSUPPORT_IDNconfigure.acIPv6--disable-ipv6INET6configure.ac其中 ACL 与 xattr 的探测逻辑还按操作系统分支处理ACL 会区分 UnixWare、Solaris、IRIX、AIX、Tru64、macOS、HP-UX 与 POSIX ACL 等多种实现configure.acxattr 则区分 Linux/NetBSD/Cygwin、macOS、FreeBSD 等configure.ac。这解释了为什么同一个--disable-acl-support在不同平台上的实际检测路径并不相同。快速通道Ubuntu 用户直接用 PPA如果你使用受支持的 Ubuntu 系列jammy 22.04 LTS、noble 24.04 LTS、questing 25.10、resolute 26.04 LTS且只想用最新的上游稳定版 rsync官方维护了一个跟踪稳定版本的 Launchpad PPAsudo add-apt-repository ppa:rsyncproject/rsync sudo apt update sudo apt install rsync想提前体验下一个发布版本则使用从 git master 分支最新提交重建的rsync-latestPPAsudo add-apt-repository ppa:rsyncproject/rsync-latest sudo apt update sudo apt install rsync需要特别注意的是这些开发快照的版本号形如3.5.0~git20260601...会被刻意排序在对应的稳定版之下因此安装 stable PPA 后绝不会被悄悄升级到快照版。该 PPA 仅用于测试可能包含未发布的改动生产环境请勿使用。PPA 的跨架构构建状态可在对应 Launchpad 页面查询。其余情况非 Ubuntu、需要定制特性、需要最新 git 源码请继续阅读下文。从源码构建的基础环境基本工具链C 编译器必须。可选地安装C 编译器用于尝试编译部分硬件加速的校验和例程仓库中的 simd-checksum-x86_64.cpp 与 simd-checksum-avx2.S 即属于此类编译入口见 Makefile.in。现代 awk某些系统由 gawk 或 nawk 提供。它被用于生成proto.h、daemon-parm.h、help-*.h等构建期文件相关规则见 Makefile.in。从 git 仓库构建的额外要求如果是直接从 git 仓库而非发布 tar 包构建还需要GNU autotoolsautoconf 与 automake用于从 configure.ac 生成 configure 脚本python3 的 markdown 库二选一cmarkgfm或commonmark用于生成 man 手册页。若系统没有提供python3-cmarkgfm或python3-commonmark软件包可以为当前构建用户安装 commonmark 库python3 -mpip install --user commonmark验证是否就绪在 rsync 源码目录内执行./md-convert --test rsync-ssl.1.md如果输出The test was successful.即代表可用。md-convert 脚本会把 Markdown 转成 html 及 nroff 格式其解析逻辑依赖上述两个库之一选择优先级为 cmarkgfm → commonmarkmd-convert若两者都缺失脚本会直接报错退出。不想装 python markdown 库的替代方案直接抓取与当前 git 源码匹配的最新生成文件含 manpage仓库提供了专用脚本./prepare-source fetchgen该命令通过 rsync 协议从上游的 generated-files 目录拉取最新生成文件详见 prepare-source。可选依赖库逐个说装什么、为什么、影响哪些功能ACL 支持要支持复制 ACL 文件信息需安装 acl 开发库同时建议安装 ACL 操作辅助程序如setfacl/getfacl它们既方便日常管理 ACL也是运行 rsync 测试套件的前提。构建期探测通过acl_get_file/acl_get_entry等函数完成configure.ac。Xattr 支持要支持复制扩展属性xattr需安装 attr 开发库辅助程序同样有助于运行测试套件。Linux 分支下 configure 会调用AC_SEARCH_LIBS(getxattr,attr)链接 attr 库configure.ac。xxhash让 rsync 算法跑得更快xxHash 提供极快的校验和函数能显著加速rsync 算法在大文件块匹配阶段的速度。安装该开发库后xxhash 会成为默认校验和算法若想让 rsync 拥有完整的校验和算法集合至少需要v0.8.0版本。configure 通过XXH64_createState函数探测configure.ac。zstd省 CPU 的高压缩比压缩zstd 在同压缩级别下比默认的 zlib 消耗更少 CPU。注意至少需要 1.4 版本——如果系统只能提供 1.3建议干脆跳过 zstd 压缩特性。安装后 zstd 会成为默认压缩算法。configure 通过ZSTD_minCLevel探测configure.ac。Debian Buster 用户可考虑临时启用 buster-backports 将 zstd 从 1.3 升级到 1.4。lz4极低 CPU 开销lz4 压缩算法 CPU 开销极低但压缩比也是各算法中最小的。安装后 lz4 会作为可用压缩算法之一加入默认算法仍是 zstd除非未安装。configure 通过LZ4_compress_default探测configure.ac。openssl cryptoMD4/MD5 硬件加速openssl crypto 库为 MD4 与 MD5 提供部分硬件加速的校验和例程安装后 rsync 计算 MD4/MD5 校验和时会使用可能更快的实现。configure 需要openssl/md4.h与openssl/md5.h头文件并通过EVP_MD_CTX_copy函数确认库可用configure.ac。另外configure.ac 中还有独立的--enable-md5-asm选项可在 Linux x86_64/amd64 上启用纯汇编的 MD5 优化对应 lib/md5-asm-x86_64.S其他平台显式开启会直接报错。libidn2国际化域名libidn2 把国际化域名转换为解析器能理解的 IDNA A-labelPunycode形式。安装后 rsync 可以连接名字含非 ASCII 字符的 daemon也允许 daemon 的hosts allow与hosts deny配置以同样的国际化形式书写。configure 通过idn2_lookup_ul函数探测configure.ac。各平台依赖包安装速查以下命令按上述条目拆分也可按需合并为单条安装。仓库还提供了一个 Ubuntu/Debian 专用脚本等价于下方 Debian/Ubuntu 全部命令support/install_deps_ubuntu.sh。Debian / Ubuntusudo apt install -y gcc g gawk autoconf automake python3-cmarkgfm sudo apt install -y acl libacl1-dev sudo apt install -y attr libattr1-dev sudo apt install -y libxxhash-dev sudo apt install -y libzstd-dev sudo apt install -y liblz4-dev sudo apt install -y libssl-dev sudo apt install -y libidn2-dev或直接运行support/install_deps_ubuntu.sh。CentOSpython3-pip 需使用 EPELsudo yum -y install epel-release sudo yum -y install gcc g gawk autoconf automake python3-pip sudo yum -y install acl libacl-devel sudo yum -y install attr libattr-devel sudo yum -y install xxhash-devel sudo yum -y install libzstd-devel sudo yum -y install lz4-devel sudo yum -y install openssl-devel sudo yum -y install libidn2-devel python3 -mpip install --user commonmarkFedora 33sudo dnf -y install acl libacl-devel sudo dnf -y install attr libattr-devel sudo dnf -y install xxhash-devel sudo dnf -y install libzstd-devel sudo dnf -y install lz4-devel sudo dnf -y install openssl-devel sudo dnf -y install libidn2-develFreeBSD假设 python3 版本为 3.7sudo pkg install -y autotools python3 py37-CommonMark sudo pkg install -y xxhash sudo pkg install -y zstd sudo pkg install -y liblz4 sudo pkg install -y libidn2macOSbrew install automake brew install xxhash brew install zstd brew install lz4 brew install openssl brew install libidn2Cygwin先停止所有 cygwin 程序再从 cmd shell 运行 setup 程序setup-x86_64 --quiet-mode -P make,gawk,autoconf,automake,gcc-core,python38,python38-pip setup-x86_64 --quiet-mode -P attr,libattr-devel setup-x86_64 --quiet-mode -P libzstd-devel setup-x86_64 --quiet-mode -P liblz4-devel setup-x86_64 --quiet-mode -P libssl-devel setup-x86_64 --quiet-mode -P libidn2-develCygwin 有时打包了 commonmark、有时没有若没有可在 bash shell 中以构建用户身份执行python3 -mpip install --user commonmark绕过。配置、编译与安装依赖就绪后标准三步./configure make sudo make install默认安装路径为/usr/local/bin可通过./configure的选项修改安装目录及其他参数完整选项列表用下面命令查看./configure --helpconfigure 的几个关键行为daemon 默认用户/组检测configure 会通过检查/etc/group文件判断本机用的是nobody还是nogroup组configure.ac。这仅用于 rsync daemon 的默认组——daemon 默认尝试以nobody用户与组权限运行。你既可以编辑生成后的config.h中的NOBODY_USER/NOBODY_GROUP宏也可以在/etc/rsyncd.conf中覆盖更推荐的做法是在配置阶段就用--with-nobody-userUSER与--with-nobody-groupGROUP显式指定configure.ac。popt 选项解析库自 2.4.7 起 rsync 使用 Eric Troan 的 popt 库解析命令行选项。发行版自带了一份精简副本见 popt/README.rsync当构建主机没有 popt 库、或显式传入--with-included-popt时使用内嵌版本。维护者模式--enable-maintainer-mode会开启额外的调试特性-DMAINTAINER_MODE见 configure.ac。此时 rsync 崩溃时会尝试在DISPLAY:0上弹出 xterm 调试界面——对开发者排查崩溃有用但生产构建务必关闭。更多实用开关--with-included-zlib使用内嵌 zlib、--with-rrsync额外安装 rrsync 受限 shell 脚本及其 manpage、--with-rsyncd-confPATH自定义 daemon 配置文件路径默认/etc/rsyncd.conf、--with-rshCMD自定义默认远程 shell默认 ssh、--with-secluded-args将--secluded-args设为默认等均定义于 configure.ac。基于 git 分支的自动独立构建目录如果希望按当前 git 分支名自动使用独立的 build 目录从一个干净的 git checkout 开始在首次运行./configure之前执行mkdir auto-build-save之后每次./configure都会生成一个与分支对应的全新构建目录并在源码目录创建特殊的 Makefile 软链接使你在源码目录就能直接运行make与./configure构建目录会随分支自动切换。这在使用 branch-from-patch 与 patch-update 脚本维护官方补丁时非常有用。注意事项若处于 git detached head 状态需要手动cd进构建目录执行 make作者还建议在源码目录额外创建两个软链接便于调试ln -s build/rsync . ln -s build/testtmp .Make 兼容性proto.h 生成规则Makefile.in 中proto.h-tstamp目标的依赖使用了通配符$(srcdir)/*.c。如果你的 make 不支持在依赖中使用通配符会看到类似错误Dont know how to make ./*.c解决办法把 Makefile.in 中proto.h-tstamp的依赖改为显式列出所有*.c文件名。该目标的作用是通过 mkproto.awk 从各.c文件提取函数原型生成proto.h。平台专项构建笔记RPM 打包packaging 目录下提供了多个发行版的.spec文件。其中 packaging/lsb/rsync.spec 适用于遵循 Linux Standards BaseLSB的 Linux 系统如 RedHat 系spec 中Version: 3.5.1与当前仓库 version.h 一致构建段执行%configuremake安装段执行make install install-ssl-daemon DESTDIR$RPM_BUILD_ROOTpackaging/lsb/rsync.spec并附带 xinetd 配置与 rsync-ssl 的 stunnel 支持。HP-UXHP-UX 10.10 自带的 bundled C 编译器无法处理 ANSI C。若./configure失败可在 config.log 中看到(Bundled) cc: configure, line 2162: error 1705: Function prototypes are an ANSI feature.解决方法是安装 gcc 或 HP 的 ANSI/C Compiler。Mac OS X部分 Mac OS XDarwin版本虽有 IPv6 协议栈但并未完整实现 New Sockets API。若构建失败可改用./configure --disable-ipv6该选项对应 configure.ac 中的探测逻辑——显式禁用时不定义INET6宏否则通过编译sockaddr_in6测试程序自动判断。另外Apple Silicon 机器的包可能安装在略有不同的位置需要额外指定头文件与库路径CFLAGS-I /opt/homebrew/include LDFLAGS-L /opt/homebrew/libIBM AIXIBM AIX 在 mkstemp 上存在大文件largefile问题参见 IBM PR-51921。解决方法是向生成的config.h末尾追加#ifdef _LARGE_FILES #undef HAVE_SECURE_MKSTEMP #endif小结一份可复制的构建路径把全文要点收敛成一条可直接执行的构建路线定位需求确定是否需要 ACL/xattr/xxhash/zstd/lz4/openssl/libidn2缺哪个就按上文包速查装哪个或准备对应的--disable-*开关git 源码用户先确保 autoconf/automake 与 cmarkgfm 或 commonmark 就绪可用./md-convert --test rsync-ssl.1.md自检也可用./prepare-source fetchgen跳过 manpage 生成配置./configure用--help定制安装路径与特性生产构建不要开--enable-maintainer-mode编译安装make sudo make install验证rsync --version查看实际启用的特性或运行make check调用 runtests.py 执行仓库 testsuite 中的测试。至此你已具备从零构建一个功能完备、性能达标的 rsync 的能力也掌握了缺库时的正确处置方式——不是盲目报错而是理解每个--disable-*开关背后的功能代价。赞分享CLI数据同步网络【免费下载链接】rsyncAn open source utility that provides fast incremental file transfer. It also has useful features for backup and restore operations among many other use cases.项目地址https://gitcode.com/gh_mirrors/rs/rsync点击查看免费下载相关推荐htop 源码构建实战从依赖安装到 Configure 构建选项全解析htop 源码构建实战从依赖安装到 Configure 构建选项全解析 本篇以 htop 项目仓库根目录的 README 为主线系统讲解 htop 这一跨平可观测性指标监控Pillow 从源码构建完全指南外部依赖、构建选项与跨平台实战Pillow 从源码构建完全指南外部依赖、构建选项与跨平台实战 本文是 PillowPython Imaging Library官方《Building f图像处理计算机视觉ChatterBot 安装完全指南pip 安装、可选依赖与源码构建实战ChatterBot 安装完全指南pip 安装、可选依赖与源码构建实战 导读 本文是 ChatterBotPython 机器学习对话引擎的官方安装指南覆人工智能NLP交互助手上一篇SoL-Pi源码解析4大机制如何在不改Pi核心下实现Token效率下一篇Codex-X 供应商品牌标识资源provider-logos说明来源、许可与 CSS Mask 渲染机制创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑