MinGW sysroot를 Cygwin에 설치할 수 없습니다(보호되어 있음).

MinGW sysroot를 Cygwin에 설치할 수 없습니다(보호되어 있음).

다음 명령으로 라이브러리를 만들었습니다.

$ ../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 셸 자체를 시작합니다(이 방법으로는 업그레이드 명령의 출력만 리디렉션할 수 있습니다).

cygstart --action=runas mintty -

그러나 여전히 명령을 실행하려는 디렉터리로 다시 이동해야 합니다.

나는 또한 -d스위치가 cygstart명령을 더 나쁘게 만든다는 것을 발견했습니다.

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

이것이 아마도 최선의 해결책일 것이나 mintty는 별도의 스위치 없이는 디렉터리를 전달하지 않을 것이고, 작업 디렉터리를 쉘( mintty -)에 전달하지 않을 것입니다.

따라서 최종 버전 sudo은 다음과 같습니다.

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

임의의 작업 디렉토리에서 쉘을 시작하는 좋은 방법을 찾을 수 없습니다.

답변2

su그냥 실행하지 마세요: , sudo, 루트로 runas실행하면 작동하지만 미래에 문제가 남을 것입니다(이러한 파일/디렉토리는 이유 때문에 보호됩니다).

자신만의 프로그램을 설치할 수 있는 곳이 있습니다.

/usr/local

이를 거기에 두면 프로그램 손실 없이 시스템을 더 쉽게 업그레이드할 수 있습니다.

더 나은 방법은 를 사용하는 것입니다 stow. 프로그램을 다른 프로그램과 별도로 유지하고 시스템 링크로 패치합니다. 아이디어를 추적하여 쉽게 제거하거나 업그레이드할 수 있습니다.

관련 정보