在运维和开发领域,我们经常需要面对“历史遗留系统”的维护工作,CentOS 5 作为曾经非常流行的企业级 Linux 发行版,由于其发布于 2007 年,早已在 2017 年 3 月正式停止了生命周期(EOL)支持,这意味着官方的软件仓库、安全更新以及新软件的包都已不再提供。
对于许多旧版本的 C++ 开发项目,Qt 4 是不可或缺的图形界面开发库,当你试图在一台全新的或重装的 CentOS 5 服务器上通过 yum 安装 Qt 4 时,往往会遇到一个令人头疼的问题:CentOS 5 里面没有 Qt4 安装包。
为什么 CentOS 5 没有 Qt4 安装包?
随着 CentOS 5 的停止维护,官方的 Base、Updates 和 Extras 仓库都已被归档或删除,Qt 4 在 CentOS 5 发布时(约 2007-2009 年)并非默认核心组件,因此官方源中并不包含它,虽然当时可能有第三方仓库(如 RPMforge)提供过,但如今这些第三方仓库也已停止对 CentOS 5 的维护,下载链接往往失效。

解决方案:从源码编译安装
既然官方仓库找不到安装包,最稳妥且通用的方法就是从源码编译安装,虽然这比使用 yum 安装要麻烦一些,但能确保兼容性。
以下是具体的操作步骤:
准备编译环境
你需要安装编译源码所需的工具链,在 CentOS 5 中,gcc 版本较老,建议先升级基础编译器,或者确保系统已有 gcc、make、glibc-devel 等工具。
yum install gcc gcc-c++ make flex bison byacc glibc-devel libstdc++-devel ncurses-devel libX11-devel libXft-devel libXext-devel xorgproto-devel
下载 Qt 4 源码
你需要下载 Qt 4 的源码包,目前最推荐的是 Qt 4.8.7 版本,它是 Qt 4 系列的最后一个长期支持版本,对旧版系统的兼容性最好。
cd /usr/local/src wget http://download.qt.io/archive/qt/4.8/4.8.7/qt-everywhere-opensource-src-4.8.7.tar.gz tar -xzvf qt-everywhere-opensource-src-4.8.7.tar.gz cd qt-everywhere-opensource-src-4.8.7
配置编译选项
进入源码目录后,运行配置脚本,你需要指定安装路径(避免与系统库冲突)并开启所需的组件。
./configure -prefix /usr/local/qt-4.8.7 -opensource -confirm-license -release -nomake examples -nomake demos -fast
-prefix: 指定安装目录。-release: 编译为发布版本,体积更小。-nomake examples/demos: 如果不需要编译示例,可以跳过以加快编译速度。
编译与安装
配置成功后,开始漫长的编译过程,CentOS 5 的 CPU 性能较弱,这可能需要数小时。
make make install
配置环境变量
安装完成后,需要将 Qt 的库路径和可执行文件路径加入系统环境变量。
编辑 /etc/profile.d/qt4.sh(新建文件):
echo 'export PATH=/usr/local/qt-4.8.7/bin:$PATH' > /etc/profile.d/qt4.sh echo 'export LD_LIBRARY_PATH=/usr/local/qt-4.8.7/lib:$LD_LIBRARY_PATH' >> /etc/profile.d/qt4.sh source /etc/profile.d/qt4.sh
替代方案:使用 Docker
如果你不想在 CentOS 5 物理机上折腾编译环境,或者编译过程报错(GLIBC 版本

