我使用cygwin
内置git和python来安装Android回购工具。
如果我设置CYGWIN=winsymlinks
,一切正常。
如果我设置CYGWIN=winsymlinks:nativestrict
告诉cygwin制作Windows本地符号链接并以管理员身份运行cygwin,则在repo init过程中,我收到错误:
Traceback (most recent call last):
File "/cygdrive/d/repo/test/.repo/repo/main.py", line 506, in <module>
_Main(sys.argv[1:])
File "/cygdrive/d/repo/test/.repo/repo/main.py", line 482, in _Main
result = repo._Run(argv) or 0
File "/cygdrive/d/repo/test/.repo/repo/main.py", line 161, in _Run
result = cmd.Execute(copts, cargs)
File "/cygdrive/d/repo/test/.repo/repo/subcmds/init.py", line 390, in Execute
self._SyncManifest(opt)
File "/cygdrive/d/repo/test/.repo/repo/subcmds/init.py", line 239, in _SyncManifest
m.Sync_LocalHalf(syncbuf)
File "/cygdrive/d/repo/test/.repo/repo/project.py", line 1196, in Sync_LocalHalf
self._InitWorkTree()
File "/cygdrive/d/repo/test/.repo/repo/project.py", line 2293, in _InitWorkTree
copy_all=False)
File "/cygdrive/d/repo/test/.repo/repo/project.py", line 2276, in _ReferenceGitDir
os.symlink(os.path.relpath(src, os.path.dirname(dst)), dst)
OSError: [Errno 2] No such file or directory
答案 0 :(得分:0)
这是预期的行为,并且来自NTFS符号链接和POSIX符号链接模型之间的不兼容性。来自CYGWIN environment variable的Cygwin帮助:
winsymlinks:native
和winsymlinks:nativestrict
之间的区别在于:如果文件系统支持本机符号链接,并且Cygwin由于某种原因无法创建本机符号链接,则它将回退到使用{{创建Cygwin默认符号链接1}},当winsymlinks:native
时,winsymlinks:nativestrict
系统调用将立即失败。
顺便说一下,你说你正在使用symlink(2)
,但我在帮助页面上看不到这个确切的选项,因此我们只能猜测哪个变体(CYGWIN=winsymlinks
, <{1}},:lnk
或其他完全相同的东西)。