为啥 Serverless 在尝试打包或部署时会产生 Invalid Cross-device link Error?

Posted

技术标签:

【中文标题】为啥 Serverless 在尝试打包或部署时会产生 Invalid Cross-device link Error?【英文标题】:Why does Serverless produce an Invalid Cross-device link Error when trying to package or deploy?为什么 Serverless 在尝试打包或部署时会产生 Invalid Cross-device link Error? 【发布时间】:2021-01-10 21:05:12 【问题描述】:

运行任一命令时: sudo serverless package or sudo serverless deploy

我得到以下回溯:

错误:错误:异常:回溯(最后一次调用):文件 “/var/lang/lib/python3.6/shutil.py”,第 550 行,在 move os.rename(src, real_dst) OSError: [Errno 18] 无效的跨设备链接: '/tmp/pip-target-wqc5grcw/lib/python/setuptools' -> ‘/var/task/setuptools’

在处理上述异常的过程中,又发生了一个异常:

Traceback(最近一次调用最后一次):文件 “/var/lang/lib/python3.6/site-packages/pip/_internal/cli/base_command.py”, 第 228 行,在 _main status = self.run(options, args) 文件中 “/var/lang/lib/python3.6/site-packages/pip/_internal/cli/req_command.py”, 第 182 行,在包装器中返回 func(self, options, args) 文件 “/var/lang/lib/python3.6/site-packages/pip/_internal/commands/install.py”, 第 456 行,在运行 options.target_dir、target_temp_dir、options.upgrade 文件 “/var/lang/lib/python3.6/site-packages/pip/_internal/commands/install.py”, 第 514 行,在 _handle_target_dir target_item_dir 文件中 “/var/lang/lib/python3.6/shutil.py”,第 561 行,在 move symlinks=True 中) 文件“/var/lang/lib/python3.6/shutil.py”,第 321 行,在 copytree os.makedirs(dst) 文件“/var/lang/lib/python3.6/os.py”,第 220 行,在 makedirs mkdir(name, mode) PermissionError: [Errno 13] Permission 拒绝:'/var/task/setuptools'

我创建了几个不同的项目,它们在本地工作,但在尝试部署或打包时,它们永远不会超出这个无效的交叉链接设备错误。

我有什么选择?

【问题讨论】:

【参考方案1】:

编辑:我尝试对我的 virtualenv 进行 nuking,卸载/重新安装 serverless-python-requirements,删除/重新拉取 lambci/lambda Docker 映像,没有骰子。

然后,我偶然发现了这个GH issue。正如它所暗示的,实验性的 Docker 功能使用 gRPC FUSE 进行文件共享似乎是原因。我现在已经在 Docker Preferences 中将其关闭,并且部署成功。

【讨论】:

在 docker 容器中运行 pip install 时遇到问题。在 Docker 首选项中禁用 se gRPC FUSE 解决了我的问题。 gRPC fuse 也是我的问题,谢谢! 谢谢,我在运行 sls deploy 时遇到了这个错误,禁用“使用 gRPC FUSE 进行文件共享”为我解决了这个问题。【参考方案2】:

我刚刚遇到了类似的问题。请参阅this issue 了解可能的解决方案。

总之,

    删除 /Library/Caches/serverless-python-requirements/ 中的所有缓存包 移除现有的 docker 镜像 lambci/lambda build-python3.8

【讨论】:

以上是关于为啥 Serverless 在尝试打包或部署时会产生 Invalid Cross-device link Error?的主要内容,如果未能解决你的问题,请参考以下文章

为啥在 Tornado 服务器 Post 方法中创建线程会产生运行时错误?

为啥“git clone”在传递本地 file:/// url 时会打包对象数据库?

Webpack+Serverless解决node_modules太大的问题

JAVA使用阿里云Serverless 函数计算将OSS文件打包成Zip批量下载

JAVA使用阿里云Serverless 函数计算将OSS文件打包成Zip批量下载

JAVA使用阿里云Serverless 函数计算将OSS文件打包成Zip批量下载