Utilizzare “gem” sotto proxy

rubyQuesto post vale per Ubuntu Server 12.04 e Debian 6 (con sudo attivato)

Quando si tenta di eseguire il comando gem dietro un proxy si può avere qualche problema anche se la variabile HTTP_PROXY è definita nell’ambiente.

Ciò è dovuto al fatto che il comando sudo è eseguito in un altro file nel quale vengono passate le variabili in modo diverso. Quello che dovete fare per farlo funzionare è fare delle correzioni:

sudo gem install rake
ERROR:  http://rubygems.org/ does not appear to be a repository
ERROR:  Could not find a valid gem 'rake' (>= 0) in any repository


Nononostante il fatto che la variabile d’ambiente http_proxy era stata fissata nel file ~ /.Bashrc.

# ~/.bashrc: executed by bash(1) for non-login shells.

# HTTP Proxy
export http_proxy=http://username:password@192.168.0.1:80/

# ...

E’ necessario quindi fare qualche ritocco se si vuole utilizzare sudo dietro proxy. Per fare questo, eseguire sudo visudo e aggiungere la riga env_keep come nell’esempio sottostante:

# /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.
#

Defaults        env_reset
Defaults        env_keep += "http_proxy https_proxy ftp_proxy"

Una volta finito di modificare salvate il file.Ora tutto dovrebbe essere risolto. È possibile verificare che l’ambiente si propaga usando il comando env.

sudo env | grep http_proxy
http_proxy=http://username:password@192.168.0.1:80/

 

E finalmente…

sudo gem install rake
Successfully installed rake-0.8.7
1 gem installed
Installing ri documentation for rake-0.8.7...
Installing RDoc documentation for rake-0.8.7...