情况描述:我们公司强制使用高度可疑的vpn,超级过时,增强的中间人,这也经常失败。我很快就学会了,但我无法通过路由表/iptables来驯服它。所以我只想在virtualbox中运行它,因为其他形式的进程隔离对我不起作用/不成功。这很奇怪,我知道,但我想安装新的发行版,不想用这个来毒害它。因此,我在主机操作系统中有一些目录,这些目录被共享到虚拟机器中。主机os和virtualbox中的用户具有相同的uid、gid。共享目录使用sudo mount -t vboxsf aaa /tmp/a -o uid=22823,gid=22823挂载。应该没问题。所以我在quest系统上运行git fetch origin,所以我不是在主机上运行命令,而是在从主机共享的数据上运行命令。但是:
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但随后:
touch /tmp/a/projectName/.git/objects/pack/tmp_pack_XXXXXX在同一用户下没有任何问题,与使用任意编辑器打开/写入文件相同。未设置TMPDIR,无论是在主机还是在来宾操作系统上,设置它都不起作用。
信息本身似乎并不能描述真正的问题。是什么导致了这种行为,我可以检查什么?
发布于 2021-11-07 22:32:00
Git不使用TMPDIR来创建其临时文件,因为它必须在适当的地方以原子方式重命名这些临时文件,而Git可能在同一个文件系统上,也可能不在同一个文件系统上。如果不是,那么使用它将阻止原子重命名的工作。
在这种情况下,通常不会看到EPERM,因为更常见的情况是EACCES,这表示目录中的某个地方出现了权限故障。此错误可能来自VirtualBox共享文件系统。
我的猜测是,它对Git同时传递文件模式0444和O_RDWR的事实感到不满。这是POSIX明确允许的,但是一些NFS实现也有这个问题,尽管它们通常返回EACCES。
您可能希望在这里避免使用vboxsf文件系统,而改为使用SSHFS。
https://stackoverflow.com/questions/69875919
复制相似问题