Error

[Error ] /usr/local/bin/code: line 6: python: command not found 에러

KEMON 2022. 10. 5. 01:07
728x90

Mac 업데이트를 계속 미루다가 이번에 그냥 업데이트 하고 새로운 마음으로 다시 시작하자! 라는 마음으로 업데이트를 진행했다.

MacOS(catalina) => MacOS(Monterey) v12.6로 업데이트를 하고 vscode를 열기위해 프로젝트 폴더에서 code . 을 했는데 에러가 뚜둥...

/usr/local/bin/code: line 6: python: command not found
/usr/local/bin/code: line 10: ./MacOS/Electron: No such file or directory

해결 방법을 구글링을 해본 결과 microsoft vscode 깃헙에서 아래와 같은 방법이 나왔다.

출처 : https://github.com/microsoft/vscode/issues/141738

MacOS 12.3 Beta 이후 버전에서는 python 2에 대한 지원을 하지 않아서 해당 코드에 에러가 발생한 것이다.

따라서, code 안의 코드에서 python => python3로 바꾸면 된다고 한다.

 

근데!! code 파일이 read-only로 수정이 안되었다. (수정이 된다면 그냥 그렇게 수정하세요!!)

sudo chmod 775 code

루트권한으로 code 권한을 수정해도 먹지가 않는다.
그런데 이때 nano code 하고 control+o 로 저장할 때 다른이름으로 파일을 저장하면 이건 된다?!!

따라서, 다음과 같은 스텝을 진행하면 된다.

 

1. cd /usr/local/bin

2. nano code

3. contrl + O 이후 다른 파일 이름(code1)으로 저장

4. sudo chmod 775 code1

5. rm -rf code

6. mv code1 code

 

이렇게 하고 작동을 기대한 채로 code . 를 쳤는데.. 에러가 뚜둥..

/usr/local/bin/code: line 10: ./MacOS/Electron: No such file or directory

이 에러가 도대체 뭘까.. 

#!/usr/bin/env bash
#
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.

function realpath() { python3 -c "import os,sys; print(os.path.realpath(sys.argv[1]))" "$0"; }
CONTENTS="$(dirname "$(dirname "$(dirname "$(dirname "$(realpath "$0")")")")")"
ELECTRON="$CONTENTS/MacOS/Electron"
CLI="$CONTENTS/Resources/app/out/cli.js"
ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" "$@"
exit $?

vi code로 열어보면 위와 같이 나오는데 여기서 /MacOS/Electron 이 뭘까.. 뭐가 잘못된걸까 삽질을 한 결과

HomeBrew와 MacOS간의 이슈가 있다는걸 확인했다.

kwangminini@MacBookPro bin % brew list
Traceback (most recent call last):
	11: from /usr/local/Homebrew/Library/Homebrew/brew.rb:31:in `<main>'
	10: from /usr/local/Homebrew/Library/Homebrew/brew.rb:31:in `require_relative'
	 9: from /usr/local/Homebrew/Library/Homebrew/global.rb:79:in `<top (required)>'
	 8: from /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.6.3_2/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	 7: from /usr/local/Homebrew/Library/Homebrew/vendor/portable-ruby/2.6.3_2/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb:54:in `require'
	 6: from /usr/local/Homebrew/Library/Homebrew/os.rb:7:in `<top (required)>'
	 5: from /usr/local/Homebrew/Library/Homebrew/os.rb:43:in `<module:OS>'
	 4: from /usr/local/Homebrew/Library/Homebrew/os/mac.rb:65:in `prerelease?'
	 3: from /usr/local/Homebrew/Library/Homebrew/os/mac.rb:28:in `version'
	 2: from /usr/local/Homebrew/Library/Homebrew/os/mac/version.rb:32:in `from_symbol'
	 1: from /usr/local/Homebrew/Library/Homebrew/os/mac/version.rb:32:in `fetch'
/usr/local/Homebrew/Library/Homebrew/os/mac/version.rb:32:in `block in from_symbol': unknown or unsupported macOS version: :dunno (MacOSVersionError)

brew 명령어가 안먹히는걸 확인!!!

찾아보니 MacOS 11 Big Sur 이상에서 위와같이 brew issue를 직면하게 된다고 한다.

 

해결방법

1. 오래된 xcode command line tools를 삭제

sudo rm -rf /Library/Developer/CommandLineTools

 2. 새로운 xcode command line tools를 설치

sudo xcode-select --install

3. brew를 업데이트

brew upgrade

여기서 xcode 버전이 13.4 아래이면 아래와 같은 에러가 발생하고 brew upgrade가 멈춘다.

Error: Your Xcode (11.3 => /Users/kwangmin/Applications/Xcode.app/Contents/Developer) is too outdated.
Please update to Xcode 13.4 (or delete it).
Xcode can be updated from the App Store.

(혹시나 이러한 에러가 발생한다면 app store에서 xcode를 업데이트하고 해당 경로에 들어가서 버전이 올라간 xcode로 교체해주자!)

4. vscode를 실행해보고 업데이트 확인 클릭 

(혹시나 업데이트를 해야하는데 github 주소 와 함께 업데이트 오류가 난다면 아래와 같이 행동)

    4-1. vscode를 모두 종료

    4-2. 다운로드 폴더 안에 있던 vscode를 응용애플리케이션 폴더로 이동

    4-3. vscode 실행 후 업데이트

5. vscode에서 cmd + shift + p 검색창에 code를 검색하여 PATH에 'code' 명령 설치

cmd + shift + p in vscode

이제 끝났따!!

kwangminini@MacBookPro CreateBookCase % code .
/usr/local/bin/code: line 10: //MacOS/Electron: No such file or directory
#위의 작업을 끝낸 후 code . 실행
kwangminini@MacBookPro CreateBookCase % code .
kwangminini@MacBookPro CreateBookCase %

vscode가 켜졌따... 감격 ㅠㅠㅠㅠ

오랜만에 Macbook을 업데이트하니 굉장한 삽질이였다....

cd /usr/local/bin
nano code

성공하고 나서 개인적으로 궁금해서 위와 같이 다시 code 코드를 살펴보니 아래와 같이 바껴있었다.

#!/usr/bin/env bash
#
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See License.txt in the project root for license information.

# when run in remote terminal, use the remote cli
if [ -n "$VSCODE_IPC_HOOK_CLI" ]; then
        REMOTE_CLI="$(which -a 'code' | grep /remote-cli/)"
        if [ -n "$REMOTE_CLI" ]; then
                "$REMOTE_CLI" "$@"
                exit $?
        fi
fi

function app_realpath() {
        SOURCE=$1
        while [ -h "$SOURCE" ]; do
                DIR=$(dirname "$SOURCE")
                SOURCE=$(readlink "$SOURCE")
                [[ $SOURCE != /* ]] && SOURCE=$DIR/$SOURCE
        done
        SOURCE_DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
        echo "${SOURCE_DIR%%${SOURCE_DIR#*.app}}"
}

APP_PATH="$(app_realpath "${BASH_SOURCE[0]}")"
if [ -z "$APP_PATH" ]; then
        echo "Unable to determine app path from symlink : ${BASH_SOURCE[0]}"
        exit 1
fi
CONTENTS="$APP_PATH/Contents"
ELECTRON="$CONTENTS/MacOS/Electron"
CLI="$CONTENTS/Resources/app/out/cli.js"
ELECTRON_RUN_AS_NODE=1 "$ELECTRON" "$CLI" --ms-enable-electron-run-as-node "$@"
exit $?

 

728x90