|
From: | 韋嘉誠 |
Subject: | bug#20402: HTTP and FTP proxies for guix package / guix-daemon |
Date: | Wed, 1 Jul 2015 16:53:15 +0200 |
Ludovic, sorry for duplicate mail again.
On Jul 1, 2015 4:45 PM, "Ludovic Courtès" <address@hidden> wrote:
> > Yes. This is why the proxy is required. There is no internet DNS for
> > the VM, because it is on an isolated lab network.
>
> Hmm, when using Guile 2.0.11 or later, ‘open-socket-for-uri’ connects to
> the proxy (so its name must be available in DNS lookup), not to the
> target server. The code in (web client) goes like this:
The proxy is in the DNS.
> Do you see the same DNS issue when running:
>
> http_proxy=http://... guix download http://...
Nope. guix download works. It successfully looks up and connects to the proxy.
When I next have the chance I will report:
1) Results with guix-compiled guix-daemon
2) Results with dev-compiled guix-daemon
3) /gnu/store hash of 1)
"Claes Wallin (韋嘉誠)" <address@hidden> skribis:
> On Wed, Jul 1, 2015 at 10:19 AM, Ludovic Courtès <address@hidden> wrote:
>
>> To test, I first run the daemon like this:
>>
>> sudo sh -c 'export http_proxy=foobar ; ./pre-inst-env guix-daemon --build-users-group=guixbuild'
>
> Could there be a difference because you are testing with the
> checked-out, semi-manually built guix and I was checking with a
> freshly packaged (pull, package -i guix) guix? Like I said in
> http://lists.gnu.org/archive/html/bug-guix/2015-06/msg00036.html ,
> guix-daemon as compiled by guix seems to be using guile-2.0.9. Maybe
> that only happens due to guix rewriting hashbangs etc, and on a build
> outside guix (even when using guix environment) it uses whatever guile
> happens to be in the paths?
Could you send the store file name of Guix that is being used?
For instance, I have:
--8<---------------cut here---------------start------------->8---
$ sudo deco status guix-daemon
Pasvorto:
Status of guix-daemon:
It is started.
Running value is 31316.
It is enabled.
Provides (guix-daemon).
Requires (user-processes).
Conflicts with ().
Will be respawned.
$ ps 31316
PID TTY STAT TIME COMMAND
31316 ? Ss 0:00 /gnu/store/zg6j61inmmk5kyqgyfjnj7rdxl79i9ps-guix-0.8.2.684bf7c/bin/guix-daemon --build-users-group guixbu
--8<---------------cut here---------------end--------------->8---
That means I’m using commit 684bf7c of Guix, which has the fix, which
came up after the http_proxy commit (commit 0d88313.)
>>> No. Whenever the daemon is doing the downloading, http_proxy is
>>> ignored and I get "Temporary failure in name resolution" because the
>>> VM doesn't have an internet DNS.
>>
>> [...]
>>
>>> `/gnu/store/2zkyyw4bq0wzsxdysncrf9lmwl44w5wh-binutils-2.25.tar.bz2'
>>> from `http://ftpmirror.gnu.org/binutils/binutils-2.25.tar.bz2'...
>>> ERROR: In procedure getaddrinfo: Temporary failure in name resolution
>>
>> That’s another, unrelated issue, probably in your network or on your
>> machine.
>
> Yes. This is why the proxy is required. There is no internet DNS for
> the VM, because it is on an isolated lab network.
Hmm, when using Guile 2.0.11 or later, ‘open-socket-for-uri’ connects to
the proxy (so its name must be available in DNS lookup), not to the
target server. The code in (web client) goes like this:
--8<---------------cut here---------------start------------->8---
(define (open-socket-for-uri uri-or-string)
"Return an open input/output port for a connection to URI."
(define http-proxy (current-http-proxy))
(define uri (ensure-uri (or http-proxy uri-or-string))) ;← proxy
(define addresses
(let ((port (uri-port uri)))
(delete-duplicates
(getaddrinfo (uri-host uri)
(cond (port => number->string)
(else (symbol->string (uri-scheme uri))))
(if port
AI_NUMERICSERV
0))
;; ...
--8<---------------cut here---------------end--------------->8---
Do you see the same DNS issue when running:
http_proxy=http://... guix download http://...
?
Thanks,
Ludo’.
[Prev in Thread] | Current Thread | [Next in Thread] |