在CentOS系统中,lrzsz是一个非常实用的工具包,它提供了rz和sz两个命令,允许用户在支持Zmodem协议的终端(如Xshell、SecureCRT、Putty等)与远程Linux服务器之间便捷地上传和下载文件,许多用户在尝试安装这个看似简单的工具时,却会遇到各种“安装不了”的困境,本文将系统地剖析这些问题的根源,并提供从基础到高级的完整解决方案。

标准安装流程回顾
在深入探讨问题之前,我们首先回顾一下在CentOS上安装lrzsz的标准流程,根据CentOS版本的不同,所使用的包管理器也有所区别。
对于CentOS 7及更早版本:
系统默认使用yum作为包管理器,安装命令非常直接:sudo yum install lrzsz
对于CentOS 8 Stream及RHEL 8系列:
系统引入了新的包管理器dnf,它取代了yum(尽管yum通常作为dnf的符号链接存在),安装命令为:sudo dnf install lrzsz
如果执行上述命令后,软件能够顺利安装,那么恭喜你,你的系统环境是健康的,但如果返回了错误信息,Could not resolve host”、“Error: Nothing to do”或“Package not found”,那么就需要进入下面的排查环节。
常见问题排查与解决
当yum或dnf无法安装lrzsz时,问题通常不出在lrzsz本身,而是底层的系统环境配置,我们可以按照以下步骤逐一排查。
网络连通性问题
这是最基本也是最常见的问题,包管理器需要从互联网上的软件源仓库下载软件包,如果网络不通,一切免谈。
排查方法:
使用ping或curl命令测试网络连接。# 测试与外网的连通性 ping baidu.com # 测试与软件源的连通性(以CentOS 7官方源为例) curl -I http://mirror.centos.org/centos/7/
如果
ping不通,或curl返回连接超时,说明网络存在故障。解决方案:
- 检查服务器的网络配置,包括IP地址、子网掩码、网关和DNS。
- 确认防火墙(无论是服务器本地的
firewalld/iptables,还是网络层面的硬件防火墙)没有阻止HTTP/HTTPS(80/443端口)的出站连接。 - 如果是在企业内网,可能需要配置HTTP代理。
软件源仓库配置问题
这是导致安装失败的核心原因,尤其对于已经停止维护(EOL, End-of-Life)的CentOS版本。
问题背景:
CentOS 7已于2025年6月30日停止维护(EOL),其官方的软件源镜像地址(mirror.centos.org已被移至归档仓库(vault.centos.org),如果你的系统还在使用旧的源配置,yum将无法找到软件包。
排查方法:
查看仓库配置文件。ls /etc/yum.repos.d/ cat /etc/yum.repos.d/CentOS-Base.repo
如果文件中的
baseurl或mirrorlist仍然指向mirror.centos.org,那么这就是问题所在。解决方案:
需要将仓库地址更新为vault.centos.org,最快捷的方法是使用社区维护的脚本一键更换。# 备份原有的repo文件 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup # 下载新的repo文件(以CentOS 7为例) sudo curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-7.6.1810.repo # 清理缓存并重新生成 sudo yum clean all sudo yum makecache
完成上述操作后,再次执行
sudo yum install lrzsz即可成功安装,对于CentOS 8 Stream,虽然还未EOL,但也可能遇到类似问题,可以参照各大镜像站(如阿里云、清华大学镜像站)提供的CentOS 8 Stream仓库配置教程进行修改。
| 问题现象 | 主要原因 | 解决方案 |
|---|---|---|
Could not resolve host mirror.centos.org | 网络不通或DNS解析失败 | 检查网络配置、DNS设置 |
Error: Nothing to do 或 No package lrzsz available | 软件源仓库配置错误或已EOL | 更换为可用的软件源,如vault.centos.org或国内镜像站 |
[Errno 14] curl#6 - "Could not resolve host..." | 代理配置错误或网络限制 | 检查或取消HTTP代理设置 |
包管理器自身问题
偶尔,yum或dnf的缓存或进程锁也可能导致安装异常。
排查方法:
- 检查是否有其他
yum/dnf进程在运行。ps aux | grep yum
- 清理缓存。
sudo yum clean all
- 检查是否有其他
解决方案:
- 如果发现有残留进程,可以将其终止。
sudo kill -9 <PID>
- 清理缓存后,再次尝试安装。
- 如果发现有残留进程,可以将其终止。
终极解决方案:从源码编译安装
如果以上所有方法都无效,或者你处于一个无法访问外部网络的高度隔离环境中,那么从源码编译安装是最后的“杀手锏”。
安装编译环境:
sudo yum groupinstall "Development Tools" sudo yum install zlib-devel
下载源码包:
lrzsz的官方源码托管在SourceForge上,你可以通过wget下载(如果网络允许),或者在其他电脑下载后通过rz(如果已安装)或其他方式上传到服务器。wget https://ohse.de/uwe/releases/lrzsz-0.12.20.tar.gz
解压、配置、编译和安装:

tar -xvf lrzsz-0.12.20.tar.gz cd lrzsz-0.12.20 ./configure --prefix=/usr/local/lrzsz make sudo make install
这里我们将软件安装到了
/usr/local/lrzsz目录下,以避免与系统自带的软件包冲突。创建软链接(可选但推荐):
为了能在任何地方直接使用rz和sz命令,可以创建软链接到系统PATH目录。sudo ln -s /usr/local/lrzsz/bin/rz /usr/bin/rz sudo ln -s /usr/local/lrzsz/bin/sz /usr/bin/sz
验证安装:
which rz which sz
如果能正确返回路径,说明安装成功。
相关问答FAQs
Q1:我已经成功安装了lrzsz,但在终端输入rz命令后,系统提示“command not found”,这是为什么?
A1:这个问题通常有两个原因,第一,也是最常见的原因是,你通过源码编译安装时指定了安装目录(如/usr/local/lrzsz),但该目录没有被添加到系统的PATH环境变量中,系统找不到可执行文件,解决方法是按照上文所述,手动创建软链接到/usr/bin等PATH包含的目录,或者将安装目录的bin子目录添加到PATH中(修改~/.bashrc或/etc/profile文件),第二,对于某些极简化的容器或系统,可能/usr/bin不在默认PATH中,可以通过echo $PATH命令检查。
Q2:除了使用lrzsz,还有没有其他更现代或更安全的在SSH会话中传输文件的方式?
A2:当然有。lrzsz的优势在于其交互式的便捷性,但在自动化脚本和更广泛的场景中,有更优的选择。
- SCP(Secure Copy): 基于SSH协议,用于在网络上的主机之间安全地复制文件,命令简单,如
scp local_file user@remote_host:/remote/path。 - SFTP(SSH File Transfer Protocol): 同样基于SSH,提供了一个交互式的文件传输会话,类似于传统的FTP,但所有数据都是加密的,输入
sftp user@remote_host即可进入。 - Rsync: 一个功能强大的文件同步工具,它不仅能传输文件,还能智能地只传输有差异的部分,非常适合备份和镜像,它同样可以通过SSH通道进行加密传输。
这些方法都比lrzsz更通用,更适合脚本化和自动化,并且是所有现代Linux发行版的标准配置,选择哪种方式取决于你的具体需求:快速交互式上传下载用lrzsz,脚本化或单次传输用scp/sftp,高效同步用rsync。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复