Estoy tratando de agregar el repositorio de ppa (como raíz) con el siguiente 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')
Lamentablemente no funciona. Parece que curl se está conectando al proxy, pero el proxy dice que se requiere autenticación. He intentado con .curlrc, http_proxy env en su lugar, pero no 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\
¿Quizás es porque hay un signo @ en el nombre de usuario? Wget funciona con proxy bien.
Relacionado: ¿Cómo agrego un repositorio detrás de un proxy?
Ambiente
Ubuntu 12.04
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
Características del rizo: GSS-Negotiate IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP
ACTUALIZAR
Cuando se agregan credenciales a .curlrc
cat ~/.curlrc
proxy = 165.x.x.232:8080
proxy-user = [email protected]:mypass0
Parece funcionar para el rizo liso .
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
También 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
Pero aún no funciona cuando se agrega el certificado ppa.
pycurl.error: (56, 'Received HTTP code 407 from proxy after CONNECT')
CABEZALES DE RIZO
Encabezados 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
Respuesta:
HTTP/1.1 200 Connection established
CABEZAS DE PIEL
Encabezados 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
Respuesta:
HTTP/1.1 407 Proxy Authentication Required
Proxy-Authenticate: BASIC realm="proxy"
Parece que PyCURL no reenvía ninguna Autorización cuando se solicita.
Respuestas:
Solución alternativa si
apt-get
aún funciona detrás del proxy/etc/apt/sources.list
Agregar fuentes manualmente
Creo que en launchpad.net cada ppa todavía contiene una pequeña descripción de cómo agregar fuentes manualmente. El sitio de launchpad para su ppa mencionado
ppa:nilarimogard/webupd8
es https://launchpad.net/~nilarimogard/+archive/webupd8 . Si se desplaza hacia abajo, verá una etiqueta expandible Detalles técnicos sobre este PPA . Si lo expande, encontrará la descripción de cómo agregar fuentes manualmente. Agregue las siguientes líneas a mencionado/etc/apt/sources.list
Por supuesto, tiene que ajustar quantal a cualquier versión que esté utilizando actualmente.
Agregar la clave de firma
La descripción también contiene una clave de firma . Esto es importante, para que su sistema siempre pueda verificar que realmente tiene acceso a una dirección ppa confiable. En el caso de su ppa que es
1024R/4C9D234C
(también se puede encontrar en Detalles técnicos sobre este PPA ), donde el número detrás de la barra es importante. Puede agregar la huella digital a través delapt-key
programa. Por lo general, realizarías el siguiente comandoAgregar si
apt-key
no funciona a través del proxyComo ya tuvo problemas con el
add-apt-repository
programa, esto podría no funcionar tampoco. Entonces, en su lugar, puede descargar y agregar la clave de 1024 bits manualmente. Siwget
funciona, puede hacerlo en un solo paso.De lo contrario, sea seguro " http://keyserver.ubuntu.com:11371/pks/lookup?op=get&search=0x531EE72F4C9D234C ", por ejemplo,
/path/key
y úselosudo apt-key add /path/key
para agregarlo.Cerrar con lo habitual
Luego, debe actualizar la información del repositorio
apt-get update
y luego debería poder descargar los paquetes.Recursos
Mi favorito personal sobre cómo usar el mecanismo de empaquetado (lamentablemente en alemán): http://wiki.ubuntuusers.de/Paketquellen_freischalten/PPA
La versión de launchpad también menciona todos los puntos importantes: https://help.launchpad.net/Packaging/PPA/InstallingSoftware
Dado que es atípico para usar apt-key de la manera descrita sólo he encontrado la información en las páginas del manual,
man apt-key
.Respuesta relacionada que describe más o menos la forma estándar de instalar ppa's manualmente: /ubuntu//a/38029/128349
fuente
En realidad, parece ser mucho más fácil que la respuesta publicada anteriormente. Solo necesita "sudo" para saber que está detrás de un proxy y funcionará sin esfuerzo. Para hacer esto, debe exportar su proxy
http
yhttps
la forma en que generalmente lo hace:y luego agregar
Defaults env_keep="https_proxy"
al final del/etc/sudoers
archivo. Después de esto, debería poder agregar el ppa usando el comando:sudo add-apt-repository ppa:the_ppa_you_want_to_add
o usar
si no quieres modificar el
/etc/sudoers
archivo. La-E
opción exporta variables de entorno al usuario sudo.He dado una descripción detallada sobre esto aquí en mi blog .
fuente
Asegúrese de que el proxy apt esté configurado como a continuación
agregue la siguiente configuración de proxy y guarde el archivo
Además, exportar siguiendo en la Terminal antes de ejecutar el comando
Esto debería funcionar.
fuente