#TIL 환경 변수를 유지한 채 sudo가 필요할 때

사내 linux 가상 머신 인스턴스에 gitlab runner를 설치하려고 했을 때였던 걸로 기억한다.

curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" \
| sudo bash

gitlab 저장소를 추가한다. 이렇게 해야 이후에 업데이트도 쉽게 따라갈 수 있다. sudo apt-get update 명령만 내리면 최신 버전 정보를 가져오기 때문이다.

하지만 저 명령이 이상하게 동작하지 않는다. 특정 단계에서 시간이 오래 걸리며 시간 초과 에러가 난다. 스크립트 파일을 직접 다운로드 받아서 어디서 문제가 나는지 하나씩 실행해봤다. 아무런 문제 없이 잘 실행된다. 과연 뭐가 문제일까?

환경 변수 문제였다. 프록시 서버를 통해 인터넷 접근이 가능했는데, 그 설정을 https_proxy, http_proxy 환경 변수로 하고 있었다. sudo bash 명령은 환경 변수 유지 없이 superuser로 bash를 실행한다. 그래서 프록시 서버 세팅이 안 되니 인터넷에 접근해 파일을 받아오는 스크립트에서 시간 초과 에러가 발생한다.

curl -L "https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh" \
| sudo -E bash

-E 옵션을 사용하면 환경 변수를 유지한다. sudo bashsudo -E bash 로 바꿔주면 잘 동작한다.

링크

Feedback plz <3 @ohyecloudy, ohyecloudy@gmail.com

A Random Post