Não consigo adicionar repositório PPA por trás do proxy

13

Estou tentando adicionar o repositório ppa (como root) com o seguinte comando:

export HTTP_PROXY="http://[email protected]:[email protected]:8080"
add-apt-repository ppa:nilarimogard/webupd8


Traceback (most recent call last):
  File "/usr/bin/add-apt-repository", line 125, in <module>
    ppa_info = get_ppa_info_from_lp(user, ppa_name)
  File "/usr/lib/python2.7/dist-packages/softwareproperties/ppa.py", line 84, in get_ppa_info_from_lp
    curl.perform()
pycurl.error: (56, 'Received HTTP code 407 from proxy after CONNECT')

Infelizmente isso não funciona. Parece que o curl está se conectando ao proxy, mas o proxy diz que a autenticação é obrigatória. Eu tentei com .curlrc, http_proxy env em vez disso, mas não funciona.

strace -e network,write -s1000 add-apt-repository ppa:nilarimogard/webupd8
socket(PF_INET6, SOCK_DGRAM, IPPROTO_IP) = 4
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("165.x.x.232")}, 16) = -1 EINPROGRESS (Operation now in progress)
getsockopt(4, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
getpeername(4, {sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("165.x.x.232")}, [16]) = 0
getsockname(4, {sa_family=AF_INET, sin_port=htons(46025), sin_addr=inet_addr("161.20.75.220")}, [16]) = 0
sendto(4, "CONNECT launchpad.net:443 HTTP/1.1\r\nHost: launchpad.net:443\r\nUser-Agent: PycURL/7.22.0\r\nProxy-Connection: Keep-Alive\r\nAccept: application/json\r\n\r\n", 146, MSG_NOSIGNAL, NULL, 0) = 146
recvfrom(4, "HTTP/1.1 407 Proxy Authentication Required\r\nProxy-Authenticate: BASIC realm=\"proxy\"\r\nCache-Control: no-cache\r\nPragma: no-cache\r\nContent-Type: text/html; charset=utf-8\r\nProxy-Connection: close\r\nSet-Cookie: BCSI-CS-91b9906520151dad=2; Path=/\r\nConnection: close\

Talvez seja porque existe @ sinal no nome de usuário? O Wget trabalha com proxy bem.

Relacionado: Como eu adiciono um repositório por trás de um proxy?

Ambiente

Ubuntu 12.04

curl 7.22.0 (x86_64-pc-linux-gnu) libcurl / 7.22.0 OpenSSL / 1.0.1 liblb / 1.2.3.4 libidn / 1.23 librtmp / 2.3

Curl Características: GSS-Negociar IDN IPv6 Largefile NTLM NTLM_WB libz SSL TLS-SRP

UPDATE

Quando adicionadas credenciais em .curlrc

cat ~/.curlrc 
proxy = 165.x.x.232:8080
proxy-user = [email protected]:mypass0

Parece funcionar para o ondulação simples .

curl www.google.com | head

* Proxy auth using Basic with user '[email protected]'
GET HTTP://www.google.com HTTP/1.1
Proxy-Authorization: Basic cmFmYWwud2llY3pvcmVrQHVi...3R0RDA=
HTTP/1.1 302 Found

também HTTPS:

curl -v https://www.google.com | head
* Establish HTTP proxy tunnel to www.google.com:443
* Proxy auth using Basic with user '[email protected]'
> CONNECT www.google.com:443 HTTP/1.1
> Host: www.google.com:443
> Proxy-Authorization: Basic cmFmYWwud2llY3pvcmVrQHVi...3R0RDA=
    > User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1     zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Proxy-Connection: Keep-Alive
< HTTP/1.1 200 Connection established
* Proxy replied OK to CONNECT request
* successfully set certificate verify locations

Mas ainda não funciona ao adicionar o certificado ppa.

pycurl.error: (56, 'Received HTTP code 407 from proxy after CONNECT')

CURL HEADERS

Cabeçalhos enviados:

CONNECT launchpad.net:443 HTTP/1.1
Host: launchpad.net:443
Proxy-Authorization: Basic cGVvcGxlcmVhbGx5c2hvdWxkQHNhbml0aXplcG9zdHM=
User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
Proxy-Connection: Keep-Alive

Responder:

HTTP/1.1 200 Connection established

PyCURL HEADERS

Cabeçalhos enviados:

CONNECT launchpad.net:443 HTTP/1.1
Host: launchpad.net:443
User-Agent: PycURL/7.22.0
Proxy-Connection: Keep-Alive
Accept: application/json

Responder:

HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: BASIC realm="proxy"

Parece que o PyCURL não reenvia nenhuma autorização quando solicitado.

    
por kenorb 05.11.2012 / 12:10

3 respostas

9

Solução alternativa se apt-get ainda funcionar atrás do proxy

  • adicione fontes manualmente a /etc/apt/sources.list
  • adicionar chave gpg

Adicionando fontes manualmente

Eu acho que no launchpad.net cada ppa ainda contém uma pequena descrição de como adicionar fontes manualmente. O site da barra de lançamento para o seu ppa ppa:nilarimogard/webupd8 mencionado é o link . Se você rolar para baixo, verá um rótulo expansível Detalhes técnicos sobre esse PPA . Se você expandi-lo, você encontrará a descrição de como adicionar fontes manualmente. Adicione as seguintes linhas ao mencionado /etc/apt/sources.list

deb http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu quantal main 
deb-src http://ppa.launchpad.net/nilarimogard/webupd8/ubuntu quantal main 

É claro que você precisa ajustar o quantal para qualquer versão que esteja usando no momento.

Adicionando a chave de assinatura

A descrição também contém uma chave de assinatura . Isso é importante, para que seu sistema possa sempre verificar se você realmente acessa um endereço ppa confiável. No caso do seu ppa que é 1024R/4C9D234C (também pode ser encontrado em Detalhes técnicos sobre este PPA ), onde o número por trás da barra é importante. Você pode adicionar a impressão digital por meio do programa apt-key . Normalmente você executaria o seguinte comando

 sudo apt-key adv --recv-keys --keyserver keyserver.ubuntu.com 4C9D234C

Adicionando se apt-key não funciona por meio de proxy

Como você já teve problemas com o programa add-apt-repository , isso também pode não funcionar. Então, ao invés disso, você pode baixar e adicionar a chave 1024 Bit manualmente. Se wget funcionar, você pode fazer isso em uma única etapa.

wget "http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x531EE72F4C9D234C" -O out && sudo apt-key add out && rm out

Caso contrário, é seguro " link " em, por exemplo /path/key e use sudo apt-key add /path/key para adicioná-lo.

Fechar com o habitual

Depois você tem que atualizar as informações do repositório apt-get update e então você deve ser capaz de baixar os pacotes.

Recursos

Meu favorito pessoal sobre como usar o mecanismo de empacotamento (infelizmente em alemão): link

A versão do launchpad também menciona todos os pontos importantes: link

Como é atípico usar o apt-key da maneira descrita, eu só encontrei as informações nas man pages, man apt-key .

Resposta relacionada que descreve basicamente a maneira padrão de instalar o ppa manualmente: link

    
por LeoR 05.02.2013 / 00:11
6

Na verdade, parece ser muito mais fácil do que a resposta postada anteriormente. Você só precisa de "sudo" para saber que está atrás de um proxy e funcionará sem esforço. Para fazer isso, você precisa exportar seu proxy para http e https da maneira que você costuma fazer:

export http_proxy=http://username:password@host:port/
export https_proxy=https://username:password@host:port/

e, em seguida, adicione Defaults env_keep="https_proxy" ao final do arquivo /etc/sudoers . Depois disso você deve poder adicionar o ppa usando o comando:

sudo add-apt-repository ppa:the_ppa_you_want_to_add

ou use

sudo -E add-apt-repository ppa:the_ppa_you_want_to_add

se você não quiser modificar o arquivo /etc/sudoers . A opção -E exporta variáveis de ambiente para o usuário sudo.

Eu dei uma descrição detalhada sobre este aqui no meu blog .

    
por jobin 27.09.2013 / 16:29
1

Certifique-se de que o apt proxy esteja definido como abaixo

sudo vi /etc/apt/apt.conf

adicione as seguintes configurações de proxy e salve o arquivo

Acquire::http::proxy "http ://proxy.company.com:port/";
Acquire::https::proxy "https ://proxy.company.com:port/";
Acquire::ftp::proxy "ftp://proxy.company.com:port/";

além da exportação seguinte no Terminal antes de executar o comando

export http_proxy=http ://proxy.company.com:port/
export https_proxy=https ://proxy.company.com:port/

Isso deve funcionar.

    
por Manjula 25.07.2016 / 14:38