저는 방화벽 뒤에서 apt를 사용하고 있으므로 http_proxy
환경 변수에 프록시를 지정합니다.
내가 한 일은 루트 사용자의 합계에 다음 줄을 추가하는 것이었습니다 .profile
(좋은 측정을 위해)..bashrc
export http_proxy=http://proxyserver:8080
다음을 수행하면 에이전트 값이 올바르게 인쇄됩니다.
sudo echo $http_proxy
그런데 을 호출하면 해당 변수가 루트로 표시 sudo apt-get update
되지 않는 것 같습니다 .http_proxy
프록시를 통과하는 것은 내가 root 로 su할 때만 예상대로 작동하므로 apt-get
분명히 변수를 볼 수 있습니다.
제 질문은 위에서 언급했듯이 왜 sudo apt-get
변수를 볼 수 없습니까? 입니다.
고쳐 쓰다방금 를 호출하면 sudo echo
현재 사용자 프로필에 설정된 변수 값이 반영된다는 것을 배웠습니다. 하지만 그럼에도 불구하고 sudo apt-get
해당 변수 값을 사용하면 어떨까요?
답변1
sudo apt-get
이 경우에는 "작동하지 않는 것 같습니다"가 아니라작동하는 것 같습니다당신이 이것을 할 때 sudo echo $http_proxy
.
쉘 명령을 입력하면 모든 변수와 별칭이 전역화되고 확장됩니다.앞으로실행됩니다.
그러면 더 부드러워 sudo echo $http_proxy
집니다 sudo echo http://proxyserver:8080
.
$http_proxy
표시되지 않는 이유는 apt-get
지시문 sudo
에 명시적으로 허용된 환경 변수를 제외한 모든 환경 변수가 지워지기 때문입니다./etc/sudoers
env_keep
환경 변수가 처리되는 방식을 조작하는 방법 sudo
(또는 일반적으로 환경 변수가 처리되는 방식) 에 대한 자세한 내용은아니요)은 에서 찾을 수 있습니다 man sudoers
.
답변2
이것이 제가 결정한 것이므로 이 경우 더 나은 해결책은 /etc/apt/apt.conf
프록시에 대한 줄을 추가하도록 수정하는 것입니다.
Acquire::http::Proxy "http://yourproxyaddress:proxyport";
시스템은 거의 영구적으로 프록시 뒤에 있으므로 http_proxy
환경 변수를 사용하는 것보다 장기적으로 더 나은 솔루션입니다.
답변3
아, 방금 이 페이지에서 뭔가를 봤어요:
https://help.ubuntu.com/community/AptGet/Howto#Setting_up_apt-get_to_use_a_http-proxy
일반적으로 sudo로 apt-get을 실행하는 경우 /etc/sudoers에 다음과 같은 명시적인 환경 설정을 추가하지 않는 한 먼저 루트로 로그인해야 이 작업이 작동합니다.
Defaults env_keep = "http_proxy https_proxy ftp_proxy"
이렇게 해야 하는 이유는 sudo
모든 환경 변수가 의도적으로 지워지기 때문입니다.목례따라서 기본적인 보안 예방 조치로 화이트리스트에 추가하세요.
답변4
내 생각에는 sudo의 "-E" 옵션만 사용해야 한다고 생각합니다.
sudo -E echo $http_proxy