これは本当にイライラします。標準のcurlコマンドを実行しようとすると、このエラーが発生し続けます。
curl --url https://install.meteor.com | sh
curl: (48) An unknown option was passed in to libcurl
誰でもそれを修正する方法を知っていますか?
私自身、この問題に遭遇しました。おおざっぱな調査の結果、私は このバグトラッカーエントリ につながりましたが、更新してもうまくいきませんでした。最近、ソースからlibcurl
の最新バージョンをビルドしたので、ディレクトリ構造が混同されていることに関係しているのではないかと考えました。おそらくまったく同じ状況ではないと思いますが、マウンテンライオンが同様のエラーを導入したので、問題を解決するために実行した手順が役立つ可能性があります。
まず、which curl
を実行して、バイナリの呼び出し元を確認します。次に、locate -r /curl$
を実行して、場所が実際に存在することを確認します。そうでない場合(これは私の場合の問題でした)、curl
が提供するすべてのフルパスを使用してlocate
を実行し、python-pycurl
のような明らかに余分なパスを無視します。
機能するものを見つけたら、そのwhich
からシンボリックリンクを作成するか、後者を削除してシェルが自分で正しいものを見つけられるかどうかを確認します。私にとっては、修正は/usr/local/bin/curl
を削除するだけの簡単なもので、which curl
が/usr/bin/curl
で正しく応答し、curl
自体が通常の操作に戻りました。
Alpine Linuxでこの問題が発生しました。
修正は、curlに加えてcurl-devをインストールすることでした。
ほとんどの場合、curlが使用しようとする1つ以上のオプションを認識していない古いcurl
を使用する新しいlibcurl
があります。
curl -V
はこれを表示し、ldd [path to 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...]
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
を上書きする前。
このエラーも発生しましたが、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ソースディレクトリから次のコマンドを実行しました。
Sudo make uninstall
./configure --disable-shared
make
Sudo make install
これで、curlのバージョンがlibcurlのバージョンと一致し、機能します。
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のままでした。
そのため、パッケージ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 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
_に自動的に配置しました。その後、うまくいきました!
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)
パッケージ化されたインストールを介してソースからコンパイルした後に同じ問題が発生し、configure
を使用して正しいフラグで解決しました:
_./configure --prefix=/usr --libdir=/usr/lib64
_
_--libdir=
_オプションがないと、更新されたバージョンのlibcurlが_/usr/lib
_ではなく_/usr/lib64
_にインストールされ、新しいcurl
バイナリがまだアクセスしていた古いライブラリ、非互換性につながります。
macosでこれを得た、どういうわけかカールは自作からインストールされてリンクされた、解決策は:
which curl
(/usr/local/bin/curl
私の場合)rm /usr/local/bin/curl
。今which curl
あげる /usr/bin/curl