web-dev-qa-db-ja.com

curl:(48)不明なオプションがlibcurlに渡されました

これは本当にイライラします。標準のcurlコマンドを実行しようとすると、このエラーが発生し続けます。

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

誰でもそれを修正する方法を知っていますか?

24
Zaheer

私自身、この問題に遭遇しました。おおざっぱな調査の結果、私は このバグトラッカーエントリ につながりましたが、更新してもうまくいきませんでした。最近、ソースからlibcurlの最新バージョンをビルドしたので、ディレクトリ構造が混同されていることに関係しているのではないかと考えました。おそらくまったく同じ状況ではないと思いますが、マウンテンライオンが同様のエラーを導入したので、問題を解決するために実行した手順が役立つ可能性があります。

まず、which curlを実行して、バイナリの呼び出し元を確認します。次に、locate -r /curl$を実行して、場所が実際に存在することを確認します。そうでない場合(これは私の場合の問題でした)、curlが提供するすべてのフルパスを使用してlocateを実行し、python-pycurlのような明らかに余分なパスを無視します。

機能するものを見つけたら、そのwhichからシンボリックリンクを作成するか、後者を削除してシェルが自分で正しいものを見つけられるかどうかを確認します。私にとっては、修正は/usr/local/bin/curlを削除するだけの簡単なもので、which curl/usr/bin/curlで正しく応答し、curl自体が通常の操作に戻りました。

15
andkerosine

Alpine Linuxでこの問題が発生しました。

修正は、curlに加えてcurl-devをインストールすることでした。

55
rix

ほとんどの場合、curlが使用しようとする1つ以上のオプションを認識していない古いcurlを使用する新しいlibcurlがあります。

curl -Vはこれを表示し、ldd [path to curl]はcurlが使用するすべての共有ライブラリを表示します。

18
Daniel Stenberg

ソースからcurlをビルドしたばかりの場合は、Sudo ldconfigを実行して修正します。

9
Kevin Murda

これは、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...]
8
ethicalhack3r

Ubuntu 12.04は別の場所にインストールすると奇妙な動作をするため、cURLを/ usr/local/binではなく/ usr/binに再インストールすることでこれを修正できます。

また、これは可能な修正ですが、注意してください

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を上書きする前。

3

このエラーも発生しましたが、Mountain Lionを実行していません。どのシステムでも、エラーを確実に修正するためのシンプルでクリーンな方法が必要でした。 (注#1:たまたま古いARMv7 Chromebookのクルトン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を実行して、共有ライブラリの作成を無効にします。

./configure --disable-shared

したがって、curlソースディレクトリから次のコマンドを実行しました。

  1. Sudo make uninstall
  2. ./configure --disable-shared
  3. make
  4. Sudo make install

これで、curlのバージョンがlibcurlのバージョンと一致し、機能します。

2

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はパッケージcurl7.54.1に更新しましたが、libcurl7.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のバージョン情報を再度確認しました。

$ 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
1
AbhiNickz

私にも同様の問題がありました(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_に自動的に配置しました。その後、うまくいきました!

1
PGreen

Ubuntu 16.04 LTSでは、/ etc/profileのLD_LIBRARY_PATHに/ usr/local/libを追加しました(LD_LIBRARY_PATH =/usr/local/lib:$ LD_LIBRARY_PATH; export LD_LIBRARY_PATH)

0
user4638415

パッケージ化されたインストールを介してソースからコンパイルした後に同じ問題が発生し、configureを使用して正しいフラグで解決しました:

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

_--libdir=_オプションがないと、更新されたバージョンのlibcurlが_/usr/lib_ではなく_/usr/lib64_にインストールされ、新しいcurlバイナリがまだアクセスしていた古いライブラリ、非互換性につながります。

0
Hoggins

macosでこれを得た、どういうわけかカールは自作からインストールされてリンクされた、解決策は:

  • カールを見つける:which curl/usr/local/bin/curl 私の場合)
  • それを削除します(すでに/ usr/binである場合を除きます):rm /usr/local/bin/curl

which curl あげる /usr/bin/curl

0
localhostdotdev