curl 関係のエラー

An unknown option was passed in to libcurl

ある時

curl: (48) An unknown option was passed in to libcurl

というエラーが発生した.
curlは ソース等からビルド・インストールしたのに対して,libcurl は apt-get 経由でインストールしたりすると,それぞれのバージョンが一致せずこのエラーが起こり得る.
自分の環境で試してみた.

$ curl -V
curl 7.61.1 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.0.2n zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3

あとは Qiita - curlをソースコードからコンパイルしたときの備忘録
を参考に,書いてある事と同様な修正を行った.

まずは curl が参照する libcurl のパスを確認する.

$ which curl
/usr/bin/curl
$ ldd `which curl`
	linux-vdso.so.1 (0x00007ffeba39b000)
	libcurl.so.4 => /usr/lib/x86_64-linux-gnu/libcurl.so.4 (0x00007f1617043000)

/usr/lib/x86_64-linux-gnu にある場合は,apt upgrade で更新されてしまう可能性がある.
一度 libcurl4 をパージして,curl とその動的ライブラリが関係するソフトウェアをソースからビルドしてインストールし直すのが一つの方法.

その場しのぎの方法としては,適切な libcurl.so.4 があるところから libcurl の参照場所へコピーするという方法がある.

$ cd /usr/lib/x86_64-linux-gnu
$ sudo cp libcurl.so.4.5.0 libcurl.so.4.5.0.bak # バックアップ
$ sudo cp /usr/lib/libcurl.so.4.5.0 .           # 適切なファイルのコピー 
$ sudo ln -fs libcurl.so.4.5.0 libcurl.so.4     # シンボリックリンク作成

最終的に,curl と libcurl のバージョンが一致していればOK.

$ curl -V
curl 7.61.1 (x86_64-pc-linux-gnu) libcurl/7.61.1 OpenSSL/1.1.0g zlib/1.2.11 libssh2/1.8.0

一度修正しても,update & upgrade で更新する度に同じことが発生してしまうのなら,curl も libcurl も apt 経由にした方が良いかも.

no version information available

上記のように libcurl.so を変更すると cmake で依存関係のエラーが出た.

/usr/lib/x86_64-linux-gnu/libcurl.so.4: no version information available (required by /usr/bin/cmake)

この場合は cmake もこの新しい libcurl のバージョンに対応するよう再インストールする.
CMake に限らず curl が関係しているものは同様.


Front page   Edit Diff Attach Copy Rename Reload   New List of pages Search Recent changes   Help   RSS of recent changes
Last-modified: 2019-04-03 (Wed) 05:57:44 (1842d)