这真是令人沮丧。尝试运行标准 curl 命令时,我不断收到此错误:
curl --url https://install.meteor.com | sh
curl: (48) An unknown option was passed in to libcurl
谁知道怎么修它?
这真是令人沮丧。尝试运行标准 curl 命令时,我不断收到此错误:
curl --url https://install.meteor.com | sh
curl: (48) An unknown option was passed in to libcurl
谁知道怎么修它?
Alpine Linux 刚刚遇到了这个确切的问题。
除了 curl 之外,修复方法是安装 curl-dev。
很可能你有一个新的,它使用一个不知道 curl 尝试使用的一个或多个选项curl
的旧的。libcurl
curl -V
将显示这一点,并向ldd [path to curl]
您展示 curl 使用的所有共享库。
我自己也遇到过这个问题。一些粗略的研究让我找到了这个 bug tracker entry,但更新并没有解决问题。不过,我最近构建了libcurl
from source 的最新版本,所以我认为这一定与目录结构混淆有关。我确定您可能不会处于完全相同的情况,但也许 Mountain Lion 引入了一个足够相似的错误,我为解决问题而采取的步骤可能会有所帮助。
首先,运行which curl
以确定从何处调用二进制文件。然后通过运行确保该位置确实存在locate -r /curl$
。如果没有(这是我的问题),请尝试curl
使用 提供的所有完整路径运行locate
,忽略明显多余的路径,例如python-pycurl
.
一旦你找到了一个可以工作的,你可以从找到的那个创建一个符号链接which
,或者检查删除后者是否会允许 shell 自己找到正确的一个。对我来说,修复就像删除一样简单/usr/local/bin/curl
,导致which curl
正确响应/usr/bin/curl
并curl
返回正常操作。
如果您只是从源代码构建 curl,请运行sudo ldconfig
以修复它。
这与我在 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...]
这可以通过将 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
结束之前。
我也遇到了这个错误,但我没有运行 Mountain Lion,我想要一种简单、干净的方法来确保它正确 - 在任何系统上。(注意 #1:我碰巧在旧 ARMv7 Chromebook 上的 crouton Ubuntu/LXDE chroot 中。)(注意 #2:我从源代码构建了每晚版本。以传统方式安装 curl 没有问题,即sudo apt-get install curl
。)
当我检查版本curl -V
时,它显示了我全新的 curl 夜间构建版本:7.51.1-20161107,但旧的 libcurl:7.22 ......
我有预感这就是问题所在。我试着弄乱符号链接,但它对我不起作用,我只是弄得一团糟,所以我查阅了官方安装页面:https ://curl.haxx.se/docs/install.html 。
要强制编译静态库,请通过运行如下配置禁用共享库创建:
./configure --disable-shared
所以我从我的 curl 源目录中运行了以下内容:
sudo make uninstall
./configure --disable-shared
make
sudo make install
现在 curl 版本与 libcurl 版本匹配,并且可以正常工作。
I had a similar problem (in Ubuntu 12.04). I manually installed curl in usr/local/bin
and any command I type was giving curl:(48) An unknown option was passed in to libcurl
I fixed it uninstalling curl (sudo make uninstall
) and installing it from apt-get (sudo apt-get install curl
), which automatically placed curl in usr/bin
. Then it worked!
在macos上得到了这个,不知何故从自制软件安装了curl并链接,解决方案是:
which curl
在/usr/local/bin/curl
我的情况下)rm /usr/local/bin/curl
:.现在which curl
会给/usr/bin/curl
cygwin
当我手动构建curl
以使用https
并且一切正常时,我遇到了同样的问题
直到有一天我curl
通过运行cygwin
setup 更新了包并且没有更新包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 版本信息:
$ 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
在 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)
在通过打包安装从源代码编译后遇到了同样的问题,使用正确的标志解决了它configure
:
./configure --prefix=/usr --libdir=/usr/lib64
如果没有该--libdir=
选项,我的安装的是libcurl的更新版本,/usr/lib
而不是/usr/lib64
新的curl
二进制文件仍在访问旧库,导致不兼容。
删除--url
参数:
curl https://install.meteor.com | /bin/sh