我正在尝试使用官方构建脚本并遵循官方Windows构建说明构建ArangoDB。
构建过程中的多个步骤似乎与文件权限混淆,因此编译失败,因为无法再访问所需的文件。我也不能在任何程序中打开它们(访问被拒绝,无法加载,…),即使作为管理员用户并具有提升的权限。
到目前为止,我的解决方案是在例如V8-4.3.61build
上运行takeown /F . /R
和icacls . /T /C /Q /reset
以拥有文件并从管理shell重置权限。但是在最终的make pack-win64
期间,它不再工作以解决权限问题。
我想知道为什么首先要更改权限。ArangoDB团队提供的脚本似乎并没有改变这些设置。所以必须是在进程中调用的第三方构建脚本(gyp
?!), cygwin环境(bash
, make
,…)或编译器(msbuild
?)。我不认为这与git
或cmake
有关,但它们也有关系。
- Windows 7 64bit
- Visual Studio 2013 Ultimate
- Cygwin 2.2.0
- cmake 3.3.1
在cygwin的所有挂载中关闭ACL (noacl
)可以明显修复权限问题:
# /etc/fstab
#
# This file is read once by the first process in a Cygwin process tree.
# To pick up changes, restart all Cygwin processes. For a description
# see https://cygwin.com/cygwin-ug-net/using.html#mount-table
# noacl = Ignore Access Control List and let Windows handle permissions
C:/cygwin64/bin /usr/bin ntfs binary,auto,noacl 0 0
C:/cygwin64/lib /usr/lib ntfs binary,auto,noacl 0 0
C:/cygwin64 / ntfs override,binary,auto,noacl 0 0
none /cygdrive cygdrive binary,posix=0,user,noacl 0 0
你跑了吗
mkpasswd > /etc/passwd
mkgroup > /etc/group
在某个时候吗?因为这也可以设置适当的权限(如果cygwin首先知道映射)