sudo与普通用户执行mvn --version版本不一致,删除旧版失败求助
解决普通用户与sudo下Maven版本不一致的问题
问题现象
- 普通用户执行
mvn --version,显示版本为3.8.6,Maven安装路径为/opt/mavenrohail@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/mavenrohail@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
相关产品推荐
相关产品推荐

