다음 명령으로 라이브러리를 만들었습니다.
$ ../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
sudo
Cygwin에서는 사용할 수 없습니다. 다른 출처에서는 다음을 사용할 것을 제안합니다.
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
. 프로그램을 다른 프로그램과 별도로 유지하고 시스템 링크로 패치합니다. 아이디어를 추적하여 쉽게 제거하거나 업그레이드할 수 있습니다.