前言:本文操作是在 CentOS-7 下执行的,不确定在其他 Linux 发布版是否能同样正常执行。

1、检查前置依赖组件

在安装 rsync 之前,需要确认已安装了相关依赖组件: gcc 、openssl-devel 、xxhash 、zstd 、lz4 。

rpm -qa | grep gcc
rpm -qa | grep openssl-devel
which xxhsum
which zstd
which lz4

相关前置依赖组件的具体离线安装方法请参考:

2、查询rsync当前版本号

rsync --version

3、下载新版本安装包

官网下载地址:https://rsync.samba.org/

本示例安装包的直接下载地址为:https://download.samba.org/pub/rsync/src/rsync-3.4.1.tar.gz

4、上传安装包到服务器

5、解压rsync安装包

tar -zxvf 新版本安装包名称

6、配置rsync

cd 新版本安装包解压目录
./configure

注意:如果没有先安装第一节提到的相关前置依赖组件,那么在配置 rsync 时可能会失败:





Configure found the following issues:



- Failed to find openssl/md4.h and openssl/md5.h for openssl crypto lib support.

- Failed to find xxhash.h for xxhash checksum support.

- Failed to find zstd.h for zstd compression support.

- Failed to find lz4.h for lz4 compression support.



See the INSTALL file for hints on how to install the missing libraries and/or

how to generate (or fetch) manpages:

https://github.com/RsyncProject/rsync/blob/master/INSTALL.md



To disable one or more features, the relevant configure options are:

--disable-openssl

--disable-xxhash

--disable-zstd

--disable-lz4



configure.sh: error: Aborting configure run

7、修改rsync类型字节数

vi config.status

经过配置后,在 config.status 文件中,上述 rsync 类型字节数的值可能为 0 ,需要修改为合适的值(见上图)。

D["SIZEOF_INT"]=" 4"
D["SIZEOF_LONG"]=" 8"
D["SIZEOF_LONG_LONG"]=" 8"
D["SIZEOF_SHORT"]=" 2"
D["SIZEOF_INT16_T"]=" 2"
D["SIZEOF_UINT16_T"]=" 2"
D["SIZEOF_INT32_T"]=" 4"
D["SIZEOF_UINT32_T"]=" 4"
D["SIZEOF_INT64_T"]=" 8"
D["SIZEOF_OFF_T"]=" 8"
D["SIZEOF_OFF64_T"]=" 8"
D["SIZEOF_TIME_T"]=" 8"
D["SIZEOF_CHARP"]=" 8"

8、编译rsync

make

注意:如果没有执行第七节的修改 rsync 类型字节数操作,那么在编译 rsync 时可能会失败:



gawk -f ./daemon-parm.awk ./daemon-parm.txt

gawk -f ./mkproto.awk ./*.c ./lib/compat.c daemon-parm.h

In file included from ./rounding.c:20:0:

./rsync.h:614:3: 错误:#error Could not find a 32-bit integer variable

# error Could not find a 32-bit integer variable

^

./rsync.h:683:2: 错误:未知的类型名‘int32’

int32 size, entries;

^

./rsync.h:684:9: 错误:expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘attribute’ before ‘node_size’

uint32 node_size;

^

./rsync.h:690:2: 错误:未知的类型名‘int32’

int32 key;

^

./rsync.h:774:3: 错误:#error Character pointers are not 4 or 8 bytes.

# error Character pointers are not 4 or 8 bytes.

^

./rsync.h:787:2: 错误:未知的类型名‘int32’

int32 num;

.........................

.........................

^

./proto.h:316:28: 错误:未知的类型名‘int32’

void see_token(char *data, int32 toklen);

^

./proto.h:369:8: 错误:expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘attribute’ before ‘fuzzy_distance’

uint32 fuzzy_distance(const char *s1, unsigned len1, const char *s2, unsigned len2, uint32 upperlimit);

^

./rounding.c: 在函数‘main’中:

./rounding.c:35:13: 警告:变量‘test_array’被设定但未被使用 [-Wunused-but-set-variable]

static int test_array[1 - 2 * (ACTUAL_SIZE != EXPECTED_SIZE)];

^

Failed to create rounding.h!

make: *** [rounding.h] 错误 1

9、安装rsync

make install

10、查询rsync升级后的版本号

rsync --version

提示:完成升级后,新版本号需要退出重新登录访问才能查询到,否则查到的是旧版本号。

本文参考

【1】【Rsync缓冲区溢出与信息泄露漏洞(CVE-2024-12084/CVE-2024-12085)通告】【绿盟科技】【2025-01-16】

【2】【Rsync 缓冲区溢出漏洞(CVE-2024-12084)】【启明星辰】【2025-01-17】

【3】【liuxiao】【64位centos上rsync源码编译时报错未知类型int32】【CSDN】【2022-01-22】

【4】【qqliuxiaoran】【build fail on ky10 arm】【github】【2023-02-10】

【5】【CentOS 升级RSync:轻松实现版本升级,解锁数据同步新效能!】【云原生实践】【2025-01-21】

【6】【men_nang】【rsync 版本升级】【CSDN】【2025-01-24】

【7】【JesJiang】【rsync离线安装】【CSDN】【2020-04-15】

Linux 离线升级 RSYNC的更多相关文章

  1. []Linux 离线升级Openssh与Openssl版本

    https://blog.csdn.net/qq_45728838/article/details/120825845 离线的意思是为Linux无法链接网络,只能通过windows 将文件上传一.首先 ...

  2. Linux CentOS 8系统离线升级内核版本

    Linux CentOS 8系统离线升级内核版本 搬运如下文章,十分感谢 https://blog.csdn.net/WQwinter/article/details/127231086 二.升级步骤 ...

  3. centos7 离线升级/在线升级操作系统内核

    目录 一.前言 二.系统环境 三.系统内核下载网址 四.centos7离线升级系统内核 1.先查看系统环境 2.离线升级系统内核 五.在线升级系统内核 一.前言 CentOS(Community EN ...

  4. linux 内核升级

    LINUX 内核升级 linux 内核官网 https://www.kernel.org/ POST BIOS(boot sequence) 所选择的启动设备次序的MBR中是否有引导程序, ----& ...

  5. linux内核升级图文攻略(转)

    一.Linux内核概览Linux是一个一体化内核(monolithic kernel)系统.设备驱动程序可以完全访问硬件.Linux内的设备驱动程序可以方便地以模块化(modularize)的形式设置 ...

  6. Android Studio下载及离线升级方法

    由于众所周知的原因,android官网无法访问,所以我们要用到翻.墙.工具,我用的是自.由.门,大家自行搜索下载. android studio下载地址: https://dl.google.com/ ...

  7. ubuntu Linux离线安装软件包

    ubuntu Linux离线安装软件包 http://www.myir-tech.com/bbs/thread-337-1-1.html(出处: 米尔科技论坛) 方法一 在可上网的ubuntu电脑上, ...

  8. linux内核升级图文攻略

    Linux内核概览 Linux是一个一体化内核(monolithic kernel)系统. 设备驱动程序可以完全访问硬件. Linux内的设备驱动程序可以方便地以模块化(modularize)的形式设 ...

  9. Linux安装/升级pip

    Linux安装/升级pip 1.执行脚本 # wget https://bootstrap.pypa.io/get-pip.py # 如果没有 wget,先安装 wget # yum -y insta ...

  10. linux 内核升级2 转

    linux内核升级 一.Linux内核概览 Linux是一个一体化内核(monolithic kernel)系统. 设备驱动程序可以完全访问硬件. Linux内的设备驱动程序可以方便地以模块化(mod ...

随机推荐

  1. uwp 多语言和本地化

    1. 在项目根目录创建Strings文件夹,再Strings文件夹创建需要的语言名子目录,再添加资源文件Resources.resw,目录构如: Strings\en-US\Resources.res ...

  2. ClickHouse-2接口

    客户端 ClickHouse提供了两个网络接口(两个都可以选择包装在TLS中以增加安全性): HTTP, 包含文档,易于使用. Native TCP,简单,方便使用. 在大多数情况下,建议使用适当的工 ...

  3. 从单体架构、到SOA、再到微服务的架构设计详解

    本文涉及的内容以及知识点如下: 1.单体架构 2.单体架构的拆分 3.SOA与微服务的区别 4.微服务的优缺点 5.微服务的消息 6.服务集成 7.数据的去中心化 单体架构 Web应用程序发展的早期, ...

  4. 学Shiro完结版-2

    第四章 INI配置--<跟我学Shiro> 之前章节我们已经接触过一些INI配置规则了,如果大家使用过如Spring之类的IoC/DI容器的话,Shiro提供的INI配置也是非常类似的,即 ...

  5. 使用 pdf.js 通过文件流方式加载pdf文件

    关于Pdf.js的基础知识,请参考我的博客  使用 pdf.js 在网页中加载 pdf 文件 使用 pdf.js 跨域问题的处理方法 上面两篇博客中介绍的内容都是基于直接加载远程服务器中静态PDF文件 ...

  6. G1原理—10.如何优化G1中的FGC

    大纲 1.G1的FGC可以优化的点 2.一个bug导致的FGC(Kafka发送重试 + subList导致List越来越大) 3.为什么G1的FGC比ParNew + CMS要更严重 4.FGC的一些 ...

  7. 搭建 VuePress 站点必做的 10 个优化

    前言 在 <一篇带你用 VuePress + Github Pages 搭建博客>中,我们使用 VuePress 搭建了一个博客,最终的效果查看:TypeScript 中文文档. 在搭建这 ...

  8. 从源码解析golang Timer定时器体系的来龙去脉

    大家好,我是思无邪,某go中厂开发工程师,也是OSPP2024的学生参与者! 如果你觉得我的文章有帮助,记得三连支持一下哦! 目前正在深入研究源码,与你们一起进步,共同攻克编程难关! 欢迎关注我的公众 ...

  9. delphi中实现http请求和提交

    在对接本地的一个药械监管系统使用实现的代码,编译环境delphi Xe7 ,使用类TIdHTTP实现网络的get请求和post提交 //设置组件的属性 procedure TfrmMain.SetHt ...

  10. 第一届启航杯网络安全大赛部分wp

    第一届启航杯 WEB Easy include <?php error_reporting(0); //flag in flag.php $file=$_GET['fil e']; if(iss ...