¿Cómo hago para que add-apt-repository funcione a través de un proxy?

109

Intento seguir las instrucciones de "Instalar Cross Toolchain en Ubuntu 10.04 (Lucid) y 10.10 (Maverick) Hosts" en wiki.linaro.org (en mi Ubuntu 10.04 VM). El primer paso es:

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

Pero cuando corro eso, obtengo:

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

Supongo que el problema está en mi configuración para el servidor proxy de mi empleador, particularmente para HTTPS.

Cuando abrí enlace en Firefox, obtuve "La conexión ha expirado. ". Luego fui a las Preferencias de Firefox - & gt; Avanzado - & gt; Red - & gt; Configuraciones ... y establezca HTTP Proxy en "puerta de enlace" y Puerto en 8080, y marque "Usar este servidor proxy para todos los protocolos". Luego la página cargó. Esto apoya mi teoría.

Intenté configurar las variables de entorno http_proxy y https_proxy (tanto en mayúsculas como en 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

También intenté cambiarlos a:

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

Intenté agregar esta segunda línea a /etc/apt/apt.conf:

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

Pero continúo recibiendo el mismo error.

¿Cómo puedo solucionar este problema?

Actualización: seguí las instrucciones en respuesta aceptada a " Problema al agregar repositorios y conectarse desde la terminal detrás de un proxy " y obtener más información:

$ 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

Me pregunto si el "error de búsqueda de HTTP" significa que también necesito agregar "Predeterminado env_keep = http_proxy" a /etc/sudoers ...

Actualización n. ° 2: agregué:

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

... como en Comentario 18 para la falla 516032 , pero sigo recibiendo el mismo error "gpgkeys: HTTP fetch error 7: could not connect to host"

Y esto es curioso:

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

... porque http_proxy no está allí.

Cualquier consejo es apreciado.

Actualización n. ° 3: dado que el host de mi máquina virtual es una computadora portátil, me lo llevé a casa y probé allí (sin proxy):

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

Funcionó. Entonces, el problema está relacionado con la configuración del proxy. Pero supongo que tengo una solución alternativa.

    
pregunta Daryl Spitzer 15.07.2011 - 02:49

13 respuestas

162

Además de configurar proxies, indique sudo para preservar el entorno con la opción -E :

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

con nombre de usuario y contraseña:

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

Use el siguiente código en una terminal para agregar la clave gpg detrás del proxy,

sudo apt-key adv --keyserver-options http-proxy=http://USER:[email protected]_URL:PORT/ --keyserver keyserver.ubuntu.com --recv-keys GPG_KEY

Y reemplace las letras mayúsculas en consecuencia. Si está utilizando un proxy sin autenticación de usuario (es decir, nombre de usuario y contraseña), use http-proxy=http://PROXY_URL:PORT/ en su lugar.

Por ejemplo, para tener GPG_KEY=C2514567EEA14886 puede usar,

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

donde,

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

Si no tiene autenticación de usuario, simplemente use

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

¡Por fin! Debes establecer https_proxy a través de:

export https_proxy=....

solo establecer http_proxy no es suficiente.

Y necesitaba ejecutar el comando add-apt-repository como root, NO a través de sudo.

Código:

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

Parece que la configuración del proxy está configurada, pero de alguna manera el servidor no puede ser contactado ...

Tuve un problema muy similar que resolví así: El proxy corporativo solo permite el acceso al puerto 80 y 443 por razones de seguridad, por lo que cuando se configura, dado que el protocolo HKP está utilizando el puerto 11371, no le permitirá pasar.

Por lo tanto, a excepción de SSH-out y obtener la clave de uno de sus servidores, descargarla e instalarla localmente, puede especificar el servidor de claves de entre los enumerados a continuación y especificar el puerto:

enlace

por ejemplo:

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

Boom, Voila!

    
respondido por el leroyse 26.07.2013 - 11:40
3

El motivo por el cual su sudoers cambio no funcionó como se esperaba es que en lugar de:

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

Deberías haber escrito:

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

También asegúrese de que el espacio entre Defaults y env_keep sea una pestaña cada vez.

    
respondido por el Urhixidur 21.01.2015 - 20:38
3

Logré solucionar esto editando /usr/lib/python3/dist-packages/softwareproperties/ppa.py y agregando

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

en la siguiente línea

"--keyserver", self.keyserver,

Más información de contexto

ppa.py es la secuencia de comandos python que utiliza add-apt-repository para llamar a gpg. A veces parece haber un error con gpg donde no usa la variable de entorno http_proxy. Esto se puede confirmar viendo el archivo /root/.gnupg/dirmngr.conf y comprobando que honor-http-proxy no esté comentado.

    
respondido por el Junior Leota 05.07.2017 - 21:56
1

Esto me ayudó:

sudo https_proxy='https://user:[email protected]:port/' \
http_proxy='http://user:[email protected]:port/' \
ftp_proxy='ftp://user:[email protected]:port/' \
no_proxy=localhost,127.0.0.0/8,10.0.0.0/8 add-apt-repository ppa:webupd8team/java

Supongo que hay algunas variables de entorno que no son necesarias en el comando, pero que no dañan.

    
respondido por el leo 13.06.2014 - 18:48
1

Agregue el PPA manualmente a su /etc/apt/sources.list :

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

Guarde el archivo y ejecute sudo apt-get update . Este error podría 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

Ejecute el siguiente comando para aceptar la clave del PPA, sin olvidar cambiar la clave (5BB92C09DB82666C) para el PPA correspondiente.

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

Ejecute sudo apt-get update y listo.

Ref: Cómo agregar las PPA de Launchpad en Debian A través de add-apt-repository Comando

    
respondido por el Ajoy 06.04.2017 - 09:27
1

En realidad, me encuentro con los mismos problemas, así es como encontré esta página.

  • las variables de entorno http_proxy (sensible a mayúsculas) y https_proxy (en cualquier caso) hacen algo. No establecerlos falla en la primera etapa, la configuración de las variables de entorno parece tener algún efecto; fallará si no los exportas

    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.
    

    (el resto es exitoso, esta vez)

La cosa es que, a veces, simplemente se atasca y termina con el mensaje de tiempo de espera habitual:         No se puede agregar el PPA: '"Error al leer enlace : (7,' Error al conectarse al launchpad. puerto de red 443: tiempo de espera agotado de la conexión ') "'.

... pero estoy haciendo trampa, estoy haciendo todo esto como root. Una solución fácil es editar / etc / profile o, en Ubuntu / Mint, simplemente agregar un script en /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}'

Oh, sí, también hay algo sobre curl (que es utilizado por apt-add-repository, por cierto). El manual dice que agregue .curlrc en su directorio personal. Como apt-add-directory es el propio de root, significa agregarlo a /root/.curlrc:

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

Una buena idea es hacer lo mismo en tu propio ~ / .curlrc

Además, habilitar el proxy en / etc / wgetrc es algo bueno que hacer, aunque no tiene nada que ver con la pregunta, solo te guardo otra búsqueda en Google (si lees esto, tienes múltiples con un proxy) ...

    
respondido por el Marabiloso 04.10.2017 - 18:31
1

Este enfoque de cuatro pasos funcionó para mí en una VM Ubuntu 17.04 detrás de un proxy corporativo.

  1. sudo apt-add-repository ppa:brightbox/ruby-ng y deja que falle
  2. sudo apt update y busca un mensaje de error 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 ahora funcionará

Tenga en cuenta que la VM del host ejecuta un servidor proxy CNTLM en el puerto 3128.

    
respondido por el thegreendroid 14.12.2017 - 04:28
0

Ejecute el siguiente comando en la terminal

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

Las variables de entorno de todo el sistema deberían agregarse realmente a /etc/environment (use sudo o gksu ), pero el error que se le informa parece indicar que no se encontraron datos de gpg. Ideas:

  • comprueba la configuración del proxy (si tienes acceso)
  • verifica si el proxy está de alguna manera afectando la salida del tráfico encriptado.
  • ejecuta un netstat continuo para ver si la conexión con el proxy se está realizando de hecho
  • el último recurso sería tcpdump & amp; inspeccionar en wireshark
  • prueba un túnel http;)
respondido por el t0m5k1 29.08.2011 - 23:04
0

En /etc/apt/apt.conf.d/01proxy agrega algo como esto

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

Esto sustituirá todas las descargas de aptitudes, pero creo que esta es la única forma de hacerlo en el back-end. Si tu proxy lo admite, también puedes usar una URL como http://my.proxy:port/www.target.site.com/url que sé que funciona para apt-cache-ng

No estoy seguro de si add-apt-repository usa esta configuración, pero si no puede hacerlo, siempre puede agregar el repositorio a su /etc/apt/sources.list o /etc/apt/sources.list.d/*mytoolchain*

Desde 11.10 también hay una herramienta cross-chats disponible en el repositorio principal, solo apt-get install gcc-arm-linux-gnueabihf . También hay cross-toolchains disponibles de emdebian, y algunas instrucciones aquí: enlace

    
respondido por el user72421 27.07.2012 - 19:08

Lea otras preguntas en las etiquetas