如何在Linux中卸载指定版本LLVM与CLANG且不影响其他已装版本
多版本共存环境下单独卸载LLVM/Clang 6.0的操作指南
核心操作原则
整个操作的核心是全程精准定位6.0版本对应的独立安装资源,绝对不能调用无版本指定的通用卸载命令,避免连带触发包管理器或文件系统对3.8、5.0版本资源的误删。
根据企业Unix节点上LLVM/Clang的常见安装形态,分两类场景匹配对应操作流程。
场景1:通过系统包管理器安装的分版本独立包
这类是企业节点最常见的部署形态——各LLVM/Clang版本由官方或第三方源发布独立命名的分版本包,包名携带明确的版本号后缀,安装后各版本的可执行文件、库文件存放在独立目录下,无交叉覆盖。
Debian/Ubuntu 系(apt 包管理器)
- 第一步先查询6.0版本对应的已安装包清单,确认匹配范围:
执行命令:dpkg --list | grep -E "(llvm|clang)-6.0" - 执行精确版本卸载,指定所有6.0后缀的LLVM、Clang关联包:
执行命令:sudo apt remove --purge llvm-6.0 llvm-6.0-* clang-6.0 clang-6.0-* - 风险提示:禁止执行
apt remove llvm、apt remove clang这类无版本号的卸载命令,这类命令会触发包管理器移除所有关联统一元包的版本依赖,连带破坏3.8、5.0版本的软链接与公共配置。
RHEL/CentOS 系(yum/dnf 包管理器)
- 第一步先查询6.0版本对应的已安装包清单:
执行命令:rpm -qa | grep -E "(llvm|clang).*6.0" - 执行精确版本卸载,匹配所有6.0版本对应的包文件:
执行命令:sudo dnf remove 'llvm-6.0*' 'clang-6.0*' - 同样禁止执行无版本号的通用
dnf remove llvm类命令,避免误删其他版本关联的元配置。
场景2:源码编译安装的独立路径部署
这类部署形态下,各LLVM/Clang版本会被编译安装到完全独立的根目录下(典型路径如/opt/llvm-3.8、/opt/llvm-5.0、/opt/llvm-6.0),所有可执行文件、库文件、头文件都存在于独立目录内,不会交叉写入系统公共路径。
操作步骤:
- 先定位6.0版本的实际安装根路径,通过执行对应版本的可执行文件查询路径:
执行命令:which clang-6.0、which llvm-config-6.0,从返回结果中提取完整的安装前缀 - 直接删除6.0版本对应的独立安装目录,比如路径为
/opt/llvm-6.0时,执行:sudo rm -rf /opt/llvm-6.0 - 手动清理指向该6.0目录的孤立软链接:遍历
/usr/local/bin、/usr/bin目录下的软链接,删除所有指向/opt/llvm-6.0路径的失效链接,全程不要改动指向其他版本路径的软链接。
卸载后的完整性校验
操作完成后必须执行以下校验,确认未影响其他版本正常使用:
- 逐版本验证可执行文件可用性:分别执行
llvm-config-3.8 --version、llvm-config-5.0 --version、clang-3.8 --version、clang-5.0 --version,确认命令能正常返回对应版本号,无命令缺失报错 - 检查核心资源完整性:确认
/usr/lib/llvm-3.8、/usr/lib/llvm-5.0目录下的动态库、头文件无异常删除 - 清理环境变量残留:检查全局或用户级的环境变量配置文件(如
/etc/profile、用户家目录下的.bashrc),删除其中指向LLVM 6.0路径的PATH、LD_LIBRARY_PATH配置条目,保留其他版本对应的配置内容。
内容的提问来源于stack exchange,提问作者Aayush
相关产品推荐
相关产品推荐

