CentOS7已安装luarocks但sudo luarocks命令找不到求助
解决CentOS7下luarocks安装luacheck的权限与命令找不到问题
我来帮你搞定这个头疼的问题~咱们一步步来分析和解决:
问题原因拆解
- 直接执行
luarocks install luacheck报错,是因为普通用户没有系统目录/usr/local/lib/luarocks/rocks的写入权限,没法把luacheck装到系统级路径里 - 用
sudo luarocks又提示命令找不到,是因为CentOS的sudo默认会重置环境变量,使用secure_path定义的路径列表,如果/usr/bin(你luarocks的所在路径)不在这个列表里,sudo就找不到luarocks命令
三种解决方法(按推荐程度排序)
方法一:用--local选项安装到用户目录(推荐,无需sudo)
这个方法不需要管理员权限,所有文件都装在你当前用户的home目录下,不会影响系统其他用户:
- 执行安装命令:
luarocks install luacheck --local
- 配置PATH环境变量,让系统能找到luacheck:
编辑你的~/.bashrc文件,添加一行:
export PATH="$HOME/.luarocks/bin:$PATH"
- 让配置立即生效:
source ~/.bashrc
之后你直接输入luacheck就能正常使用啦~
方法二:用绝对路径执行sudo luarocks
既然sudo找不到luarocks,那咱们直接告诉它luarocks的准确位置就行:
sudo /usr/bin/luarocks install luacheck
这个命令会把luacheck装到系统级路径,所有用户都能直接使用,不需要额外配置PATH。
方法三:修复sudo的secure_path配置
如果你想以后用sudo luarocks都能直接生效,可以修改sudo的环境变量配置(操作要小心哦):
- 执行命令打开sudoers配置文件(必须用visudo,不能直接编辑,防止语法错误导致sudo失效):
sudo visudo
- 找到
Defaults secure_path这一行,确保里面包含/usr/bin,修改后大概是这样:
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
- 按
Ctrl+O保存,Ctrl+X退出编辑器 - 现在再执行
sudo luarocks install luacheck就没问题啦
内容的提问来源于stack exchange,提问作者tangke
相关产品推荐
相关产品推荐

