# emerge derriere un proxy

## Farnsworth

Hello,

j'suis au boulot et je voudrais tenter une install de gentoo 1.2, mais je n'arrive pas a faire d'emerge: 

 *Quote:*   

> 
> 
> # emerge rsync
> 
> Note /etc/make.profile isn't available: an 'emerge sync' will probably fix this.
> ...

 

donc j'ai vu qu'il fallait ouvrir le port 873 (mais bon, faut voir avec les p'tits gars du reso et ils risquent de ne pas etre d'accord).

Je suis derriere un FW/proxy et a aucun moment il n'y a eu d'identification login/mdp???

ou rentre-t-on ces infos (j'ai essaye de passer dans le /etc/make.conf le login/mdp comme ca: login:mdp@proxy:port et aussi proxy:port@login:mdp mais rien a faire)?

et n'y a t il pas moyen de tout faire passer en http?

Desole d'avoir ete long et merci d'avance pour votre aide...

----------

## sergio

Il me semble que dans les dernières version  de portage, il existe un "emerge websync" qui permet de faire le "rsync" en utilisant le protocole HTTP... à voir

----------

## Farnsworth

yep, merci, mais au niveau du login/pass sur le proxy, ca se passe comment??

----------

## sergio

ca se passe bien !!!

Blague à part dans /etc/make.conf

HTTP_PROXY="user:password@proxy.xxxxx.xxx:port"

ou 

PROXY="user:password@proxy.xxxxx.xxx:port"

A+

----------

## Farnsworth

ben pas vraiment, en fait je ne definie pas le RSYNC_PROXY dans make.conf, juste le HTTP_PROXY, comme tu dis, et quand je lance un 'emerge rsync' j'ai:

 *Quote:*   

> >>> Note: /etc/make.profile isn't available; an 'emerge sync' will probably fix this.
> 
> >>> starting rsync with rsync://rsync.gentoo.org/gentoo-portage...

 

et ca reste la, ca bouge plus! c cense faire qqch pendant ce temps?

(en fait quand je met n'importe quoi dans HTTP_PROXY, ca fait pareil???)

je comprends pas...

----------

## arlequin

En fait, si tu définis la variable,

'HTTP_PROXY="user:password@proxy.xxxxx.xxx:port',

il est préférable d'utiliser la commande 'emerge websync'... non ?

----------

## Farnsworth

j'installe une 1.2: ca existait l'option websync sur celle-ci??

parcequ'au 'emerge --help' elle n'y est pas?

----------

## arlequin

je sais pas... mais j'ai comme l'étrange sentiment que tu vas avoir de gros soucis après l'install pour 'merger' de nouveau portage... part d'une gentoo 1.4rc2 pour être tranquille...

----------

## Farnsworth

Yes, c ce que je vais faire, parcequ'il n'y a rien a faire avec la 1.2, elle veut pas passer le proxy...

Merci.

----------

## Farnsworth

Ca y est, je viens de recuperer la 1.4rc2 et je fais la meme chose et ca passe toujours pas???

et il n'y a pas d'option websync au emerge non plus???

il me renvoie un:

 *Quote:*   

> ...
> 
> rsync: getaddrinfo: pass login@proxy:port: Servname not supported for ai_socktype
> 
> ...

 

et autour de ca, les memes messages qu'avant?

ce qui m'etonne c qu'il ne me met pas les ':' entre le pass et le login alors que la variable est bien definie?

j'comprends pas  :Mad: 

----------

## TGL

Il n'y a pas à ma connaissance d'option "webrsync" à portage, mais un utilitaire appelé "emerge-webrsync" dans le package "gentoolkit". Évidemment, sur une install 1.2 fraiche, tu n'auras pas accès à un ebuild récent pour gentoolkit vu que tu peux pas faire ton rsync, et tu es coincé... Le voilà donc, ça devrait te permettre d'amorcer la pompe:

```

#! /bin/sh

 

# Copyright(c) 2002 Gentoo Technologies, Inc.

# Author: Karl Trygve Kalleberg <karltk@gentoo.org>

# Rewritten from the old, Perl-based emerge-webrsync script

 

if [ -e /usr/bin/spython ]

then

        #1.0_rc6 and earlier

        PYTHON=/usr/bin/spython

else

        #1.0 and later

        PYTHON=/usr/bin/python

fi

 

GENTOO_MIRRORS="`${PYTHON} -c 'import portage; print portage.settings["GENTOO_MIRRORS"];'`"

syncpath="/var/tmp/emerge-webrsync"

 

if [ ! -d $syncpath ] ; then

        mkdir -p $syncpath

fi

 

cd $syncpath

 

found=0

attempts=0

download=1

if [ "$1" == "-v" ] ; then

        wgetops=

else

        wgetops=-q

fi

 

if [ "$1" == "-n" ] ; then

        download=0

fi

 

sync_local() {

        echo Syncing local tree...

        tar jxf $file

        rm -f $file

        # Make sure user and group file ownership is root

        chown -R root:root portage

        cd portage

        rsync -av --progress --stats --delete --delete-after \

        --exclude='distfiles/*' --exclude='packages/*' . /usr/portage

        cd ..

        rm -rf portage

}

 

echo "Fetching most recent snapshot"

 

while (( $attempts <  40 )) ; do

 

        day=`date -d "-$attempts day" +"%d"`

        month=`date -d "-$attempts day" +"%m"`

        year=`date -d "-$attempts day" +"%Y"`

 

        file="portage-${year}${month}${day}.tar.bz2"

 

        if [ -f $file ] && [ $download == 0 ] ; then

                sync_local

                exit 0

        fi

 

        for i in $GENTOO_MIRRORS ; do

                url="${i}/snapshots/$file"

                rm -f $file

 

                if (wget $wgetops $url) && [ -s $file ] ; then

                        sync_local

                        exit 0

                fi

        done

        attempts=$[attempts+1]

done

 

rm -rf portage

 

exit 1

```

Bon, ceci dit, si t'es pas embarqué trop loin dans ton install, c'est vrai que switcher maintenant vers une 1.4 est une excellente idée.

----------

## Farnsworth

Yep, j'ai abandonne l'install de la 1.2 et relance celle de la 1.4.

j'ai ensuite execute le wget et le rsync, ca s'est bien passe.

je voudrais donc, sur ton conseil, installer le gentoolkit, mais je ne sais pas ou le trouver, tu peux m'aider stp?

merci.

----------

## arlequin

Tapes 'emerge gentoolkit'...

de mémoire il est dans /usr/portage/app-admin, mais inutile de taper tout le chemin   :Wink: 

----------

## Farnsworth

ben en fait c pareil qu'avant, il me manque toujours le /etc/make.profile...

il me met aussi:

 *Quote:*   

> !!! No profile directory; system mode unavailable

 

----------

## arlequin

Arf, là y a duex solution:

- un emereg rync devrait résoudre le problème (dixit gentoo)

- le fichier '/etc/make.profile' est un lien symbolique vers un répertoire contenu dans /usr/portage (attention, je confonds peut-être avec un autre fichier).

Il m'est arrivé d'avoir à refaire un lien symbolique suite à un pbm d'emerge (enfin, pbm...). Je n'es pas accés à mon système (chui au boulot), donc je ne peut pas te donner plus d'infos.

Tentes juste un rsync et sinon vérifie cette histoire d lien symbolique.

Voilà !

----------

## Farnsworth

le emerge rsync ne passe pas, c tout mon probleme  :Wink: 

sinon, j'ai modifie certains trucs, et maintenant quand je lance emerge gentoolkit, wget n'arrive pas a recuperer le fichier.

 *Quote:*   

> ...
> 
> proxy request sent, awainting response... 407 Proxy Authentication Required
> 
> ...

 

en fait pour wget j'avais eu a passer les options --proxy-passwd et --proxy-user et la je peux pô...

et en definissant http_proxy="user:pass@proxy:port" ca me sort:

 *Quote:*   

> ...
> 
> Error parsing proxy URL user:pass@proxy:port: Unsupported scheme
> 
> ...

 

----------

## arlequin

Grosse technique de barbare: si avec les params '--proxy-passwd' et '--proxy-user' wget passe, tapes cette ligne avant de lancer un emerge

```
alias wget="wget --proxy-user=toto --proxy-passwd=0000"
```

je dis pas que ça va marcher, mais ça peut le faire   :Cool: 

----------

## Farnsworth

en effet, c plutot barbare   :Very Happy: 

j'ai fait l'alias et ensuite j'ai tente un wget seul avec un fichier derriere, et ca passe, en revanche le wget appele dans emerge fait toujours pareil...

en plus j'ai regarde le script emerge et c du python, j'y comprends rien  :Wink: 

rrrrrhhhhaaaaaaaa!!!!!!!

pourtant je suis pas loin de la verite...

en tous cas, merci de ton aide.

----------

## arlequin

Argl, j'ai pas d'ebuilds sous la mains... j'aurait aimer savoir si dans les scripts python il appelle juste 'wget' ou '/usr/bin/wget'...

A mon avis, il utilise tout le chemin (/usr/bin) pour appeller 'wget'...

Y aurait donc comme solution de changer dans le script (ebuild), la référence '/usr/bin/wget' pour la remplacer par 'wget' (tout court).

Mais inconvénient de la chose, il faudra le faire pour toutes les ebuilds   :Confused:  sans compter qu'il ne faudra pas oublier de créer l'alias à chaque ouverture de session (oui bon, on peut faire un cat echo "..." >> /etc/profile)

Sinon, y a une autre technique encore plus barbare que la précédente. Elle est basé sur une très vieille technique Suédoise. Elle consiste à renommer la commande 'wget' et de la remplacer par un script bash qui appelle 'wget --proxy-pouet...'... mais c'est plus que du bricollage. En dernier recours, on peut tenter ça (je décris pas comment le faire, si tu ne trouves pas d'autres soluces on peut tenter...)

Voilà !

----------

## Farnsworth

 :Very Happy:   :Very Happy:   !!!!!CA Y EST!!!!!   :Very Happy:   :Very Happy: 

en fait il suffisait de creer un .wgetrc (avec dans chaque ligne: variable_wget = valeur) dans le home dir du user (root) et le tour est joue!!

ca marche, je vois des configure et des make passer! trop bon!

en tout ca merci... d'ailleurs c pas fini, apres faut encore que j'arrive a faire marcher emerge-webrsync, mais c bien parti pour le moment!

----------

## arlequin

Et ben voilà... en même temps, un 'man wget', y a que ça de vrai   :Wink: 

----------

## Farnsworth

Enfin, tout est compile, ca boot et c nickel...

bon maintenant faut que j'installe qqs trucs (telnet rlogin ftp & kde pour commencer) mais je vais ouvrir un nvo post.

en tout cas merci a arlequin et aux autres pour votre aide.

----------

