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

sudo与普通用户执行mvn --version版本不一致,删除旧版失败求助

解决普通用户与sudo下Maven版本不一致的问题

问题现象

  • 普通用户执行mvn --version,显示版本为3.8.6,Maven安装路径为/opt/maven
    rohail@rohail-machine:/media/rohail/hard hdd1/http-request-plugin-master$ mvn --version
    Apache Maven 3.8.6 (84538c9988a25aec085021c365c560670ad80f63)
    Maven home: /opt/maven
    Java version: 11.0.16, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
    Default locale: en_US, platform encoding: UTF-8
    OS name: "linux", version: "5.15.0-48-generic", arch: "amd64", family: "UNIX"
    
  • 执行sudo mvn --version,显示版本为3.6.3,Maven安装路径为/usr/share/maven
    rohail@rohail-machine:/media/rohail/hard hdd1/http-request-plugin-master$ sudo mvn --version
    [sudo] password for rohail: 
    Apache Maven 3.6.3
    Maven home: /usr/share/maven
    Java version: 11.0.16, vendor: Ubuntu, runtime: /usr/lib/jvm/java-11-openjdk-amd64
    Default locale: en_US, platform encoding: UTF-8
    OS name: "linux", version: "5.15.0-48-generic", arch: "amd64", family: "UNIX"
    

解决方案

1. 让sudo优先使用新版Maven

sudo默认会重置PATH到系统定义的secure_path,普通用户的PATH配置不会生效。可通过修改secure_path让sudo识别新版Maven:

  • 编辑sudo配置文件:执行sudo visudo
  • 找到Defaults secure_path一行,将/opt/maven/bin添加到路径最前面,示例:
    Defaults        secure_path="/opt/maven/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
    
  • 保存退出后,再次执行sudo mvn --version,即可看到版本变为3.8.6

2. 移除旧版Maven(可选)

如果确认不再需要3.6.3版本,可按以下步骤卸载:

  • 先确认旧版是否通过apt安装:执行dpkg -l | grep maven,若输出包含maven包,执行:
    sudo apt remove --purge maven
    
  • 若卸载失败或旧版是手动安装的,可手动删除旧版目录(谨慎操作,确认目录仅含旧版Maven文件):
    sudo rm -rf /usr/share/maven
    

注意事项

  • 确保新版Maven目录权限正确,普通用户和root均可访问:sudo chmod -R 755 /opt/maven
  • 不要直接修改root用户的.bashrc,通过secure_path配置sudo的PATH是更规范的方式

内容的提问来源于stack exchange,提问作者Rohail Iqbal

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 11:00:55