ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Mac Studio 로 이전 고난기
    Tech 2022. 5. 21. 00:57

    마감은 멋진데 말이지..

     

    담당하고 있는 프로젝트가 Node, React Native, iOS (Swift)로 넓어졌는데 (그렇다고 일이 또 많은건 아니지만)

    어느 순간부터 M1 맥미니가 덜덜 거림을 느꼈다. 덜덜의 표현이 물리적인 차량의 흔들거림이 아니라

     

    '나 문제있어요!!'

    이런 느낌..

     

    사실 M1 자체 성능 보다는 스토리지가 250GB라 여러가지 프로젝트 소스나 연구/샘플 용으로 받은 파일도 많았는데

    어느... 순간 Gradle 이 돌지않더니.. no space left 가 뜨더니 펑~ 내 머리도~ 🤯

     

    물론 그전 부터 문제가 없었는가? 아니요.

    모니터가 연결이 2개밖에 안되는 이슈도 있고 USB-C 허브 주렁주렁도 문제가 아예 없지는 않았음.

     

    여튼 곡소리 몇번 내긴 했는데, '그럼 MacStudio 어떠신지??' 하더니 진짜 생겼다.

    물론 물건 받기 까지 중국 봉쇄나 반도체부족으로 좀 걸리긴 했지만.

     

     


    서막: 힘든 마이그레이션 시작

     

    보통 새 장비를 사면

     

    • 새로운 맥으로 셋팅하기
    • 기존 맥에서 마이그레이션 지원으로 옮기기
    • 타임머신 백업으로 옮기기

     

    가 있는데,

     

    여기서 나는 마이그레이션 지원으로 옮길려고 했는데, 이상하게 계정 오류로 마이그레이션 시작도 안되더라.

    애플케어 고객센터 전화했는데 '처음 보는 안내 메시지라 일단 macOS 버전부터 올려보시라' 만 들었고 결국 문제 원인이 해결이 불가

     

    다른 수단으로 타임머신이 있으니, 외장하드로 타임머신도 옮길려고 2시간 걸려서 백업했는데,

    이것도 무언가의 오류로 '파일복사가 완료되었지만' 타임머신이 작동하지 않았음..

    (늦었지만 아마 이 시점에서 맥에서 새로 셋팅했어야 .. 한다 생각이 듬.)

     

    결국 다른 계정으로 마이그레이션 지원으로 옮기긴 했는데 이게 문제의 시발점이 되었다.

     

     

    문제발생: 주요 파일 권한이 root:root로

     

    시스템 이전후 로그온까지 들어왔는데, 이상하게 개발툴이 비정상 작동을 시작했다.

     

    - xcode 경우 빌드는 성공했으나 lldb 연결실패로 단말에 빌드를 넣어도 디버그 모드를 붙지 못하거나 엄청 시간이 걸린후 붙었다.

    - gradle은 오작동했고

    - npm/yarn은 모든 작동에 퍼미션 오류가 발생했다.

    - cocoapods 는 위 예상대로 😀  퍼미션오류로 Pods 생성에 실패함.

     

    하나 하나 해결해보도록 합시다.

     


    문제 해결시작

     

    일단 위 상황은 '어떠한 CLI 작업도 다해봤는데 위처럼 권한오류로 아무것도 안되는 경우'로 정의하고 시작합니다.
    보통은 이렇게 깊게 할 필요가 없습니다. (예를 들어 yarn은 yarn cache clean 하면 됩니다..)

     

    시작전에 대부분 퍼미션 문제는 실행하는 사용자가 권한을 가지지 않은 문제입니다.

    대부분 삭제후 재생성 될줄 알았으나 해당 특정 디렉토리가 아닌 특정 디렉토리의 부모 (parent directory) 원인 인 경우

    삭제를 해도 문제가 해결되지 않습니다.

     

    일단 그래서 하나하나 해봐야하고, 대부분 해결은 캐시쪽을 확실히 지우는건데 일단 정리는 해봄

     

     

    xcode

    이게 제일 짜증나긴 했네요. 당장 빌드 해서 봐야하는데 안되니까.

     

    상황:

    1) 일단 cocoapods 가 있어도 Pods가 빌드가 안되거나

    2) 빌드가 성공했어도. lldb is likely reading from device memory to resolve symbols. 이런 에러가 뜨거나 

     

    해결방법:

    - 우선 Xcode가 켜져있으면 끕니다.

    - 어플리케이션에 Xcode.app 을 휴지통으로 이동하고 제거합니다.

     

    이후 터미널 명령어입니다.

    sudo rm -rf /Library/Developer/CommandLineTools
    sudo rm -rf /Library/Preferences/com.apple.dt.Xcode.plist
    sudo rm -rf ~/Library/Preferences/com.apple.dt.Xcode.plist
    sudo rm -rf ~/Library/Caches/com.apple.dt.Xcode
    sudo rm -rf ~/Library/Application Support/Xcode
    sudo rm -rf ~/Library/Developer
    sudo rm -rf ~/Library/Developer/Xcode
    sudo rm -rf ~/Library/Developer/CoreSimulator

     

    재부팅 Appstore 에서 다운로드 이후 실행,

     

    만약, command line tools 설치창이 안뜬다면 하단 명령어 실행후 재부팅후 해보세요.

    xcode-select --install

     

    원인:

     

    제경우에서는 ~/Library/Developer/Xcode~/Library/Developer/CoreSimulator 및 프로젝트의 캐시 파일이 퍼미션이 꼬였습니다.

     

    ~가 계정 디렉토리 하위일텐데 '특정 폴더만' 권한이 깨져있거나 root:root로 되어있는데 해당 파일을 추적하기에는 어렵고

    그렇다고 모두 chown -R 쓰기에는 그냥 새로 옮김겸 처리했습니다. 

     

    이후 일단 작동은함.

     

    yarn/npm

     

    상황:

    yarn 이 디렉토리 퍼미션이 문제가 있다고 뜸.

    npm 도 마찬가지

     

    해결:

    rm -rf ~/Library/Caches/yarn (혹은 비슷한거)
    rm -rf ~/.npm

     

    원인:

    이것도 결국 ~/Library/Caches/yarn 하위에 yarn이 root:root 로 설정 되어있어서 지웠음.

    지우고 yarn install 하니까 다시 캐시 저장하고 처리하던

     

    Android Studio/Gradle

    상황:

    뭔짓을 해도빌드가 안됨

     

    해결:

    이건좀 뜬금없지만 java가 제대로 설치가 안되어 있었다.

     

    그리고 여기는 캐시가 ~/Library/Caches 가 아닌 ~/.gradle 에 있었는데,
    이것도 퍼미션 오류가 있었고 지웠는데 바로 gradlew 이 오류가남 데몬이 실행중이였나(..) 싶어서 재부팅하니까 다시 실행됨.  

     

    원인:

    마이그레이션 지원이라도 JDK같은건 안옮겨주나? 여튼 cmd 에서 java -version 쳐보고 제대로 설치되어있나 확인후 필요하면 설치

    gradle 폴더 지울때는 데몬이 꺼져있나 확인, 그냥 지웠다면 걍 재부팅하고 처음부터 키면 알아서 될것
    (android studio경우는 gradle.properties 같은거 sync 하면 알아서 처음부터 할듯.)

     

     

    cocoapods

    상황:

    뭔짓을 해도 pod install, pod update 가 안먹음

     

    해결:

    이것도 캐시문제

    sudo rm -rf ~/Library/Caches/CocoaPods

    원인:

    이것도 캐시문제, 근데 CocoaPods 폴더가
    문제가아니라 거기 내부에 특정 폴더만 퍼미션이 꼬여있어서 일일이 확인이 어려우니 그냥 통째로 날림.

     

     

     


     

    결론: 새로 셋팅하는게 좋을수있다.

     

    사실 ~/Library/Caches 을 통째로 날리면 해결 될수 있으나..

     

    문제는 모든 프로그램이 문제가 아닌 상황에 또 특정 데이터가 캐시에 있다면

    해당 프로그램을 다음에 켰을때 좀 암울한 일이 벌어질것 같으니 일단 '당장 쓰는 앱' 위주로만 일일이 찾아서 지우고 다시 셋팅했다.

     

    위에 쓴것처럼 결국 이러나저러나 '새로 셋팅' 하는게 더 깔끔할수 있다는 이야기가 여기서,

    이정도면 그냥 중요 파일 옮기고 새로 셋팅하는게 ^^...

     

     

    여튼 끝.

     

    댓글

Designed by Tistory.