Hacer que aptitude funcione correctamente a través de un proxy invocado con sudo

Hacer que aptitude funcione correctamente a través de un proxy invocado con sudo

Utilizo Debian 6. Estoy sentado detrás de un proxy, así que configuré Debian para usar ese proxy. La navegación y cualquier actividad HTTP y FTP a través de la GUI funcionan bien.

Quería actualizar mi repositorio de paquetes, así que escribí en un shell:

sudo aptitude

entonces, si intento actualizar el repositorio (presionando 'u'), aptitude se detiene al intentar acceder al servidor FTP de Debian, y esta acción eventualmente expirará.

Pero si lo intenta:

$ su
# aptitude

trabajos de actualización.

¿Cuál es la diferencia entre las dos invocaciones? Las variables de entorno $http_proxyy $ftp_proxyexisten en ambos shells.

Respuesta1

ElsuEl comando inicia otro Shell como root (o quien sea si proporciona un nombre de usuario y una contraseña correcta). Este shell obtiene todas las variables de entorno normales, que por supuesto incluyen las variables HTTP_PROXY y FTP_PROXY. Así funciona.

ElsudoEl comando QUITA TODAS las variables de entorno excepto un subconjunto específicamente elegido... que por supuesto NO incluye las variables HTTP_PROXY y FTP_PROXY, por lo que sus comandos fallan.

Puedes hacersudomantenga las variables *_PROXY editando el archivo de configuración sudoers, usando elvisudocomando (por supuesto).

Agregar lo siguiente harásudomantenga los valores de HTTP_PROXY y FTP_PROXY:

Defaults env_keep += "http_proxy ftp_proxy https_proxy HTTP_PROXY FTP_PROXY HTTPS_PROXY"

Casualmente, si agrega DISPLAY & HOME a esa lista, también puede usar programas gui con sudo (necesitan la variable DISPLAY para conectarse)

Defaults env_keep += "DISPLAY HOME"

Incluso puedes agregar esas dos líneas, así. (El+=es la clave aquí) Recuerde agregar estas líneas hacia el final del archivo, ya que en las primeras líneas generalmente establece el 'env_keep'variable con una recta'=', que borra cualquier valor anterior.

Respuesta2

Yo mismo estaba luchando con esto y finalmente opté por la solución propuesta en Ask Ubuntu: apt-get no funciona con proxy

Si la configuración http_proxyno funciona, intente editar apt.conf. En
Ubuntu apt.confestá fragmentado en /etc/apt/apt.conf.d/el directorio.
En este directorio editar /etc/apt/apt.conf.d/01ubuntu:

APT {
  Acquire {
      http {
          Proxy "http://user:password@server:port";
      };
  };
};

información relacionada