首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >virtualbox内的git失败,并显示"Unable to create temporary file '<mountpoint>/<pathToRepo>/.git/objects/pack/tmp_pack_XXXXXX'“

virtualbox内的git失败,并显示"Unable to create temporary file '<mountpoint>/<pathToRepo>/.git/objects/pack/tmp_pack_XXXXXX'“
EN

Stack Overflow用户
提问于 2021-11-07 19:36:45
回答 1查看 48关注 0票数 0

情况描述:我们公司强制使用高度可疑的vpn,超级过时,增强的中间人,这也经常失败。我很快就学会了,但我无法通过路由表/iptables来驯服它。所以我只想在virtualbox中运行它,因为其他形式的进程隔离对我不起作用/不成功。这很奇怪,我知道,但我想安装新的发行版,不想用这个来毒害它。因此,我在主机操作系统中有一些目录,这些目录被共享到虚拟机器中。主机os和virtualbox中的用户具有相同的uid、gid。共享目录使用sudo mount -t vboxsf aaa /tmp/a -o uid=22823,gid=22823挂载。应该没问题。所以我在quest系统上运行git fetch origin,所以我不是在主机上运行命令,而是在从主机共享的数据上运行命令。但是:

代码语言:javascript
复制
git fetch origin 
remote: Enumerating objects: 73, done.
remote: Counting objects: 100% (73/73), done.
remote: Compressing objects: 100% (28/28), done.
fatal: Unable to create temporary file '/tmp/a/projectName/.git/objects/pack/tmp_pack_XXXXXX': Operation not permitted
fatal: index-pack failed

但随后:

代码语言:javascript
复制
touch /tmp/a/projectName/.git/objects/pack/tmp_pack_XXXXXX

在同一用户下没有任何问题,与使用任意编辑器打开/写入文件相同。未设置TMPDIR,无论是在主机还是在来宾操作系统上,设置它都不起作用。

信息本身似乎并不能描述真正的问题。是什么导致了这种行为,我可以检查什么?

EN

回答 1

Stack Overflow用户

发布于 2021-11-07 22:32:00

Git不使用TMPDIR来创建其临时文件,因为它必须在适当的地方以原子方式重命名这些临时文件,而Git可能在同一个文件系统上,也可能不在同一个文件系统上。如果不是,那么使用它将阻止原子重命名的工作。

在这种情况下,通常不会看到EPERM,因为更常见的情况是EACCES,这表示目录中的某个地方出现了权限故障。此错误可能来自VirtualBox共享文件系统。

我的猜测是,它对Git同时传递文件模式0444和O_RDWR的事实感到不满。这是POSIX明确允许的,但是一些NFS实现也有这个问题,尽管它们通常返回EACCES

您可能希望在这里避免使用vboxsf文件系统,而改为使用SSHFS。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69875919

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档