curl:(48)一个未知的选项被传递给libcurl

时间:2012-07-26 21:09:08

标签: curl install libcurl meteor

这真令人沮丧。尝试运行标准curl命令时,我不断收到此错误:

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

任何人都知道如何修复它?

13 个答案:

答案 0 :(得分:53)

对于Alpine Linux这个确切的问题。

修复是除了curl之外还安装curl-dev。

答案 1 :(得分:17)

您很可能有一个较新的curl使用较旧的libcurl,但不知道curl尝试使用的一个或多个选项。

curl -V会显示此信息,ldd [path to curl]会显示curl使用的所有共享库。

答案 2 :(得分:14)

我自己也遇到过这个问题。一些粗略的研究使我this bug tracker entry,但更新并没有成功。我最近从源代码构建了最新版本的libcurl,所以我认为它必须与目录结构混淆有关。我确定你可能不是完全相同的情况,但也许Mountain Lion引入了类似的错误,我采取的解决问题的步骤可能会有所帮助。

首先,运行which curl以确定从哪里调用二进制文件。然后通过运行locate -r /curl$确保该位置确实存在。如果不是(这是我的问题),请尝试使用curl提供的所有完整路径运行locate,忽略明显多余的路径,例如python-pycurl

一旦你找到一个有效的,你可以从找到的那个which创建一个符号链接,或者检查是否删除后者将允许shell在其上找到正确的符号链接拥有。对我来说,修复就像删除/usr/local/bin/curl一样简单,导致which curl正确回复/usr/bin/curlcurl本身以恢复正常操作。

答案 3 :(得分:8)

这是我在Ubuntu上从源安装cURL后得到的同样错误。

$ 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...]

答案 4 :(得分:5)

如果您刚从源代码构建了curl,请运行CONN / AS SYSDBA BEGIN DBMS_NETWORK_ACL_ADMIN.append_host_ace ( host => 'oracle-base.com', lower_port => 80, upper_port => 80, ace => xs$ace_type(privilege_list => xs$name_list('http'), principal_name => 'MY_USER', principal_type => xs_acl.ptype_db)); END; / 进行修复。

答案 5 :(得分:3)

这可以通过将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
<{1>} ln -s之前的/usr/bin/curl版本。

答案 6 :(得分:2)

我也遇到了这个错误,但是我没有运行Mountain Lion,我想要一个简单,干净的方法来确保它在任何系统上都是正确的。 (注意#1:我碰巧在一台旧的ARMv7 Chromebook上使用了一个黑色的Ubuntu / LXDE chroot。)(注意#2:我从源代码开始构建每晚版本。我没有用传统方式安装curl的问题,即{{ 1}}。)

当我检查版本sudo apt-get install curl时,它显示了我全新的每晚构建版本卷曲:7.51.1-20161107,但旧的libcurl:7.22 ......

我有预感这就是问题所在。我尝试搞乱符号链接,但它对我不起作用,我只是弄得一团糟,所以我咨询了官方安装页面:https://curl.haxx.se/docs/install.html

  

要强制执行静态库编译,请禁用共享库创建   通过运行配置如:

     

./ configure --disable-shared

所以我从我的curl源目录运行了以下命令:

  1. curl -V
  2. sudo make uninstall
  3. ./configure --disable-shared
  4. make
  5. 现在curl版本与libcurl版本匹配,并且可以正常工作。

答案 7 :(得分:1)

我有类似的问题(在Ubuntu 12.04中)。我在usr/local/bin中手动安装了curl,我输入的任何命令都是curl:(48) An unknown option was passed in to libcurl

我修复了它卸载curl(sudo make uninstall)并从apt-get(sudo apt-get install curl)安装它,它自动将curl放在usr/bin中。然后它奏效了!

答案 8 :(得分:1)

我在cygwin上遇到同样的问题,当我手动构建curl以使用https并且一切正常时

直到有一天我通过运行curl安装程序更新了cygwin软件包,并且没有更新软件包libcurl4,并开始收到相同的错误。

我通过运行:

检查了卷曲版本信息
$ 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

所以我卸载了包curllibcurl并重新安装,然后一切都运行正常。

$ 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

答案 9 :(得分:0)

在Ubuntu 16.04 LTS上我刚刚将/ usr / local / lib添加到/ etc / profile中的LD_LIBRARY_PATH(LD_LIBRARY_PATH = / usr / local / lib:$ LD_LIBRARY_PATH; export LD_LIBRARY_PATH)

答案 10 :(得分:0)

从源代码打包到已打包的安装后遇到了同样的问题,使用configure的正确标志解决了它:

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

在没有--libdir=选项的情况下,我正在将{em> libcurl 的更新版本安装到/usr/lib而不是/usr/lib64,并且新的curl二进制文件是仍然访问旧库,导致不兼容。

答案 11 :(得分:0)

在macOS上获得此功能,以某种方式从自制软件安装curl并进行链接,解决方法是:

  • 定位卷曲:which curl(在我的情况下为/usr/local/bin/curl
  • 删除它(除非已经是/ usr / bin一个):rm /usr/local/bin/curl

现在which curl将给/usr/bin/curl

答案 12 :(得分:-1)

删除--url参数:

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