Подтвердить что ты не робот

Curl: (48) Неизвестный вариант был передан libcurl

Это действительно расстраивает. Я продолжаю получать эту ошибку при попытке запустить стандартную команду curl:

curl --url https://install.meteor.com | sh
curl: (48) An unknown option was passed in to libcurl

Кто-нибудь знает, как это исправить?

4b9b3361

Ответ 1

Я сам столкнулся с этой проблемой. Немного беглых исследований привело меня к этой записи трекера ошибок, но обновление не помогло. Недавно я построил самую новую версию libcurl из исходного кода, поэтому я решил, что это должно быть связано с перепутанием структуры каталогов. Я уверен, что вы, вероятно, не в той же ситуации, но, возможно, Mountain Lion представила достаточно подобную ошибку, которую могли бы помочь шаги, которые я предпринял для устранения проблемы.

Сначала запустите which curl, чтобы определить, откуда вызывается двоичный код. Затем убедитесь, что местоположение действительно существует, запустив locate -r /curl$. Если это не так (это было проблемой в моем случае), попробуйте запустить curl, используя все полные пути, предоставленные locate, игнорируя явно лишние, такие как python-pycurl.

После того, как вы нашли тот, который работает, вы можете либо создать символическую ссылку на него из найденного which, либо проверить, сможет ли удаление последнего разрешить оболочке самостоятельно найти правильный. Для меня исправление было таким же простым, как удаление /usr/local/bin/curl, заставив which curl правильно отвечать с помощью /usr/bin/curl и curl для возврата к нормальной работе.

Ответ 2

Просто у вас была эта проблема с Alpine Linux.

Исправление заключалось в установке curl-dev в дополнение к завиту.

Ответ 3

Скорее всего, у вас есть более новый curl, который использует более старую libcurl, которая не знает, что один или несколько параметров curl пытается использовать.

curl -V покажет это, и ldd [path to curl] покажет вам все используемые библиотеки curl для общих библиотек.

Ответ 4

Это та же ошибка, которую я получал после установки cURL из источника на Ubuntu.

$ curl http://www.google.com
curl: (48) An unknown option was passed in to libcurl

Просмотр версии cURL показало, что curl был обновлен, но использовал старую версию libcurl:

$ curl --version
curl 7.41.0 (x86_64-unknown-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3

Чтобы решить проблему, я скопировал libcurl.so и другие из последней папки curl, которую я загрузил и перезаписал уже на моей машине.

cp /tmp/curl-7.41.0/lib/.libs/libcurl.so* /usr/local/lib/

Это исправило мою проблему.

$ curl --version
curl 7.41.0 (x86_64-unknown-linux-gnu) libcurl/7.41.0 OpenSSL/1.0.1 zlib/1.2.3.4

$ curl -I http://www.google.com
HTTP/1.1 302 Found
[...snip...]

Ответ 5

Если вы только что построили свой curl из исходного кода, запустите sudo ldconfig, чтобы исправить его.

Ответ 6

Это можно устранить, переустановив cURL в /usr/bin вместо/usr/local/bin, поскольку Ubuntu 12.04 ведет себя странно, когда вы устанавливаете в разных местах

Кроме того, это может быть возможным исправлением, но будьте осторожны.

ln -s /usr/bin/curl /usr/local/bin/curl

Это означает, что двоичный код в /usr/local/bin на самом деле не тот, который система ищет или устарела или не может нормально функционировать. Требуется простая символическая ссылка.


Чтобы быть в безопасности, вы могли бы также

mv /usr/local/bin/curl /usr/local/bin/curl.bak

до ln -s - над версией /usr/bin/curl.

Ответ 7

Я тоже получил эту ошибку, но я не управляю Mountain Lion, и мне нужен простой, чистый способ, чтобы все было правильно - в любой системе. (Примечание №1: я случайно оказался в коррутеже Ubuntu/LXDE chroot на старом Chromebook Chrome.) (Примечание №2: Я создал ночную версию из источника. У меня не было проблемы с установкой завитка традиционным способом, т.е. sudo apt-get install curl.)

Когда я проверил версию curl -V, она показала мою новую ночную версию для завивки: 7.51.1-20161107, но старый libcurl: 7.22...

У меня была догадка, что это была проблема. Я пробовал общаться с символическими ссылками, но это не сработало для меня, и я только делал беспорядок, поэтому я обратился к официальной странице установки: https://curl.haxx.se/docs/install.html.

Чтобы заставить статическую библиотеку скомпилировать, отключите создание общей библиотеки запустив configure как:

./configure --disable-shared

Итак, я запустил следующее из каталога источника curl:

  • sudo make uninstall
  • ./configure --disable-shared
  • make
  • sudo make install

Теперь версия curl соответствует версии libcurl, и она работает.

Ответ 8

У меня была аналогичная проблема (в Ubuntu 12.04). Я вручную установил curl в usr/local/bin, и любая команда я типа давала curl:(48) An unknown option was passed in to libcurl

Я исправил его удаление curl (sudo make uninstall) и установил его из apt-get (sudo apt-get install curl), который автоматически помещал curl в usr/bin. Тогда это сработало!

Ответ 9

Я столкнулся с той же проблемой на cygwin, когда я вручную построил curl для работы с https, и все работало нормально

пока я не обновил пакет curl, выполнив установку cygwin и не обновив пакет libcurl4, и начал получать ту же ошибку.

Я проверил информацию о версии curl, выполнив:

$ curl -V
curl 7.54.1 (i686-pc-cygwin) libcurl/7.52.1 OpenSSL/1.0.2j zlib/1.2.8 libidn2/2.0.2 libpsl/0.17.0 (+libidn2/0.11) libssh2/1.7.0 nghttp2/1.14.0
Release-Date: 2017-06-14
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp 
Features: Debug IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy Metalink PSL

Итак, я обнаружил, что cygwin обновил пакет curl до 7.54.1, но libcurl все еще находился в 7.52.1

Итак, я удалил пакет curl и libcurl и переустановил, затем все снова стало нормально.

$ apt-cyg remove libcurl4 curl
Removing libcurl4
Package libcurl4 removed
Removing curl
Package curl removed

apt-cyg install curl libcurl4
Installing curl
curl-7.54.1-1.tar.xz: OK
Unpacking...
Package curl requires the following packages, installing:
cygwin libcurl4 libmetalink3 libopenssl100 zlib0
Package cygwin is already installed, skipping
Installing libcurl4
libcurl4-7.54.1-1.tar.xz: OK
Unpacking...
Package libcurl4 requires the following packages, installing:
ca-certificates cygwin libgcc1 libgssapi_krb5_2 libidn2_0 libnghttp2_14 libopenldap2_4_2 libopenssl100 libpsl5 libssh2_1 zlib0
Package ca-certificates is already installed, skipping
Package cygwin is already installed, skipping
Package libgcc1 is already installed, skipping
Package libgssapi_krb5_2 is already installed, skipping
Package libidn2_0 is already installed, skipping
Package libnghttp2_14 is already installed, skipping
Package libopenldap2_4_2 is already installed, skipping
Package libopenssl100 is already installed, skipping
Package libpsl5 is already installed, skipping
Package libssh2_1 is already installed, skipping
Package zlib0 is already installed, skipping
Package libmetalink3 is already installed, skipping
Package libopenssl100 is already installed, skipping
Package zlib0 is already installed, skipping
Package curl installed
Package libcurl4 is already installed, skipping

Проверьте информацию о версии с завихрением снова:

$ curl -V
curl 7.54.1 (i686-pc-cygwin) libcurl/7.54.1 OpenSSL/1.0.2j zlib/1.2.8 libidn2/2.0.2 libpsl/0.17.0 (+libidn2/0.11) libssh2/1.7.0 nghttp2/1.14.0
Release-Date: 2017-06-14
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp scp sftp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS Debug IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy Metalink PSL

Ответ 10

В Ubuntu 16.04 LTS я просто добавил /usr/local/lib в LD_LIBRARY_PATH в /etc/profile (LD_LIBRARY_PATH =/usr/local/lib: $LD_LIBRARY_PATH; экспортирует LD_LIBRARY_PATH)

Ответ 11

Попав в ту же проблему после компиляции из исходного кода через упакованную установку, разрешил ее с правильными флагами с configure:

./configure --prefix=/usr --libdir=/usr/lib64

Без опции --libdir= у меня была установка обновленной версии libcurl в /usr/lib вместо /usr/lib64, а новый curl -библиотека все еще обращался к старым библиотекам, что приводило к несовместимости.

Ответ 12

получил это на macos, каким-то образом curl был установлен из доморощенного и связан, решение было:

  • найти curl: which curl (/usr/local/bin/curl в моем случае)
  • удалите его (если это уже не /usr/bin): rm/usr/local/bin/curl.

теперь, which curl даст /usr/bin/curl

Ответ 13

Отбросьте параметр --url:

curl https://install.meteor.com | /bin/sh