행궁동 데이터 엔지니어

반응형

환경: MacOS 13.0 (M1)

 

What does the 'rc' in `.bashrc`, etc. mean?

Well, this is embarrassing. I feel like I just realised I don't know a loyal colleague's name after working with them for 10 years. "Hey, er... *cough!*, thanks for that great job you did on settin...

superuser.com

 

에러 상황

명령어

  • protoc 명령어로 컴파일 진행
protoc -I=. \                    
--go_out . --go_opt paths=source_relative \
--go-grpc_out . --go-grpc_opt paths=source_relative \
protos/v1/user/user.proto

에러 메시지

  • protoc-gen-go 명령어를 찾을 수 없거나 실행할 수 없다.
protoc-gen-go: program not found or is not executable
Please specify a program using absolute path or make sure the program is available in your PATH system variable
--go_out: protoc-gen-go: Plugin failed with status code 1.

protoc-gen-go: program not found or is not executable

Please specify a program using absolute path or make sure the program is available in your PATH system variable --go_out: protoc-gen-go: Plugin failed with status code 1.

 

 

해결 방법

protoc-gen-go 명령어가 위치한 경로를 명령어를 찾는 PATH 환경변수에 추가하면 해결 할 수 있습니다.

 

protoc-gen-go 명령어 위치

  • protoc-gen-go 명령어는 $GOPATH/bin에 설치되어 있습니다.
# GOPATH 확인
go env | grep GOPATH
GOPATH="/Users/kim/go"

# GOPATH에 /bin을 추가해 파일목록 확인
ls -lh /Users/kim/go/bin

protoc-gen-go 명령어 확인

 

PATH 환경변수에 protoc-gen-go 명령어 위치 추가

  • export 명령어를 사용해 일시적으로 추가할 수도 있지만 쉘 run commands 파일을 수정해 반영구적으로 적용하겠습니다.
  • 운영체제에 맞게 쉘 설정파일을 수정해주시면 됩니다.
  • MacOS 쉘 run commands 파일: ~/.zshrc
  • Linux 배포판들의 경우 대부분 bash쉘을 기본쉘로 사용, bash쉘 run commands 파일: ~/bashrc

 

MacOS 예시

  • Bash쉘을 사용하는 Linux 배포판의 경우 ~/.bashrc 파일 수정
vi ~/.zshrc
export PATH="$PATH:/Users/kim/go/bin"

PATH 환경변수에 protoc-gen-go 파일의 경로 추가

 

.zshrc 파일 적용 (source 명령어)

source ~/.zshrc

 

결과

  • which 명령어로 protoc-gen-go의 위치가 확인되고, protoc 명령어로 컴파일하는 것도 문제가 없습니다.

which 명령어로 protoc-gen-go 명령어 위치 확인 및 protoc로 컴파일

 

 

기타 궁금하신 사항은 댓글 남겨주세요.

 

감사합니다.

 

 

참고 자료

1. 코딩 세상님 블로그, "[Protocol Buffer/gPRC] protoc-gen-go-grpc:....", https://darkstart.tistory.com/160
2. protobuf GitHub, "protoc-gen-go: program not found or is not executable #795", https://github.com/golang/protobuf/issues/795
3. DevJin-Blog, "Golang gRPC server 구축하기 (1) - gRPC란 무엇인가?" , https://devjin-blog.com/golang-grpc-server-1/
반응형

이 글을 공유합시다

facebook twitter kakaoTalk kakaostory naver band