프록시를 통해 작업하기 위해 add-apt-repository를 어떻게 얻습니까?


119

나는 따라하기 위해 노력하고있어 wiki.linaro.org에 대한 지침은 "우분투 10.04 (맑은) 및 10.10 (매버릭) 호스트에 설치 크로스 툴체인을" (내 우분투 10.04 VM에). 첫 번째 단계는 다음과 같습니다

sudo add-apt-repository ppa:linaro-maintainers/toolchain

그러나 내가 그것을 실행할 때 나는 얻는다 :

Error reading https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain: <urlopen error [Errno 110] Connection timed out>

문제는 고용주의 프록시 서버, 특히 HTTPS에 대한 구성과 관련이 있다고 생각합니다.

Firefox에서 https://launchpad.net/api/1.0/~linaro-maintainers/+archive/toolchain 을 열면 "연결 시간이 초과되었습니다"라는 메시지가 나타납니다. 그런 다음 Firefox 환경 설정-> 고급-> 네트워크-> 설정 ...으로 이동하여 HTTP 프록시를 "게이트웨이"로 설정하고 포트를 8080으로 설정하고 "모든 프로토콜에이 프록시 서버 사용"을 선택했습니다. 그런 다음 페이지가로드되었습니다. 이것은 나의 이론을지지한다.

http_proxy 및 https_proxy 환경 변수 (소문자와 대문자 모두)를 설정하려고했습니다.

$ set | grep -i proxy
HTTPS_PROXY=https://gateway:8080
HTTP_PROXY=http://gateway:8080
http_proxy=http://gateway:8080
https_proxy=https://gateway:8080

나는 또한 그것들을 다음과 같이 바꾸려고 노력했다.

$ set | grep -i proxy
HTTPS_PROXY=gateway:8080
HTTP_PROXY=gateway:8080
http_proxy=gateway:8080
https_proxy=gateway:8080

그리고 두 번째 줄을 /etc/apt/apt.conf에 추가해 보았습니다.

Acquire::http::proxy "http://gateway:8080/";
Acquire::https::proxy "https://gateway:8080/";

그러나 계속 같은 오류가 발생합니다.

이 문제를 어떻게 해결합니까?

업데이트 : 나는 "리포지토리 추가 및 프록시 뒤에 터미널에서 연결하는 데 문제 가 있음 "에 대한 대답 을 따르고 추가 정보를 얻었습니다.

$ sudo add-apt-repository ppa:linaro-maintainers/toolchain
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv 1DD749B890A6F66D050D985CF1FCBACA7BE1F97B
gpg: requesting key 7BE1F97B from hkp server keyserver.ubuntu.com
gpgkeys: HTTP fetch error 7: couldn't connect to host
gpg: no valid OpenPGP data found.
gpg: Total number processed: 0

"HTTP fetch error"가 "Defaults env_keep = http_proxy"를 추가해야한다는 의미인지 궁금합니다 /etc/sudoers.

업데이트 # 2 : 추가했습니다 :

Defaults env_keep="http_proxy"
Defaults env_keep="https_proxy"

... 버그 516032에 대한 의견 18 에서와 동일하지만 여전히 동일한 "gpgkeys : HTTP fetch error 7 : 호스트에 연결할 수 없습니다"라는 오류가 발생합니다.

그리고 이것은 궁금합니다.

$ sudo env | grep proxy
https_proxy=https://gateway:8080

... http_proxy가 없기 때문에.

모든 조언을 부탁드립니다.

업데이트 # 3 : 내 VM의 호스트는 랩톱이므로 집으로 가져 가서 프록시없이 시도했습니다.

$ sudo add-apt-repository ppa:linaro-maintainers/toolchain
Executing: gpg --ignore-time-conflict --no-options --no-default-keyring --secret-keyring /etc/apt/secring.gpg --trustdb-name /etc/apt/trustdb.gpg --keyring /etc/apt/trusted.gpg --primary-keyring /etc/apt/trusted.gpg --keyserver keyserver.ubuntu.com --recv 1DD749B890A6F66D050D985CF1FCBACA7BE1F97B
gpg: requesting key 7BE1F97B from hkp server keyserver.ubuntu.com
gpg: key 7BE1F97B: public key "Launchpad Linaro Overlay PPA" imported
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

효과가있었습니다. 따라서 문제는 프록시 구성과 관련이 있습니다. 그러나 해결 방법이 있다고 가정합니다.


답변:


183

프록시 구성 외에도 sudo다음 -E옵션을 사용 하여 환경을 보존하도록 지시하십시오 .

export http_proxy=http://<proxy>:<port>
export https_proxy=http://<proxy>:<port>
sudo -E add-apt-repository ppa:linaro-maintainers/toolchain

사용자 이름과 비밀번호 :

export https_proxy=https://<username>:<password>@<proxy>:<port>

나중에 정말 일했다
Shashwat Kumar

14
-E (위의 다른 모든 작업을 수행 한 후) 나를 위해 일했습니다.
cschooley

2
그리고 예, https_proxy구성이 필요했다 ... : P
monkut

1
프록시를 영구적으로 추가하고 -E 스위치를 피하는 방법? 추가 된 행으로 / etc / environment 파일을 올바르게 구성했습니다 ... 감사합니다
Enrique

1
보낸 사람 man sudo: -E, --preserve-env사용자가 기존 환경 변수를 유지하려는 보안 정책을 나타냅니다. 사용자에게 환경 보존 권한이없는 경우 보안 정책에서 오류를 반환 할 수 있습니다. m
Pablo A

39

터미널에서 다음 코드를 사용하여 프록시 뒤에 gpg 키를 추가하십시오.

sudo apt-key adv --keyserver-options http-proxy=http://USER:PASSWORD@PROXY_URL:PORT/ --keyserver keyserver.ubuntu.com --recv-keys GPG_KEY

대문자를 적절히 교체하십시오. 사용자 인증없이 프록시를 사용하는 경우 (예 : 사용자 이름 및 비밀번호) http-proxy=http://PROXY_URL:PORT/대신 사용하십시오.

예를 들어 GPG_KEY=C2514567EEA14886사용할 수 있도록

sudo apt-key adv --keyserver-options http-proxy=http://user:abc123@10.10.2.21:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886

어디,

USER_ID=user
PASSWORD=abc123
PROXY_URL=10.10.2.21
PORT=3128

사용자 인증이 없으면 간단히 사용하십시오.

sudo apt-key adv --keyserver-options http-proxy=http://10.10.2.21:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886

3
이것은 실제로 add-apt-repository 명령 실행을 "수정"하지 않습니다. 실제로 그것은 그 작업 중 하나를 해결합니다. 최소한 하나 이상의 추가 명령이 필요합니다 : sudoedit /etc/apt/sources.list.d/XXXX.list + deb URL을 추가하기위한 수동 버전 ...
Chucky

프록시를 영원히 고치는 방법에 대한 정보를 추가하면 완벽합니다. 제공 한 솔루션에는 많은 타이핑이 필요합니다
Danatela

9

드디어! 다음을 통해 https_proxy를 설정해야합니다.

export https_proxy=....

set http_proxy만으로는 충분하지 않습니다.

그리고 sudo를 통하지 않고 add-apt-repository 명령을 루트로 실행해야했습니다.

암호:

sudo su
add-apt-repository ppa:........

6

프록시 구성이 설정되었지만 서버에 접속할 수없는 것 같습니다 ...

나는 이와 같이 해결 한 매우 비슷한 문제가 있었다 : 회사 프록시는 보안상의 이유로 포트 80과 443 만 허용하므로 HKP 프로토콜이 포트 11371을 사용하기 때문에 설정시 이벤트가 허용되지 않습니다.

따라서 SSH 아웃 및 외부 서버 중 하나에서 키를 가져 와서 다운로드하여 로컬로 설치하는 것이 부족하면 아래 나열된 서버 중 하나에서 키 서버를 지정하고 포트를 지정할 수 있습니다.

http://sks-keyservers.net/overview-of-pools.php

예 :

apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys XXXXX

붐, 짜잔!


예. 이것은 데비안 7에 모노를 설치하는 동안 저에게 sudo -E apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF
ken

3

sudoers변경 사항이 예상대로 작동하지 않는 이유 는 다음과 같습니다.

    Defaults env_keep="http_proxy"
    Defaults env_keep="https_proxy"

다음과 같이 작성해야합니다.

    Defaults env_keep+="http_proxy"
    Defaults env_keep+="https_proxy"

또한 매번 Defaults및 사이에 공백이 있는지 확인하십시오 env_keep.


3

편집 /usr/lib/python3/dist-packages/softwareproperties/ppa.py하고 추가 하여이 문제를 해결할 수있었습니다.

"--keyserver-options", "http-proxy=<proxy_url>",

다음 줄 아래

"--keyserver", self.keyserver,

더 많은 배경 정보

ppa.pyadd-apt-repositorygpg를 호출 하는 데 사용되는 파이썬 스크립트입니다 . 때때로 http_proxy 환경 변수를 사용하지 않는 gpg에 버그가있는 것 같습니다. 파일 /root/.gnupg/dirmngr.conf을보고 honor-http-proxy주석 처리되지 않았는지 확인하여 확인할 수 있습니다 .


3

이 4 단계 접근 방식은 회사 프록시 뒤의 Ubuntu 17.04 VM에서 효과적이었습니다.

  1. sudo apt-add-repository ppa:brightbox/ruby-ng 그리고 실패하자
  2. sudo apt update 다음과 같은 오류 메시지를 찾으십시오. The following signatures couldn't be verified because the public key is not available: NO_PUBKEY F5DA5F09C3173AA6
  3. sudo apt-key adv --keyserver-options http-proxy=http://10.0.2.2:3128 --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys F5DA5F09C3173AA6
  4. sudo apt update 이제 작동합니다

호스트 VM은 CNTLM포트 3128 에서 프록시 서버를 실행하고 있습니다.


1
당신은 키가 무엇인지 알려주기 위해 기다릴 필요가 없습니다. PPA 의 기술적 인 세부 사항에는 다음같은 내용이 있습니다 . "지문 : 80F70E11F0F0D5F10CB20E62F5DA5F09C3173AA6"
muru

사실이지만이 과정이 약간 더 쉽다는 것을 알았습니다.
thegreendroid

1

이것은 나를 도왔다 :

sudo https_proxy='https://user:password@proxyhost:port/' \
http_proxy='http://user:password@proxyhost:port/' \
ftp_proxy='ftp://user:password@proxyhost:port/' \
no_proxy=localhost,127.0.0.0/8,10.0.0.0/8 add-apt-repository ppa:webupd8team/java

명령에 필요하지 않은 환경 변수가 있지만 해를 끼치 지 않는 것으로 생각합니다.


1

PPA를 수동으로 다음에 추가하십시오 /etc/apt/sources.list.

deb http://ppa.launchpad.net/<user>/<repo>/ubuntu trusty main

파일을 저장하고를 실행하십시오 sudo apt-get update. 이 오류가 나타날 수 있습니다 :

W: GPG error: http://ppa.launchpad.net trusty InRelease: The following signatures couldn't be verified because the public key is not available: NO_PUBKEY 5BB92C09DB82666C

다음 명령을 실행하여 해당 PPA의 키 (5BB92C09DB82666C)를 변경 한 것을 기억하여 PPA의 키를 승인하십시오.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 5BB92C09DB82666C

실행 sudo apt-get update하면 끝났습니다.

Ref : 명령을 통해 데비안에서 런치 패드 PPA를 추가하는 방법add-apt-repository


1

사실, 나는 같은 문제에 부딪쳤다. 이것이 내가이 페이지를 찾은 방법이다.

  • 환경 변수 http_proxy (대소 문자 구분) 및 https_proxy (대소 문자 구분)가 무언가를합니다. 설정하지 않으면 첫 번째 단계에서 실패합니다. 환경 변수를 설정하면 효과가있는 것 같습니다. 내 보내지 않으면 실패합니다

    TCRKVMW ~ $ sudo su -
    TCRKVMW ~ # export http_proxy=http://10.54.0.4:8080/
    TCRKVMW ~ # export https_proxy=http://10.54.0.4:8080/
    TCRKVMW ~ # add-apt-repository ppa:webupd8team/java
    You are about to add the following PPA:
     Oracle Java (JDK) Installer (automatically downloads and installs Oracle JDK7 / JDK8 / JDK9). There are no actual Java files in this PPA.
    

    (나머지는 성공합니다-이번)

문제는 때로는 중단되어 일반적인 시간 초과 메시지로 끝나는 것입니다. PPA를 추가 할 수 없습니다 : ' " https://launchpad.net/api/1.0/~webupd8team/+archive/java를 읽는 중 오류 발생 : (7,' launchpad.net 포트 443에 연결하지 못했습니다 : 연결 시간이 초과되었습니다 ') "'.

...하지만 나는 바람을 피우고 있습니다.이 모든 것을 루트로하고 있습니다. 쉬운 해결책은 / etc / profile을 편집하거나 Ubuntu / Mint에서 /etc/profile.d에 스크립트를 추가하는 것입니다.

    TCRKVMW ~ $ sudo su -c 'F=/etc/profile.d/proxy.sh S="export proxy_http=\"http://192.168.99.4\"\nexport proxy_https=\"http://192.168.99.4\"" ; echo -e ${S} > ${F} ; chmod 700 ${F}'

아, 그래, 컬 (apt-add-repository에 의해 사용되는)에 관한 것도 있습니다. 매뉴얼은 홈 디렉토리에 .curlrc를 추가하라고 말합니다. apt-add-directory는 루트 자체이므로 /root/.curlrc에 추가하는 것을 의미합니다.

    proxy_http="http://192.168.99.4"
    proxy_https="http://192.168.99.4"

좋은 생각은 자신의 ~ / .curlrc에서 동일한 작업을 수행하는 것입니다

또한 / etc / wgetrc에서 프록시를 활성화하는 것은 좋은 일입니다. 질문과 관련이 없지만 Google에 다른 검색을 저장하고 있습니다 (이를 읽으면 프록시로 여러 개가 있습니다) ) ...


1

이런 식으로 /etc/apt/apt.conf.d/01proxy추가

Acquire::http { Proxy "http://192.168.0.99:3142"; };

이것은 모든 적성 다운로드 를 프록시 하지만 백엔드 에서이 작업을 수행하는 유일한 방법이라고 생각합니다. 프록시가 지원하는 경우 http://my.proxy:port/www.target.site.com/url내가 작동 하는 URL을 사용할 수도 있습니다apt-cache-ng

나는 추가 쉽다 - 저장소 itsself 이러한 설정을 사용하는 경우 확실하지 않다,하지만 당신은 그 일을 할 수없는 경우, 당신은 항상에 저장소를 추가 할 수 있습니다 /etc/apt/sources.list또는/etc/apt/sources.list.d/*mytoolchain*

11.10 이후 메인 리포지토리에는 크로스 툴체인 기능이 있습니다 apt-get install gcc-arm-linux-gnueabihf. emdebian에서 제공하는 크로스 툴체인도 있으며 여기에 몇 가지 지침이 있습니다. http://gsoc.sitedethib.com/posts/apt-get_install_gcc-4.7-arm-linux-gnueabihf/


user72421 : 프록시에 다른 번호가 아닌 01을 접두어로 사용해야한다는 것을 어떻게 알았습니까?
jgomo3

apt-get & keyserver와 작동하지 않습니다
Vik

1

내가하는 일은 apt-key 또는 gpg를 프록시하려고하는 대신 curl을 통해 http를 사용하는 것입니다.

curl -sSL \ ' http: //keyserver.ubuntu.com/pks/lookup?op=get&search=0xBBEBDCB318AD50EC6865090613B00F1FD2C19886 '\ | sudo apt-key add-

이 방법은 대신 사용해야합니다 apt-key명령 줄이나 http_proxy또는 https_proxy(APT 키의 최신 버전을 사용할 수 없습니다) 환경 변수 설정.


0

터미널에서 아래 명령을 실행하십시오.

export http_proxy=http://username:password@proxyserver.net:port/
export ftp_proxy=http://username:password@proxyserver.netport/

0

시스템 전체 환경 변수를 실제로 /etc/environment(use sudo또는 gksu)에 추가해야 하지만보고 된 오류는 gpg 데이터를 찾을 수 없음을 나타냅니다. 아이디어 :

  • 프록시 설정 확인 (액세스 권한이있는 경우)
  • 프록시가 어떻게 암호화 된 트래픽의 출력을 제거하는지 확인하십시오.
  • 연속 netstat를 실행하여 프록시에 실제로 연결되어 있는지 확인하십시오.
  • 최후의 수단은 wireshark에서 tcpdump하고 검사하는 것입니다.
  • http 터널을 사용해보십시오;)

0

또 다른 해결책은 APT proxy.conf파일 을 추가하는 것입니다 ./etc/apt/apt.conf.d/proxy.conf

Acquire::http::Proxy "http://your.proxy.server.here.com:port/";
Acquire::https::Proxy "http://your.proxy.server.here.com:port/";
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.