Linux(Ubuntu20.04)下Yarn3.2.0因/tmp noexec报错,如何合规解决?
解决Yarn 3.2.0在/tmp挂载noexec时的Link权限问题
方案1:指定Yarn使用自定义临时目录
Yarn支持通过环境变量指定临时目录,你可以创建一个不带noexec标志的专用临时目录,让Yarn切换到该目录操作:
- 创建目录并配置权限(以
/var/tmp/yarn-tmp为例):sudo mkdir -p /var/tmp/yarn-tmp sudo chown $USER:$USER /var/tmp/yarn-tmp chmod 700 /var/tmp/yarn-tmp - 临时生效:执行安装前设置环境变量
TMPDIR=/var/tmp/yarn-tmp yarn install - 长期生效:将环境变量写入shell配置文件(比如
~/.bashrc或~/.zshrc)echo 'export TMPDIR=/var/tmp/yarn-tmp' >> ~/.bashrc source ~/.bashrc
方案2:单独为node-gyp指定临时目录
由于报错核心涉及node-gyp模块,也可以单独为它配置临时目录,不影响Yarn其他逻辑:
- 先创建专用目录并配置权限(以
/var/tmp/node-gyp-tmp为例) - 临时生效:执行安装时指定node-gyp的临时目录
npm_config_tmp=/var/tmp/node-gyp-tmp yarn install - 长期生效:将变量写入shell配置文件
echo 'export npm_config_tmp=/var/tmp/node-gyp-tmp' >> ~/.bashrc source ~/.bashrc
方案3:临时挂载带exec权限的tmpfs
如果不需要持久化目录,可以临时挂载一个带exec权限的临时文件系统供Yarn使用:
sudo mkdir -p /var/tmp/yarn-exec-tmp sudo mount -t tmpfs -o exec,size=2G tmpfs /var/tmp/yarn-exec-tmp sudo chown $USER:$USER /var/tmp/yarn-exec-tmp
执行安装时指定该目录:
TMPDIR=/var/tmp/yarn-exec-tmp yarn install
安装完成后可卸载该临时文件系统:
sudo umount /var/tmp/yarn-exec-tmp
以上方案均无需修改/tmp的挂载参数,能保留服务器的安全最佳实践。
内容的提问来源于stack exchange,提问作者Andy Lorenz
相关产品推荐
相关产品推荐

