MacOS(非Brew)编译安装rsync及相关技术问题咨询
在MacOS Big Sur 11.7编译全功能rsync的问题解答
1. 编译rsync 3.2.6的准备工作、正确补丁及步骤
准备工作
- 安装Xcode命令行工具:执行
xcode-select --install,按提示完成安装 - 确保基础编译工具可用:
make、gcc已随Xcode CLI自带 - 下载rsync 3.2.6源码:从官方镜像获取压缩包后解压到本地目录
补丁说明
原脚本中的crtimes.diff、hfs-compression.diff可能已被整合到rsync 3.2.6的官方分支,或需使用社区维护的适配补丁:
- 针对Mac文件标志的
fileflags.diff:可从rsync官方的Mac补丁仓库获取适配3.2.6的版本,或直接提取Homebrew中rsync对应的diff文件 - 若找不到对应补丁,可先跳过非核心补丁完成编译,再验证功能缺失情况
编译步骤
- 进入源码目录:
cd rsync-3.2.6 - 应用补丁:
patch -p1 < /path/to/fileflags.diff(替换为实际补丁路径) - 执行准备脚本:
./prepare-source(出现make: Nothing to be done for 'conf'.属正常,见问题6) - 配置全功能编译选项:
./configure --prefix=/usr/local \ --enable-acl-support \ --enable-xattr-support \ --enable-xxhash \ --with-openssl - 编译:
make - 安装:
sudo make install
2. 全功能依赖库的编译安装
核心依赖说明
- ACL/Xattr:MacOS系统自带相关支持,安装Xcode CLI后即可获取开发头文件,无需额外安装
- xxhash:用于快速文件校验,需手动安装:
- 下载xxhash最新源码并解压
- 编译:
make - 安装:
sudo make install PREFIX=/usr/local
- OpenSSL:若需加密传输支持,通过Homebrew安装:
brew install openssl,配置rsync时指定路径:./configure --with-openssl=/usr/local/opt/openssl
依赖验证
执行./configure后,检查输出中的功能支持项,确保ACL support、Xattr support、xxhash均显示为yes
3. 双选项安装bash脚本示例
#!/bin/bash # 配置参数 RSYNC_VERSION="3.2.6" RSYNC_URL="https://download.samba.org/pub/rsync/src/rsync-${RSYNC_VERSION}.tar.gz" PATCH_FILE="/path/to/fileflags.diff" # 替换为实际补丁路径 PREFIX="/usr/local" # 显示安装选项 echo "请选择安装模式:" echo "1. 基础版(仅编译安装rsync,不处理依赖)" echo "2. 完整版(安装所有依赖后编译全功能rsync)" read -p "输入选项序号:" OPTION # 基础版安装流程 if [ "$OPTION" = "1" ]; then echo "开始安装基础版rsync..." # 下载解压源码 curl -O "$RSYNC_URL" tar -xzf "rsync-${RSYNC_VERSION}.tar.gz" cd "rsync-${RSYNC_VERSION}" # 应用补丁(若存在) [ -f "$PATCH_FILE" ] && patch -p1 < "$PATCH_FILE" # 配置编译安装 ./prepare-source ./configure --prefix="$PREFIX" make sudo make install echo "基础版rsync安装完成" fi # 完整版安装流程 if [ "$OPTION" = "2" ]; then echo "开始安装完整版rsync..." # 安装xxhash echo "安装xxhash..." curl -O "https://github.com/Cyan4973/xxhash/archive/refs/tags/v0.8.2.tar.gz" tar -xzf "v0.8.2.tar.gz" cd "xxhash-0.8.2" make sudo make install PREFIX="$PREFIX" cd .. # 安装OpenSSL echo "安装OpenSSL..." brew install openssl # 编译安装rsync curl -O "$RSYNC_URL" tar -xzf "rsync-${RSYNC_VERSION}.tar.gz" cd "rsync-${RSYNC_VERSION}" [ -f "$PATCH_FILE" ] && patch -p1 < "$PATCH_FILE" ./prepare-source ./configure --prefix="$PREFIX" \ --enable-acl-support \ --enable-xattr-support \ --enable-xxhash \ --with-openssl=/usr/local/opt/openssl make sudo make install echo "完整版rsync安装完成" fi
使用说明
- 替换
PATCH_FILE为实际补丁路径 - 赋予脚本执行权限:
chmod +x install_rsync.sh - 运行脚本:
./install_rsync.sh
4. awk系列工具的安装与区别
安装方法
- 系统默认awk:MacOS自带BSD awk(属于nawk分支),直接输入
awk即可调用 - gawk(GNU awk):功能最丰富,支持扩展语法,通过Homebrew安装:
brew install gawk,调用时用gawk或配置环境变量后用awk - mawk:轻量高速,适合大文件处理,安装:
brew install mawk,调用时用mawk - nawk:新awk,BSD awk的前身,系统自带,若需单独安装:
brew install nawk
核心区别
- 原始awk:最老旧版本,功能有限,已淘汰
- nawk:引入正则、变量等现代特性,是BSD awk的基础
- gawk:GNU版本,支持更多内置函数、扩展语法、调试功能,兼容性最佳
- mawk:专注性能,内存占用低,大文本处理速度快,但功能较少,不支持部分gawk扩展
5. 过时依赖库的更新方法
Homebrew安装的依赖
- 更新单个库:
brew upgrade [库名](如brew upgrade xxhash) - 更新所有过时库:
brew upgrade
手动编译安装的依赖
- 下载对应库的最新源码包
- 进入源码目录执行
make clean清除旧编译文件 - 重新编译:
make - 覆盖安装:
sudo make install PREFIX=/usr/local(确保与旧版本安装路径一致)
注意事项
- 更新后用
[库名] --version验证版本 - 若遇冲突,先卸载旧版本:
sudo make uninstall(部分库支持),再安装新版本
6. ./prepare-source提示make: Nothing to be done for 'conf'.是否正常?
这是正常现象。prepare-source会调用make conf生成配置文件,当configure、Makefile.in等配置文件已是最新状态时,make就会输出该提示,说明无需重新生成配置,可继续执行后续步骤。
内容的提问来源于stack exchange,提问作者Brunck
相关产品推荐
相关产品推荐

