无法安装到 Cygwin 的 MinGW sysroot(它受保护)

无法安装到 Cygwin 的 MinGW sysroot(它受保护)

我用这个命令构建了一个库:

$ ../configure '--host=x86_64-w64-mingw32' --prefix=/usr/x86_64-w64-mingw32/sys-root/mingw && make && make install

安装失败,因为显然没有在 mingw sysroot 中创建文件的权限:

$ mkdir /usr/x86_64-w64-mingw32/sys-root/mingw/share/whatever
mkdir: cannot create directory
‘/usr/x86_64-w64-mingw32/sys-root/mingw/share/whatever’: Permission
denied

有什么问题以及如何以最直接的方式解决它?

答案1

sudoCygwin 中没有。其他来源建议使用

cygstart --action=runas command args

这很有帮助,但在我的情况下没有,make install行为不稳定,因为目录没有传递到启动的进程(这是问题cygstart)加上它在单独的 CMD 窗口而不是mintty.最通用的解决方案是使用升级权限本身启动 Cygwin shell(您只能通过这种方式重定向升级命令的输出):

cygstart --action=runas mintty -

但您仍然需要导航回要执行命令的目录。

我还发现-dswitchcygstart使命令变得更糟:

#su analog
    cygstart --action=runas -d "$(pwd)" mintty -
#sudo analog
    cygstart --action=runas -d "$(pwd)" mintty command args

这可能是最好的解决方案,但 mintty 不会在没有单独开关的情况下传递目录,并且不会将工作目录传递给 shell ( mintty -)。

所以最终版本sudo是:

#new mintty window
    cygstart --action=runas mintty -dir "$(pwd)" command args
#new CMD window
    cygstart --action=runas -d "$(pwd)" command args

我找不到在任意工作目录中启动 shell 的好方法。

答案2

不要只是以 root 身份运行:su, sudo, runas,它会工作,但会为将来留下问题(这些文件/目录受到保护是有原因的)。

有一个地方供您安装自己的程序。

/usr/local

将其放在那里可以更轻松地升级系统,而不会丢失程序。

更好的是,还可以使用stow.它将让您的程序与其他程序分开,并使用系统链接对其进行修补。它将跟踪想法,以便轻松删除或升级。

相关内容