Ubuntu Docker镜像安装YouCompleteMe vim插件报root权限错误如何解决
报错原因
Docker构建过程里所有RUN命令默认都是用root身份执行的,而YouCompleteMe的安装脚本本身加了root运行拦截,禁止直接用root身份安装,主要是为了避免安装后文件权限错配,导致后续普通用户使用时读不了插件文件、写不了运行缓存,因此检测到root身份就会直接抛错退出。
解决方案
根据你镜像日常运行的用户身份二选一即可:
方案1(容器默认用root运行,改动量最小)
给安装命令加上官方提供的跳过root检查参数,把原来最后一行安装命令替换为以下内容即可:RUN python3 ~/.vim/bundle/YouCompleteMe/install.py --skip-build-root-check这个参数是官方专门为容器构建、root环境部署场景预留的,安装后不会影响插件正常功能。如果后续需要在容器内切换普通用户使用Vim,安装完成后执行一次
chown -R 你的普通用户名:你的普通用户名 ~/.vim修正.vim目录的权限即可。方案2(容器日常用普通用户运行,更符合脚本设计逻辑)
系统依赖安装完成后先创建普通用户,切换到该用户身份后再执行Vim配置、拉取YCM代码、安装插件的全流程,就不会触发root权限检测,配置调整参考如下:# 安装完build-essential、cmake、python3-dev这些依赖后,新增以下行创建普通用户 RUN useradd -m -s /bin/bash devuser # 切换到普通用户身份,后续所有操作都以该用户身份执行 USER devuser # 原配置里创建.vim目录、部署pathogen、写入.vimrc配置、克隆YCM仓库、更新子模块、执行install.py安装的步骤,全部挪到USER指令之后即可,原有写法不用改动,执行时不会触发权限报错
内容的提问来源于stack exchange,提问作者OrenIshShalom
相关产品推荐
相关产品推荐

