Eu tenho um problema com curl
em duas das minhas caixas. Em cerca de duas dúzias de instalações do Linux, não estou tendo problemas em usar segundos fracionários em arquivos curl --connect-timeout
.
O comando de exemplo curl --connect-timeout 3.14 https://example.com
está falhando em apenas duas das minhas máquinas, que são meus únicos desktops, minhas únicas instalações do Kubuntu . O resto é principalmente Ubuntu Server e algumas instalações Debian, todas sem cabeça.
Esses dois desktops Kubuntu diferem em versões, um é um 22.04 LTS atualizado e o outro uma versão 20.04 LTS.
O Kubuntu 22.04 tem um curl --version
de
curl 7.81.0 (x86_64-pc-linux-gnu) libcurl/7.81.0 OpenSSL/3.0.2 zlib/1.2.11 brotli/1.0.9 zstd/1.4.8 libidn2/2.3.2 libpsl/0.21.0 (+libidn2/2.3.2) libssh/0.9.6/openssl/zlib nghttp2/1.43.0 librtmp/2.3 OpenLDAP/2.5.13
Release-Date: 2022-01-05
O Kubuntu 20.04 tem um curl --version
de
curl 7.68.0 (x86_64-pc-linux-gnu) libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
Release-Date: 2020-01-08
Para comparação, um Ubuntu Server 20.04 funcional tem um curl --version
de
curl 7.68.0 (x86_64-pc-linux-gnu) libcurl/7.68.0 OpenSSL/1.1.1f zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.21.0 (+libidn2/2.2.0) libssh/0.9.3/openssl/zlib nghttp2/1.40.0 librtmp/2.3
Release-Date: 2020-01-08
que é idêntico à saída do Kubuntu 20.04 do curl --version
.
Portanto, os servidores também possuem essas versões instaladas, mas há frações de segundos funcionando corretamente.
Ambos curl --manual
produzem o seguinte resultado grep:
~ curl --manual | grep -e "--connect-timeout"
--connect-timeout <fractional seconds>
curl --connect-timeout 20 https://example.com
curl --connect-timeout 3.14 https://example.com
See also --connect-timeout. Added in 7.47.0.
See also -m, --max-time and --connect-timeout. Added in 7.59.0.
See also --connect-timeout.
(no 20.04 é um pouco menos detalhado), então ambos estão dentro das versões necessárias para lidar com fracionários.
O que poderia estar causando isso?
Outra observação: fiz um md5sum
no Kubuntu 20.04 e em uma caixa do Ubuntu 20.04 e ambos retornam o mesmo hash:
c337f891e41007612076a3bc43284aa7 /usr/bin/curl
portanto, os executáveis devem ser idênticos.
which curl
está retornando /usr/bin/curl
em ambas as máquinas.
(O mesmo vale para as versões 22.04 com 4b7b5099e836abd910f580808adc0874 /usr/bin/curl
)
O ambiente pode estar causando isso? Como?
Em todos os casos, verifiquei isso com bash
e zsh
.
O
curl
programa parece reconhecer a localidade, o que significa que a conversão de strings em números dependerá dos seguintesLC_NUMERIC
valoresEm particular, na
de_DE.UTF-8
localidade, o caractere de ponto decimal é,
e.
é o separador de milhar:Portanto, neste local,
3.14
não é de fato "um parâmetro numérico adequado" - precisaria ser escrito3,14
. Entãoenquanto