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をソースコードからコンパイルしたときの備忘録
を参考に,書いてある事と同様な修正を行った.
まずは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とcmakeをソースからビルドしてインストールし直すのが良い.
または,ソースからビルドしたcurlを消し, curl,libcurl,cmakeを全てapt install経由でインストールするのどちらか.
その場しのぎとしては,適切な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

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: 2018-11-03 (Sat) 14:43:13 (16d)