이 영역을 누르면 첫 페이지로 이동
Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

페이지 맨 위로 올라가기

Coding Groot

코딩 블로그

M1에서 Rosetta로 Node 사용하기

  • 2022.06.22 01:50
  • DevOps, Infra/Apple
글 작성자: Coding Groot

인텔에서 잘 되는게 M1에서 돌리니 갑자기 에러를 뿜으면서 동작 안했습니다. 이럴 때는 rosetta를 이용해서 Intel로 돌리면 됩니다.
제가 Node 14를 사용하고 싶은데 Node 14버전은 M1을 지원하지 않습니다. 이럴 때 쓸 수 있는 방법입니다.

한번 터미널을 rosetta를 사용해서 arm64가 아닌 intel로 아키텍처로 쉘을 실행해서 Node 14를 사용해보겠습니다.


준비물

  • 애플 실리콘(M1) 맥
  • nvm
    • 만약에 nvm을 사용하고 있지 않다면 먼저 깔아주세요! (brew install nvm)
  • (iTerm)
    • 굳이 iTerm이 아니더라도 상관없긴 합니다! 다른 터미널 앱에서 똑같이 해도 됩니당. 

Rosetta로 Node 실행하는 법

1. 현재 쉘의 아키텍처 확인하기

아래의 명령어는 현재 기기의 아키텍처 종류를 출력해줍니다.

arch
man arch
arm64는 m1의 아키텍처입니다.

M1의 아키텍처인 arm64가 뜹니다.

2. Rosseta를 사용해서 zsh을 실행하기

아래의 명령어를 쓰면 로세타가 인텔 아키텍처로 에뮬레이팅해서 zsh을 실행해줍니다.

arch -x86_64 zsh
arch로 확인하면 i386(intel x86_64)로 뜹니다.

이 명령어가 안 먹는 경우도 있다고 합니다.
그러면 앱 자체를 rosetta를 사용하도록해서 실행하면 됩니다.

더보기

위의 명령어가 안 먹는 경우 참고하세요.

 

1. Finder를 켜서 좌측 사이드바를 눌러서 응용 프로그램 디렉터리로 옵니다.

응용 프로그램 디렉터리

2. iterm.app을 복제합니다.

iTerm 복사

3. 복사본을 iTerm Intel로 이름을 바꿔줍시다

iTerm Intel로 이름 바꾸기

4. 복제한 iTerm을 우클릭해서 정보 가져오기를 눌러줍니다.

정보 가져오기 클릭!

5. Rosetta를 사용하여 열기를 체크합니다.

이 앱을 로제타로 실행합니다.

6. 그 앱을 실행해서 Intel 아키텍처로 돌아가는지 확인합니다.

arm64가 아니라 i386이 나오면 성공!

3. Node로 아키텍처를 출력해봅니다.

console.log로 process의 아키텍처를 확인하면 됩니다. 

node -e '(console.log(process.arch))'
아직 arm64로 돌아갑니다

아직 arm64로 뜹니다. 현재 Node가 아직 M1 아키텍처로 돌아가고 있다는 뜻입니다.
제가 생각하기에는 쉘만 인텔이지 결국 호출하는 것은 처음에 M1에서 깔아준 Node 바이너리기 때문에 arm64로 돌아가는 것이지 않을까 추측해봅니다. (인텔로 구동되는 쉘에서 arm64 프로세스를 띄우는 것인가..? 저도 확실하지 않네요. 정확하게 아시는 분은 댓글 부탁드립니닷)
이제 남은 일은 Intel 버전의 노드를 까는 것입니다.

4. Intel 아키텍처 바이너리인 node14 설치

먼저 arch 명령어로 인텔로 에뮬레이션되고 있는지(i386이 잘 출력되는지) 확인합니다.

# node14 LTS 설치
nvm install lts/fermium
# nvm을 이용해서 node14를 사용하도록 설정
nvm use lts/fermium
새로 설치한 node14로 아키텍처를 출력하니 인텔로 나옵니다.


다시 5.에서 했듯이 node로 아키텍처를 출력해봅니다. x64가 뜬다면 성공입니다.

끝


꼼수

그래서 뭔가 묘한데 nvm use {v16이상}을 하면 M1으로 돌아가고 nvm use {v14이하}로 하면 Intel 버전으로 쓸 수 있습니다.

node를 arm64(m1)와 x64(intel)를 오가며 쓰기

이렇게 써도 문제 없겠죠..?
나중에 문제 생기면 와서 수정하겠습니다 ㅎㅎ.


개인적인 이야기

더보기

Jbee님이 만드신 gastsby-starter-bee가 이뻐서 이걸로 TIL 블로그 하나 만들려고 했는데...

arm64 node에서의 빌드 실패

node-sass에서 계속 빌드에러 나길래 llvm깔고.. llvm의 clang사용하도록하고 필요한 dependency(libvips) 수동 빌드하고.... makefile 수정하다가 이건 아닌 것 같아서 혹시나 싶어서 rosetta로 실행해서 하니 바로 해결되네요ㅎㅎㅎ.

intel은 node-sass 설치 단계에서 오류 없음

보니까 Intel 버전이면 node-sass모듈은 미리 빌드된거 다운받아서 쓰네요.. M1도 미리 빌드해준거 곧 만들어주지 않을까요..?

휴

암튼 성공!!

앗 된줄 알았는데;; 저는 그냥 리눅스 서버 파서 써야겠어요.

에휴

(몇 시간 삽질 후)

암튼 성공했습니닷! 설치한 모듈의 버전을 올리니 Rosetta로 돌아가는 Node상에서 작동하네여.. ㅠㅠ
일기장같은 글은 티스토리 블로그에 적기 싫어서 만든 제 일기장 블로그입니닷. 아마 여기세 노트 카테고리에 적던 글들을 좀 더 세분화해서 여기에 많이 적을 것 같습니다.

많이 놀러오세영! ㅎㅎ

일기장 블로그 grootil: https://grootil.netlify.app

인텔 아키텍처로 돌아가고 있는 노드로 npm run dev!

암튼 즐코하세용!!

반응형

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • Mac Sequoia - multipass timed out waiting for response 해결법

    Mac Sequoia - multipass timed out waiting for response 해결법

    2024.10.14
  • Mac 전용 CLI 명령어

    Mac 전용 CLI 명령어

    2022.07.17
  • Mac에서 code 명령어가 작동 안 할 때 해결법

    Mac에서 code 명령어가 작동 안 할 때 해결법

    2022.06.26
  • Mac에서 명령어로 Win11 부팅 USB 만들기

    Mac에서 명령어로 Win11 부팅 USB 만들기

    2022.06.09
다른 글 더 둘러보기

정보

Coding Groot 블로그의 첫 페이지로 이동

Coding Groot

  • Coding Groot의 첫 페이지로 이동

검색

메뉴

  • 홈
  • 태그
  • 방명록
  • 소개
  • 블로그 저작권

카테고리

  • 분류 전체보기 (182)
    • Git (23)
      • Git Tutorial (9)
      • Git Note (7)
      • Git Lecture (7)
    • Programming Language (1)
      • C (2)
      • C Sharp (5)
      • Java (4)
      • JavaScript (7)
      • Julia (5)
      • Python (4)
    • Programming (8)
      • Algorithm (2)
      • Compiler (5)
      • Data Structure (0)
      • Web (12)
      • NestJS (2)
    • DevOps, Infra (36)
      • Apple (6)
      • Cloud (15)
      • Database (1)
      • Network (4)
      • Linux (8)
    • Game Programming (11)
      • Unity Tutorial (5)
      • Unity Note (6)
    • Hardware Design (1)
      • Digital Circuit (1)
    • Note (49)
      • Coffee (2)
      • Retrospect (15)
      • Reading List (14)
    • Mathematics (1)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 서평
  • javascript
  • 회고
  • Github
  • tutorial
  • 한빛미디어
  • git
  • aws
  • 전체 보기…

정보

Coding Groot의 Coding Groot

Coding Groot

Coding Groot

블로그 구독하기

  • 구독하기
  • RSS 피드

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기

나의 외부 링크

  • GitHub
  • SlideShare
  • 유니티 2020 수업
  • TIL Blog
  • 모도코

방문자

  • 전체 방문자
  • 오늘
  • 어제
Powered by Tistory / Kakao. Copyright © Coding Groot.

티스토리툴바