Configurar proxy para APT?

72

Necesito configurar el proxy. No había ningún apt.confarchivo etc/apt/así que lo he creado usando nano.

Pero no entiendo lo que necesito escribir allí. He escrito http_proxy = http://lgn:[email protected]:8080/allí y luego reinicié networking. Pero cuando lo intento apt-get update, no funciona.

En realidad, no entiendo qué puerto e ip debería escribir en el apt.confarchivo (había un ejemplo con 192.168.1.254ip y 8080puerto, así que decidí usarlos).

lapots
fuente
Hay un cambio en la configuración del proxy para obtener trabajo en el proxy corporativo en ubuntu, visite github.com/navinas33/docker_ubuntu.git funciona ...
Navin como

Respuestas:

103

Para usar un proxy, necesita un servidor proxy. La IP y el puerto deben ser de este servidor proxy. Iniciar sesión y pwd debe ser su usuario y contraseña en el servidor proxy (si el proxy requiere iniciar sesión).

Desde el sitio help.ubuntu.com :

Método de archivo de configuración APT

Este método utiliza el archivo apt.conf que se encuentra en su directorio / etc / apt /. Este método es útil si solo desea que apt-get (y no otras aplicaciones) use un proxy HTTP de forma permanente.

En algunas instalaciones no habrá un archivo apt-conf configurado. Edite el archivo apt-conf (o cree uno nuevo si aún no tiene ninguno) utilizando el editor que prefiera.

sudo nano /etc/apt/apt.conf

Agregue esta línea a su archivo /etc/apt/apt.conf (sustituya sus datos por su dirección de proxy y puerto de proxy).

Acquire::http::Proxy "http://yourproxyaddress:proxyport";

Guarde el archivo apt.conf.

Si su proxy necesita un nombre de usuario / contraseña, sustituya:

"http://yourproxyaddress:proxyport";

con:

"http://username:password@yourproxyaddress:proxyport";

utilizando nombre de usuario y contraseña del servidor proxy.

Laurent
fuente
66
/etc/apt/apt.conf.d/Es preferible agregar un archivo local separado para que no tenga que editar los archivos de configuración básicos del sistema. De esa manera, si se actualizan en una versión de paquete posterior, no tiene que combinar sus cambios locales a mano.
tripleee
¿Hay un archivo proxy conf en el directorio de usuario?
becko
Esta respuesta necesita una actualización: gksudo está obsoleto. Considere sugerir otro editor que no sea GUI o en sudo -Hlugar de gksudo si usa gedit o similar.
24

Esta es una respuesta más general junto con apt config.

Como hay muchos lugares para configurar los ajustes del proxy, puede ser confuso al principio. Permítanme resumir algunas cosas y sugerir algunas buenas prácticas.

Para programas de consola

Ej: wget, git y casi todas las aplicaciones de consola que se conectan a internet.

Si desea configurar el proxy cada vez que ejecuta sus comandos por algún motivo, configure las variables de entorno con los siguientes comandos.

export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
export ftp_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/

De lo contrario, si desea usar la misma configuración cada vez para todos los usuarios, entonces use estos.

Configurar en bashrc

$ nano /etc/bash.bashrc
export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
export ftp_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/

Configurar en /etc/environment

$ nano /etc/environment
https_proxy="http://myproxy.server.com:8080/" 
ftp_proxy="http://myproxy.server.com:8080/" ...

Configurar usando GUI

Abra la configuración de red y configure el proxy de red de todo el sistema.

Red -> Proxy de red -> Configurar -> Aplicar en todo el sistema.

Pero esto podría no ser útil si tiene autenticación para el proxy.

Por apto.

Debe realizar un trabajo adicional para apt, ya que, por cierto, apt no obedece a las variables de entorno,

$ nano /etc/apt/apt.conf
Acquire::http::Proxy "http://USERNAME:PASSWORD@SERVER:PORT";
Acquire::https::Proxy "https://USERNAME:PASSWORD@SERVER:PORT";

Para todo lo que esté fuera de este alcance, debe haber una opción para configurar los ajustes del proxy en la aplicación misma. Si no lo siento;)

matrixisreal
fuente
2
la configuración en / etc / environment es muy importante porque si solo configura http_proxy var para su usuario, cuando entra en modo sudo (para cosas como 'sudo apt-get update'), el terminal generalmente no conserva el entorno actual vars; muy importante para probar su configuración: sudo echo $ http_proxy
belun
HTTP_PROXY(en mayúsculas) parece ser el nombre estándar para esa variable, aunque muchos programas recurrirán a la versión en minúsculas. https_proxy(tenga en cuenta las minúsculas) es la mayúscula correcta para eso, pero nunca lo usaría solo, como lo hace en lo /etc/environmentanterior. (Creo que ses un error tipográfico.)
Curt J. Sampson el
¿Cuál es la razón por la cual APT requiere una configuración adicional de proxy? ¿Por qué no obedece simplemente con / etc / environment?
Loreno
22

Algo como lo siguiente debería funcionar:

Acquire::http::proxy "http://lgn:[email protected]:8080/";
Acquire::https::proxy "http://lgn:[email protected]:8080/";
Dennis Kaarsemaker
fuente
¿Hay diferencia qué puerto e ip usar?
lapots
Bueno, sí, debes poner los detalles correctos para el proxy que quieres usar, por supuesto.
Dennis Kaarsemaker
er ... ip: ¿es la ip del enrutador? Me refiero a esta ip que utilicé a modo de ejemplo, pero configuro todos los enrutadores en el navegador usando 192.168.1.1ip. Debería usar .1? ¿y el inicio de sesión y la contraseña deben ser la raíz o el enrutador de ubuntu?
lapots
2
¿Sabes lo que estás haciendo? ¿Cómo sabe que necesita usar un proxy si no conoce los detalles?
Dennis Kaarsemaker
55
Entonces pregúntale a tu maestro. Este no es un sitio de "hacer mi tarea por mí".
Dennis Kaarsemaker
5

Lo que puede hacer también es intentar ejecutar el comando con sudo -E, que tomará la configuración del entorno. Parece que funciona para mí cuando intento actualizar, agregar-apt-repository e instalar. Ejemplo:

sudo -E add-apt-repository ppa:xxxxx

Según @David Foerster, esto solo funciona para la interacción manual usando shell, pero no funcionará en tareas y servicios automatizados que invocan Apt sin la interacción del usuario.

Frank Qiu
fuente
Sin embargo, eso no ayudará con las tareas y servicios automatizados que invocan Apt sin la interacción del usuario.
David Foerster
Gracias por el aviso, agregaré su comentario a la respuesta.
Frank Qiu
2

Si necesita usar apt detrás de un proxy, probablemente todo lo demás también necesita la configuración del proxy. Me gusta administrar mi configuración de proxy en un solo lugar, que sería la variable de entorno.

Para eso creo un /etc/profiles.d/99-proxy.sh, que contiene la configuración de proxy necesaria (como larent descrita):

export http_proxy=http://DOMAIN\USERNAME:PASSWORD@SERVER:PORT/
export https_proxy=$http_proxy
export ftps_proxy=$http_proxy

de esa manera, todos los usuarios en esa máquina tienen acceso al proxy. (no lo olvides chmod a+x)

Cuando usa apt o apt-get como usuario, ese usuario puede usar sudo. Como Frank Qiu describió, sudo no pasa variables de entorno. Para eso puedes agregar

Defaults env_keep += "http_proxy https_proxy ftp_proxy"

a (por ejemplo)

/etc/sudoers.d/00-environment 

o directamente en el

/etc/sudoers

archivo. De esa manera, solo tiene que administrar la configuración del proxy en un solo lugar.

muluman88
fuente
0

La pregunta original podría estar en la dirección equivocada. ¿Creo que quieres configurar un servidor proxy en Linux?

Bueno, eso es completamente diferente a querer usar un proxy existente del entorno Linux.

Si su pregunta es la primera, utilice los servicios de terceros para configurar un servidor proxy en Linux. Un ejemplo podría ser el calamar.

Comandos simples para instalar squid:

$ sudo apt-get install squid3

Luego edite la configuración para permitir la red local (en este caso, su propia máquina). $ sudo vi /etc/squid3/squid.conf

Agregue / edite las siguientes líneas:

http_access allow local_net
acl local_net src 192.168.1.0/255.255.255.0

Suponiendo que su IP para la máquina Linux está en el bloque 192.168.1 / 24.

Neo
fuente
Probablemente la mayoría de los lectores de esta pregunta ya instalaron squid;), también establecieron las http[s]_proxyvariables ENV y ahora se preguntan por qué APT todavía no funciona. Pero si está obteniendo HTTP 403 de todo, excepto de la máquina con squid, busque una vez más todas las apariciones de la palabra denyque no están comentadas. (especialmente con http_accessen la misma línea.
Tomasz Gandor