Como obtenho o add-apt-repository para trabalhar através de um proxy?

111

Estou tentando seguir as instruções "Instalando o Cross Toolchain no Ubuntu 10.04 (Lucid) e 10.10 (Maverick)" em wiki.linaro.org (no meu Ubuntu 10.04 VM). O primeiro passo é:

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

Mas quando eu corro, recebo:

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

Eu estou supondo que o problema é com minha configuração para o servidor proxy do meu empregador, especialmente para HTTPS.

Quando abri o link no Firefox, recebi "A conexão expirou ". Então entrei no Firefox Preferences - > Avançado - > Rede - > Configurações ... e defina o Proxy HTTP para "gateway" e porta para 8080 e marque "Usar este servidor proxy para todos os protocolos". Então a página carregada. Isso suporta minha teoria.

Eu tentei definir as variáveis de ambiente http_proxy e https_proxy (maiúsculas e minúsculas):

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

Eu também tentei alterá-los para:

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

E eu tentei adicionar esta segunda linha ao /etc/apt/apt.conf:

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

Mas continuo recebendo o mesmo erro.

Como faço para solucionar isso?

Atualização: Eu segui as instruções no resposta aceita para " Problema ao adicionar repositórios e conectar-se do terminal atrás de um proxy " e ir além:

$ 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

Gostaria de saber se o "erro de busca HTTP" significa que também preciso adicionar "Defaults env_keep = http_proxy" a /etc/sudoers ...

Atualização # 2: eu adicionei:

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

... como em Comentário 18 para bug 516032 , mas eu ainda recebo o mesmo erro "gpgkeys: HTTP buscar erro 7: não consegui conectar ao host".

E isso é curioso:

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

... porque o http_proxy não está lá.

Qualquer conselho é apreciado.

Atualização # 3: Como o host da minha VM é um laptop, levei para casa e tentei lá (sem proxies):

$ 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)

Funcionou. Então, o problema está relacionado à configuração do proxy. Mas suponho que tenho uma solução alternativa.

    
por Daryl Spitzer 15.07.2011 / 02:49

13 respostas

165

Além de configurar proxies, informe sudo para preservar o ambiente com a opção -E :

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

com nome de usuário e senha:

export https_proxy=https://<username>:<password>@<proxy>:<port>
    
por Amal Pillai 08.02.2012 / 12:49
37

Use o seguinte código em um terminal para adicionar a chave gpg por trás do proxy

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

E substitua as letras maiúsculas de acordo. Se você estiver usando um proxy sem nenhuma autenticação de usuário (por exemplo, nome de usuário e senha), use http-proxy=http://PROXY_URL:PORT/ .

Por exemplo, para ter GPG_KEY=C2514567EEA14886 você pode usar,

sudo apt-key adv --keyserver-options http-proxy=http://user:[email protected]:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886

onde

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

Se você não tem autenticação de usuário, basta usar

sudo apt-key adv --keyserver-options http-proxy=http://10.10.2.21:3128/ --keyserver keyserver.ubuntu.com --recv-keys C2514567EEA14886
    
por Patxi Gomez 06.02.2013 / 19:04
8

Finalmente! Você precisa definir https_proxy via:

export https_proxy=....

apenas o conjunto http_proxy não é suficiente.

E eu precisava executar o comando add-apt-repository como root, NÃO via sudo.

Código:

sudo su
add-apt-repository ppa:........
    
por DaRattler 14.10.2011 / 11:55
6

Parece que a configuração do proxy está configurada, mas de alguma forma o servidor não pode ser contatado ...

Eu tive um problema muito semelhante que resolvi assim: O proxy corporativo permite apenas as portas 80 e 443 por motivos de segurança, portanto, quando for configurado, já que o protocolo HKP está usando a porta 11371, ele não permitirá que você passe.

Portanto, com falta de SSH-out e obtendo a chave de um de seus servidores externos, baixando-a e instalando-a localmente, você pode especificar o servidor de chaves entre os listados abaixo e especificar a porta:

link

por exemplo:

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

Boom, Voila!

    
por leroyse 26.07.2013 / 11:40
3

A razão pela qual sua alteração de sudoers não funcionou como esperado é que, em vez de:

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

Você deveria ter escrito:

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

Verifique também se o espaço entre Defaults e env_keep é uma guia a cada vez.

    
por Urhixidur 21.01.2015 / 20:38
3

Eu consegui contornar isso editando /usr/lib/python3/dist-packages/softwareproperties/ppa.py e adicionando

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

na seguinte linha

"--keyserver", self.keyserver,

Mais informações básicas

ppa.py é o script python usado por add-apt-repository para chamar o gpg. Às vezes parece haver um bug com gpg onde ele não usa a variável de ambiente http_proxy. Isso pode ser confirmado visualizando o arquivo /root/.gnupg/dirmngr.conf e verificando se honor-http-proxy não está comentado.

    
por Junior Leota 05.07.2017 / 21:56
1

Isso me ajudou:

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

Acho que existem algumas variáveis de ambiente que não são necessárias no comando, mas não causam danos.

    
por leo 13.06.2014 / 18:48
1

Adicione o PPA manualmente ao seu /etc/apt/sources.list :

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

Salve o arquivo e execute sudo apt-get update . Este erro pode aparecer:

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

Execute o seguinte comando para aceitar a chave do PPA, lembrando-se de alterar a chave (5BB92C09DB82666C) para o PPA correspondente.

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

Execute sudo apt-get update e pronto.

Ref: Como adicionar PPAs do Launchpad no Debian Via add-apt-repository Command

    
por Ajoy 06.04.2017 / 09:27
1

Na verdade, me deparo com os mesmos problemas, foi assim que encontrei esta página.

  • variáveis de ambiente http_proxy (case sensitive) e https_proxy (qualquer que seja o caso) fazem alguma coisa. Não configurá-los falha no primeiro estágio, definindo que as variáveis de ambiente parecem ter algum efeito; ele falhará se você não exportá-los

    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.
    

    (o resto é bem sucedido - desta vez)

A coisa é, às vezes, apenas ficar preso e termina com a mensagem de tempo limite usual:         Não é possível adicionar PPA: '"Erro ao ler o link : (7,' Falha ao conectar-se ao launchpad. porta net 443: conexão esgotada ') "'.

... mas estou trapaceando, estou fazendo tudo isso como root. Uma solução fácil é editar / etc / profile ou, no Ubuntu / Mint, apenas adicionar um script em /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}'

Ah, sim, também tem aquela coisa sobre curl (que é usada pelo apt-add-repository, a propósito). O manual diz para adicionar .curlrc no seu diretório home. Como o apt-add-directory é próprio da raiz, significa adicioná-lo ao /root/.curlrc:

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

Uma boa ideia é fazer o mesmo em seu próprio ~ / .curlrc

Além disso, ativar o proxy em / etc / wgetrc é uma boa coisa a fazer, embora não tenha nada a ver com a pergunta, estou apenas salvando outra pesquisa no Google (se você ler isso, você terá vários com um proxy) ...

    
por Marabiloso 04.10.2017 / 18:31
1

Essa abordagem de quatro etapas funcionou para mim em uma VM Ubuntu 17.04 por trás de um proxy corporativo.

  1. sudo apt-add-repository ppa:brightbox/ruby-ng e deixe falhar
  2. sudo apt update e procure uma mensagem de erro como 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 agora funcionará

Observe que a VM do host está executando um servidor proxy CNTLM na porta 3128.

    
por thegreendroid 14.12.2017 / 04:28
0

Execute o comando abaixo no terminal

export http_proxy=http://username:[email protected]:port/
export ftp_proxy=http://username:[email protected]/
    
por Deepak Rajput 08.02.2012 / 08:05
0

Variáveis de ambiente do sistema devem ser realmente adicionadas a /etc/environment (use sudo ou gksu ), mas o erro relatado a você parece indicar que nenhum dado gpg foi encontrado. Idéias:

  • verifique as configurações de proxy (se você tiver acesso)
  • verifique se o proxy está, de algum modo, alterando a saída do tráfego criptografado.
  • executa um netstat contínuo para ver se a conexão com o proxy está sendo feita de fato
  • último recurso seria tcpdump & amp; inspecionar em wireshark
  • tente um túnel http;)
por t0m5k1 29.08.2011 / 23:04
0

Em /etc/apt/apt.conf.d/01proxy adicione algo como isto

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

Isso fará o proxy all de downloads de aptitude, mas acho que essa é a única maneira de fazer isso no backend. Se o seu proxy o suportar, você também pode usar uma URL como http://my.proxy:port/www.target.site.com/url , que eu sei que funciona para apt-cache-ng

Não tenho certeza se o próprio add-apt-repository usa essas configurações, mas se você não puder fazer isso funcionar, sempre poderá adicionar o repositório ao seu /etc/apt/sources.list ou /etc/apt/sources.list.d/*mytoolchain*

Desde o 11.10, há também uma ferramenta cruzada no repo principal, apenas apt-get install gcc-arm-linux-gnueabihf . Há também os cross-toolchains disponíveis no emdebian, e algumas instruções aqui: link

    
por user72421 27.07.2012 / 19:08