OSX El Capitan Beta3에서는 Unix“ln -s”명령이 허용되지 않습니다 not allowed”오류가 발생했을 때

“Operation not allowed”오류가 발생했을 때 Symphony 용 nodejs를 설치하고있었습니다. 왜 이런 일이 일어 났는지 아십니까?

MacBook-Pro-de-XXX : ~ XXX $ sudo ln -s / usr / local / bin / node / usr / bin / node

암호:

ln : / usr / bin / node : 작업이 허용되지 않습니다



답변

이것은 새로운 OS X 버전에서 소위 “루트리스”모드입니다. 특정 시스템 디렉토리를 읽기 전용 (관리자에게도)으로 효과적으로 만듭니다. “/ usr”은 보호 된 디렉토리 중 하나입니다 (이 규칙에서 제외되는 유일한 서브 디렉토리는 “/ usr / local”입니다).

다음 명령을 사용하여이 루트없는 모드를 비활성화 할 수 있습니다.

$ sudo nvram boot-args="rootless=0"
$ sudo reboot

그러나 이것은 권장되지 않습니다! 가장 좋은 방법은 “/ usr / local”에만 사용자 지정 항목을 설치하는 것입니다.


업데이트 ( 27-10 월 15 일) : 10.11 (El Capitan) 공개 릴리스

Apple이 상황을 바꿨 기 때문에 위에서 설명한 해결 방법은 더 이상 El Capitan의 공개 릴리스 에서는 작동 하지 않습니다 .

“루트리스”모드 (일명 시스템 무결성 보호, “SIP”)를 비활성화하는 올바른 방법은 임시로 복구 모드로 부팅하고 (부팅 중에 Command + R을 유지 ) 터미널에서 csrutil disable명령을 사용 하거나 csrutil enable다시 활성화하는 것입니다. 복구 모드에서 시작되는 설치 프로그램 메뉴를 통해 터미널에 연결할 수 있습니다.


답변

El Capitan의 내 버전에는 /bin디렉토리가 없습니다.

/usr/local/bin

따라서 수정 사항은 다음과 같습니다.

mkdir -p /usr/local/bin

-p존재하지 않는 경우 플래그는 디렉토리 (및 전체 경로에서 우연히 어떤 DIRS)를 생성합니다.

그런 다음 “루트리스”모드의 일부 가 /usr/local/bin아니기 때문에 심볼릭 링크를 만들고 앱을 복사 할 수 있습니다 /usr/local.