<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Trux &#187; proxy</title>
	<atom:link href="http://trux.info/tag/proxy/feed/" rel="self" type="application/rss+xml" />
	<link>http://trux.info</link>
	<description>Partage de mes astuces et découvertes</description>
	<lastBuildDate>Tue, 09 Jun 2009 19:47:29 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Accéder à tous vos dépôts debian malgré les proxy</title>
		<link>http://trux.info/2008/11/acceder-a-tous-vos-depots-debian-malgre-les-proxy/</link>
		<comments>http://trux.info/2008/11/acceder-a-tous-vos-depots-debian-malgre-les-proxy/#comments</comments>
		<pubDate>Fri, 28 Nov 2008 07:20:53 +0000</pubDate>
		<dc:creator>chris</dc:creator>
				<category><![CDATA[Informatique]]></category>
		<category><![CDATA[astuce]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[proxy]]></category>
		<category><![CDATA[sudo]]></category>
		<category><![CDATA[ubuntu]]></category>

		<guid isPermaLink="false">http://trux.info/?p=3</guid>
		<description><![CDATA[S&#8217;il vous est déjà arrivé d&#8217;avoir à accéder à des dépôts debian placés derrière un proxy, vous pouvez utiliser un outil graphique comme Synaptics qui permet de configurer ça assez facilement. Si vous êtes pluto adepte de la ligne de commande, vous avez alors à modifier les fichiers de configuration d&#8217;apt.

sudo echo 'Acquire::http::Proxy "http://proxy.mynetwork.com:1234/";' &#62; [...]]]></description>
			<content:encoded><![CDATA[<p>S&#8217;il vous est déjà arrivé d&#8217;avoir à accéder à des dépôts debian placés derrière un proxy, vous pouvez utiliser un outil graphique comme <a href="http://www.nongnu.org/synaptic/">Synaptics</a> qui permet de configurer ça assez facilement. Si vous êtes pluto adepte de la ligne de commande, vous avez alors à modifier les fichiers de configuration d&#8217;apt.</p>
<pre>
sudo echo 'Acquire::http::Proxy "http://proxy.mynetwork.com:1234/";' &gt; /etc/apt/apt.conf.d/proxy
</pre>
<p>ou plus simplement en définissant les paramètres du proxy dans la variable d&#8217;environnement <code>http_proxy</code> (ou <code>ftp_proxy</code> dans le cas d&#8217;un miroir ftp).</p>
<pre>
export http_proxy='http://proxy.mynetwork.com:1234/'
</pre>
<p>Si le proxy est un proxy authentifiant, alors il faut également préciser le login et le mot de passe dans <code>http_proxy</code>.</p>
<pre>
export http_proxy='http://login:pwd@proxy.mynetwork.com:1234/'
</pre>
<p>Évidemment, si vous avez un dépôt debian miroir sur votre réseau interne, vous n&#8217;avez pas besoin de définir tout ça. Cependant, si vous voulez également accéder aux dépôts externes, c&#8217;est là que ça se complique : si vous définissez <code>http_proxy</code>, le dépôt interne devient inaccessible car apt tente de passer par le proxy, et si vous ne le définissez pas, les depôts externes sont inaccessibles car vous ne passez plus par le proxy. Il faut donc procéder autrement.</p>
<p><span id="more-3"></span><br />
Une solution est d&#8217;utiliser la variable <code>no_proxy</code>. Cette variable définit les hôtes qui ne nécessitent pas un accès via proxy.</p>
<p>Par exemple</p>
<pre>
export no_proxy='127.0.01,.mynetwork.com,192.168.78.100'
</pre>
<p>n&#8217;utilisera pas le proxy pour accéder à 127.0.0.1, à n&#8217;importe quel hôte du domaine mynetwork.com ou à 192.168.78.100. Attention, l&#8217;utilisation de wildcards dans <code>no_proxy</code> ne fonctionnera pas. Ainsi écrire ce qui suit n&#8217;empêchera pas d&#8217;essayer d&#8217;utiliser le proxy pour accéder à wiki.mynetwork.com.</p>
<pre>
# wildcards dont work
export no_proxy='127.0.01,*.mynetwork.com'
</pre>
<p>Définir <code>http_proxy</code> et <code>no_proxy</code> dans <code>$HOME/.bashrc</code> permettra donc d&#8217;accéder à n&#8217;importe quel dépôt, qu&#8217;il soit sur le réseau interne ou à l&#8217;extérieur. Prenons l&#8217;exemple de deux dépôts, l&#8217;un sur l&#8217;hôte deb.mynetwork.com, l&#8217;autre sur l&#8217;hôte fr.archive.ubuntu.com. Il faut définir</p>
<pre>
export http_proxy='http://login:pwd@proxy.mynetwork.com:1234/'
export no_proxy='127.0.01,deb.mynetwork.com'
</pre>
<p>Mais si vous utilisez <code>sudo apt-get</code> pour installer un paquet, ça ne fonctionne toujours pas. C&#8217;est parce que <a href="http://aplawrence.com/Basics/sudo.html">sudo filtre les variables d&#8217;environnement</a> pour des raisons de sécurité. Pour constater quelles variables sont filtrées et comment :</p>
<pre>
sudo sudo -V
</pre>
<p>On y voit que la variable <code>http_proxy</code> est préservée, mais pas <code>no_proxy</code>. Pour y remédier, il va falloir éditer le fichier <code>/etc/sudoers</code>.</p>
<pre>
sudo visudo
</pre>
<p>et rajouter la ligne suivante</p>
<pre>
Defaults        env_keep+="no_proxy"
</pre>
<p>Attention à bien mettre des double-quotes et non des simple-quotes.</p>
<p>Si vous êtes sous <a href="http://www.ubuntu-fr.org/">Ubuntu</a>, le fichier devrait ressembler à ça</p>
<pre>
# /etc/sudoers
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
# Host alias specification

# User alias specification

# Cmnd alias specification

# Defaults

Defaults        env_keep+='no_proxy'
Defaults        !lecture,tty_tickets,!fqdn

# User privilege specification
root    ALL=(ALL) ALL

# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
</pre>
<p>Ainsi, vous pouvez installer des paquets provenant de votre réseau local ou de l&#8217;extérieur.</p>
<p>L&#8217;avantage de cette solution, c&#8217;est qu&#8217;elle est valable pour tous les programmes : par exemple l&#8217;installation du paquet msttcorefonts va télécharger les polices true type microsoft sur le net en utilisant <code>wget</code>. Si vous êtes derrière un proxy et qu&#8217;aucun proxy n&#8217;est défini dans le fichier $HOME/.wgetrc, le fichier /etc/wgetrc ou dans la variable d&#8217;environnement http_proxy, le téléchargement échouera. En définissant la variable d&#8217;environnement <code>http_proxy</code> ça fonctionne comme un charme.</p>
<p>Petite astuce supplémentaire, si votre proxy requiert une authentification, vous n&#8217;avez pas envie que tout le monde connaisse votre mot de passe en regardant votre <code>.bashrc</code>.</p>
<p>Une solution est de mettre la définition dans un fichier <code>$HOME/.proxy</code> puis de l&#8217;appeler depuis le bashrc.</p>
<p>fichier <code>$HOME/.proxy</code></p>
<pre>
#!/bin/bash
# proxy settings
export http_proxy='http://login:pwd@proxy.mynetwork.com:1234/'
export no_proxy='127.0.01,deb.mynetwork.com'
</pre>
<p>changer les droits d&#8217;accès et modifier son bashrc</p>
<pre>
chmod go-rw $HOME/.proxy
echo 'source $HOME/.proxy' &gt; $HOME/.bashrc
</pre>
]]></content:encoded>
			<wfw:commentRss>http://trux.info/2008/11/acceder-a-tous-vos-depots-debian-malgre-les-proxy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
