You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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文件
  • 若找不到对应补丁,可先跳过非核心补丁完成编译,再验证功能缺失情况

编译步骤

  1. 进入源码目录:cd rsync-3.2.6
  2. 应用补丁:patch -p1 < /path/to/fileflags.diff(替换为实际补丁路径)
  3. 执行准备脚本:./prepare-source(出现make: Nothing to be done for 'conf'.属正常,见问题6)
  4. 配置全功能编译选项:
    ./configure --prefix=/usr/local \
      --enable-acl-support \
      --enable-xattr-support \
      --enable-xxhash \
      --with-openssl
    
  5. 编译:make
  6. 安装:sudo make install

2. 全功能依赖库的编译安装

核心依赖说明

  • ACL/Xattr:MacOS系统自带相关支持,安装Xcode CLI后即可获取开发头文件,无需额外安装
  • xxhash:用于快速文件校验,需手动安装:
    1. 下载xxhash最新源码并解压
    2. 编译:make
    3. 安装: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

手动编译安装的依赖

  1. 下载对应库的最新源码包
  2. 进入源码目录执行make clean清除旧编译文件
  3. 重新编译:make
  4. 覆盖安装: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 04:55:24