OpenSSHビルドできず…OpenSSLのバージョン不一致エラーの解決方法は?

このQ&Aのポイント
  • Raspberry Pi Model B(初代)でOpenSSHをビルドしようとすると、OpenSSLのバージョン不一致エラーが発生し、コンパイルできません。
  • コンパイル時のエラーメッセージには、OpenSSLのヘッダーバージョンとライブラリバージョンが一致しないという内容が表示されています。
  • 解決方法としては、ヘッダーチェックを無効化するオプションを使用するか、正しいバージョンのOpenSSLをインストールすることが必要です。
回答を見る
  • ベストアンサー

OpenSSHがビルドできない……

お世話になります、Raspberry Pi Model B(初代のやつです)で、OpenSSHをビルドしようとすると、 checking OpenSSL header version... 1000203f (OpenSSL 1.0.2c 12 Jun 2015) checking OpenSSL library version... 1000105f (OpenSSL 1.0.1e 11 Feb 2013) checking whether OpenSSL's headers match the library... no configure: error: Your OpenSSL headers do not match your library. Check config.log for details. If you are sure your installation is consistent, you can disable the check by running "./configure --without-openssl-header-check". Also see contrib/findssl.sh for help identifying header/library mismatches. と出てしまいコンパイルできません。 ./configure --with-ssl-dir=/usr/local/ssl --with-md5-passwords でコンパイルしており、SSLの位置は指定してあります。 なお、OpenSSLについては、「./config shared」でコンパイルしており共有ライブラリーがあります。 さらに、/etc/ld.so.confにもライブラリー位置は記載しておりntpdはそれで正常にビルドできています。 ・contrib/findssl.shの結果です。 Searching for OpenSSL header files. OPENSSL_VERSION_NUMBER /usr/src/openssl-1.0.2c/include/openssl/opensslv.h OPENSSL_VERSION_NUMBER /usr/src/openssl-1.0.2c/crypto/opensslv.h OPENSSL_VERSION_NUMBER /usr/src/openssl-1.0.2b/include/openssl/opensslv.h OPENSSL_VERSION_NUMBER /usr/src/openssl-1.0.2b/crypto/opensslv.h OPENSSL_VERSION_NUMBER /usr/local/ssl/include/openssl/opensslv.h Searching for OpenSSL shared library files. 0x1000105fL /usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0 0x1000203fL /usr/src/openssl-1.0.2c/libcrypto.so.1.0.0 0x1000203fL /usr/src/openssl-1.0.2c/libcrypto.so 0x1000202fL /usr/src/openssl-1.0.2b/libcrypto.so.1.0.0 0x1000202fL /usr/src/openssl-1.0.2b/libcrypto.so 0x1000203fL /usr/local/ssl/lib/libcrypto.so.1.0.0 0x1000203fL /usr/local/ssl/lib/libcrypto.so Searching for OpenSSL static library files. 0x1000203fL /usr/src/openssl-1.0.2c/libcrypto.a 0x1000202fL /usr/src/openssl-1.0.2b/libcrypto.a 0x1000203fL /usr/local/ssl/lib/libcrypto.a 他にライブラリーを指定する必要があるのでしょうか? よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • drum_KT
  • ベストアンサー率43% (1108/2554)
回答No.1

>他にライブラリーを指定… ではなくて、出ているメッセージの内容にしたがったらいいのでは? 以下のようなことが書いてあるのですが。 ・ヘッダーバージョンチェックの結果:1.0.2c ・ライブラリバージョンチェックの結果:1.0.1e ・ヘッダーのバージョンがライブラリと整合していません。詳細は、config.logの中を確認してください。 ・もしインストレーションが確実に正しい場合は、以下のコマンドでバージョンチェックを省略することができます。"./configure --without-openssl-header-check" ライブラリのファイルの実体が1.0.1eになっている可能性がありそうな感じですけども。まずは、config.logの中を読んで確認です。 …エラーメッセージにはちゃんと意味があるので、もし英語がわからなければ辞書を引きながらでもちゃんと読まないと。

keiton0111
質問者

お礼

export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/usr/local/ssl/lib:/usr/lib" とすることにより解決しました。 ライブラリーの優先順位があったようです。 ありがとうございました!!

keiton0111
質問者

補足

回答ありがとうございます。 --without-openssl-header-checkでmakeもしたのですが、sshをlddで確認したところ、/usr/lib/arm-linux-gnueabihf/libcrypto.so.1.0.0を読み込んでおり/usr/src/openssl-1.0.2c/libcrypto.so.1.0.0を読み込んでいませんでした。 どうすれば、/usr/src/openssl-1.0.2c/libcrypto.so.1.0.0を使うことができるのでしょうか?

関連するQ&A

  • opensshのインストールができない

    solaris9上でOPENSSH-4.2p1をインストールしていますが、うまくいきません。下記のようなエラーが出ます。 未定義の 最初に参照している シンボル ファイル dlsym /usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o) (シンボルは暗黙 の依存性 /usr/lib/libdl.so.1 に属しています) dlopen /usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o) (シンボルは暗黙 の依存性 /usr/lib/libdl.so.1 に属しています) dlclose /usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o) (シンボルは暗黙 の依存性 /usr/lib/libdl.so.1 に属しています) dlerror /usr/local/ssl/lib/libcrypto.a(dso_dlfcn.o) (シンボルは暗黙 の依存性 /usr/lib/libdl.so.1 に属しています) ld: 重大なエラー: シンボル参照エラー。ssh に書き込まれる出力はありません。 collect2: ld returned 1 exit status make: *** [ssh] Error 1 opensslは0.9.8、zlibは1.2.3をソースから入れました。 アドバイスお願いします。

  • CentOs5.8Apacheのリビルド

    CentOS5.8でSNIを使おうと思っています。 そのためのOpenSSL1.0.1eはインストールできました そのOpensslをApacheに適用させるために既存のApacheのリビルドをしたいと思っています ですが、現在のApacheの設定をそのままにリビルドする方法はありますか? 現在1日はまってしまい、非常に困っています。 下記OpenSSLの更新作業 ===================================================== # wget http://www.openssl.org/source/openssl-1.0.1e.tar.gz # tar zxvf openssl-1.0.1e.tar.gz # cd openssl-1.0.1e # ./config enable-tlsext -fPIC shared # make # make test # make install ※デフォルト/usr/local/ssl/にインストールされるみたいです。 ・まずはパスを認識させます # echo /usr/local/ssl/lib > /etc/ld.so.conf.d/openssl.conf # ldconfig ・既存のopensslの実行ファイルを今回インストールした物と変更します。 # cd /usr/bin # mv openssl openssl.old # ln -s /usr/local/ssl/bin/openssl ・シェアードライブラリが正しくリンクできているか確認 # ldd /usr/local/ssl/bin/openssl linux-vdso.so.1 => (0x00007fff49bf2000) libssl.so.1.0.0 => /usr/local/ssl/lib/libssl.so.1.0.0 (0x00002b5327442000) libcrypto.so.1.0.0 => /usr/local/ssl/lib/libcrypto.so.1.0.0 (0x00002b53276a7000) libdl.so.2 => /lib64/libdl.so.2 (0x0000003f36000000) libc.so.6 => /lib64/libc.so.6 (0x0000003f35400000) /lib64/ld-linux-x86-64.so.2 (0x0000003f34c00000) =================================================================================== 宜しくお願い致します。

  • OpenSSLの共有ライブラリ(libcrypto.so)動的リンクにつきまして

    [環境] Linux version 2.6.9-67.EL gcc version 3.4.6 (Red Hat 3.4.6-8)) 以下のように、OpenSSLの共有ライブラリlibcrypto.soをロードする プログラムを書いているのですが、 ------ #include <stdio.h> #include <dlfcn.h> #include <errno.h> void main(void) { void* hSO; hSO = DLL_OPEN("/usr/local/ssl/lib/libcrypto.so", RTLD_NOW); if( hSO == NULL ) { printf("%s\n", dlerror()); } else { // 処理 } } ------ hSO = DLL_OPEN("/usr/local/ssl/lib/libcrypto.so", RTLD_NOW); で、NULLが返って来てしまいます。 [dlerror内容] /usr/local/ssl/lib/libcrypto.so: cannot open shared object file: No such file or directory しかし、このパスには、シンボリックリンクされたlibcrypto.soファイルが存在します。 試しに、同ディレクトリにあるlibcrypto.so.0.9.8mも試しましたが、同じエラーが出力されました。 パスの指定方法に、何か行う必要があるのでしょうか。

  • libssh2のインストールについて

    php内でssh2_conect()を使用する必要があり ssh2をインストールする必要があるのですが、 ssh2のインストールにはlibssh2が必要となり、 libssh2インストールでエラーとなり困っています。 どなたかご教示いただけないでしょうか。 よろしくお願いします。 環境 OS CentOS 6.7 libssh2 version 1.2.8 コマンドおよび結果 % wget http://www.libssh2.org/download/libssh2-1.2.8.tar.gz % tar zxf libssh2-1.2.8.tar.gz % cd libssh2-1.2.8 % ./configure configure結果 checking for libssl... no checking for libgcrypt... no configure: error: cannot find OpenSSL or Libgcrypt, try --with-libssl-prefix=PATH or --with-libgcrypt-prefix=PATH % ./configure --with-libssl-prefix=/usr/local/ssl/lib --with-libgcrypt-prefix=/usr/local/ssl/lib /usr/local/ssl/libの配下にはいかが存在しています。 libcrypto.so libssl.a libssl.so.1.0.0 libcrypto.a libcrypto.so.1.0.0 libssl.so 結果はやり同じになってしまいます… checking for libssl... no checking for libgcrypt... no configure: error: cannot find OpenSSL or Libgcrypt, try --with-libssl-prefix=PATH or --with-libgcrypt-prefix=PATH その他、必要情報があれば教えていただけますでしょうか。 よろしくお願いいたします。

  • LINUX版のDiCEでDNSが更新できません

    RedHat9でDiCE(Linuxバージョン)でDNSを更新しようとしています。 DiCEの基本設定、イベント追加を行って更新を実行すると、 5/24 21:45 にipupdateの実行に失敗しました Error: サーバーに接続できませんでした のエラーで更新出来ませんでした。 DiCEのlogディレクトリにid000000.logというログがあり その中に"OpenSSL library is required."と書かれていました。 さらに、DiCEのホームページ上で 「一部のサービス("@nifty"や"DION"ほか)を利用する場合は OpenSSLのライブラリがが必要となります」 libssl.so、libcrypto.so (又は /usr/lib/libssl.so.0、/usr/lib/libcrypto.so.0) と書かれていましたのでこの2つをwebで探してインストールしたのですが、 (rpm -vhi opensslxx.xxxx..i386.rpmでインストール ) 正常にDNS更新できるようになりません。 どのようにすれば良いのでしょうか? Dynamic DO!.jpを利用しています。 現在、openssl-0.9.7a-2 がインストールされてる状態です。 よろしくお願い致します。

  • Apacheインストール時にエラー

    はじめまして。 Solaris10の環境で、OpenSSL9.8lをソースからインストールし Apache2.2.14の所でmakeエラーが発生しました。 Googleで調べたのですが、よくわかりません。 ご存知の方、教えていただけたら幸いです。 ./configure --enable-mods-shared=all--enable-ssl=shared --enable-ssl --with-ssl=/usr/local/ssl --with-included-apr make /usr/local/src/httpd-2.2.14/srclib/apr/libtool --silent --mode=compile gcc -g -O2 -DSOLARIS2=10 -D_POSIX_PTHREAD_SEMANTICS -D_REENTRANT -D_LARGEFILE64_SOURCE -I/usr/local/src/httpd-2.2.14/srclib/pcre -I. -I/usr/local/src/httpd-2.2.14/os/unix -I/usr/local/src/httpd-2.2.14/server/mpm/prefork -I/usr/local/src/httpd-2.2.14/modules/http -I/usr/local/src/httpd-2.2.14/modules/filters -I/usr/local/src/httpd-2.2.14/modules/proxy -I/usr/local/src/httpd-2.2.14/include -I/usr/local/src/httpd-2.2.14/modules/generators -I/usr/local/src/httpd-2.2.14/modules/mappers -I/usr/local/src/httpd-2.2.14/modules/database -I/usr/local/src/httpd-2.2.14/srclib/apr/include -I/usr/local/src/httpd-2.2.14/srclib/apr-util/include -I/usr/local/src/httpd-2.2.14/modules/proxy/../generators -I/usr/local/ssl/include -I/usr/local/src/httpd-2.2.14/modules/ssl -I/usr/local/src/httpd-2.2.14/modules/dav/main -prefer-non-pic -static -c htpasswd.c && touch htpasswd.lo /usr/local/src/httpd-2.2.14/srclib/apr/libtool --silent --mode=link gcc -g -O2 -L/usr/local/ssl/lib -R/usr/local/ssl/lib -L/usr/local/lib:-L/usr/sfw/lib:-L/usr/lib:-L/opt/sfw/lib:-L/usr/local/ssl/lib -o htpasswd htpasswd.lo -lm /usr/local/src/httpd-2.2.14/srclib/pcre/libpcre.la /usr/local/src/httpd-2.2.14/srclib/apr-util/libaprutil-1.la -lexpat -liconv /usr/local/src/httpd-2.2.14/srclib/apr/libapr-1.la -luuid -lsendfile -lrt -lsocket -lnsl -lpthread Undefined first referenced symbol in file atomic_swap_32 /usr/local/src/httpd-2.2.14/srclib/apr/.libs/libapr-1.so atomic_cas_ptr /usr/local/src/httpd-2.2.14/srclib/apr/.libs/libapr-1.so atomic_swap_ptr /usr/local/src/httpd-2.2.14/srclib/apr/.libs/libapr-1.so atomic_inc_32_nv /usr/local/src/httpd-2.2.14/srclib/apr/.libs/libapr-1.so atomic_dec_32_nv /usr/local/src/httpd-2.2.14/srclib/apr/.libs/libapr-1.so atomic_cas_32 /usr/local/src/httpd-2.2.14/srclib/apr/.libs/libapr-1.so ld: fatal: Symbol referencing errors. No output written to .libs/htpasswd collect2: ld returned 1 exit status make[2]: *** [htpasswd] エラー 1 make[2]: ディレクトリ `/usr/local/src/httpd-2.2.14/support' から出ます make[1]: *** [all-recursive] エラー 1 make[1]: ディレクトリ `/usr/local/src/httpd-2.2.14/support' から出ます make: *** [all-recursive] エラー 1 よろしくお願いします。

  • 共有ライブラリが見つからない

     お世話になります。  xxxxxというソフトウェアを動作させようとしたところ、下記のようなエラーメッセージが出ました。 > ld.so.1: xxxxx: fatal: libsasl.so: version `SUNWprivate1.1' not found (required by file /usr/lib/mps/libldap60.so) > ld.so.1: xxxxx: fatal: libsasl.so: open failed: No such file or directory > rc = 9 ■質問1  これは、 ・ld.so.1という共有モジュールが ・内部的にrequired by file /usr/lib/mps/libldap60.so というモジュールを呼んでいて ・それがlibsasl.soを呼ぼうとしたときに ・`SUNWprivate1.1'というバージョンのものがない というエラーだと解釈してよろしいでしょうか。 ■質問2  findでlibsasl.soを検索したところ、下記の場所にありました。 > /usr/lib/sparcv9/libsasl.so > /usr/lib/libsasl.so crleコマンドで共有ライブラリの検索パスを見てみたところ、/usr/libは含まれていました。 > @root# crle -v > > 構成ファイル [バージョン 4]: /var/ld/ld.config > デフォルトライブラリパス (ELF): /usr/lib:/usr/local/ssl/lib/:/usr/lib/mps > トラステッドディレクトリ (ELF): /usr/lib/secure:/opt/SUNWmsgsr/lib:/usr/lib/mps > > コマンド行: > crle -c /var/ld/ld.config \ > -l /usr/lib:/usr/local/ssl/lib/:/usr/lib/mps \ > -s /usr/lib/secure:/opt/SUNWmsgsr/lib:/usr/lib/mps  それでもエラーが出るのは ・このディレクトリにあるlibsasl.soが`SUNWprivate1.1'というバージョンではないから という解釈でよろしいでしょうか。 ■質問3 `SUNWprivate1.1'というバージョンのlibsasl.soを検索する方法があるでしょうか。  いろいろですみません。よろしくお願いいたします。

  • アプリケーションのインストールについて

    既存のアプリケーション(openssl)のバージョンが古いので、 新しいアプリケーションのインストールをしようと思ったのですが、 何故かうまくいきません。どなたか教えて下さい。 そもそもLinuxは、旧のアプリを残したまま 新のアプリをインストールする事できるのでしょうか? 旧のアプリを"rpm -e openssl"とコマンドを打つと、"xxxのパッケージに必要とされています" と表示され、別のパッケージにリンクされているようでアンインストールするのを 取り止めました。。。。それとも旧から新規に切り替える方法があるのでしょうか?・・ "rpm -Uhv openssl"と打つと、そんなファイルやディレクトリはありませんと返ってきます。 インストール後、パスを通すため、 /etc/ld.so.confに以下を追加 "/usr/local/ssl/lib" /etc/bashrcに以下を追加 "EXPORT PATH=$PATH:/usr/local/ssl/bin" 確認をするため [root@localhost root]# openssl version と打ち込むと、旧が表示されてしまいます。 どうすれば最新のopensslが起動するのでしょうか?・・・・ 恐れ入りますが教えて下さい。。 先週から悩んでいて、困っております。

  • PHPのビルドについて質問です。

    ご教授願います。 LINUX上でPHPをソースからビルドした場合、例えば./configureオプションに --with-readline というオプションをつけたとします。その場合別途インストールした libreadlline.soというモジュールが共有ライブラリとして動的に作用しますよね? lddコマンドで共有ライブラリをしらべると linux-vdso.so.1 => (0x00007fff86bff000) libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f70ed4ab000) libz.so.1 => /lib64/libz.so.1 (0x00007f70ed294000) libexslt.so.0 => /usr/lib64/libexslt.so.0 (0x00007f70ed080000) libtidy-0.99.so.0 => /usr/lib64/libtidy-0.99.so.0 (0x00007f70ece21000) libreadline.so.6 => /lib64/libreadline.so.6 (0x00007f70ecbdd000) libncurses.so.5 => /lib64/libncurses.so.5 (0x00007f70ec9bb000) librt.so.1 => /lib64/librt.so.1 (0x00007f70ec7b3000) libmcrypt.so.4 => /usr/local/lib/libmcrypt.so.4 (0x00007f70ec580000) libgmp.so.3 => /usr/lib64/libgmp.so.3 (0x00007f70ec325000) libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x00007f70ec0ff000) とこのような共有状態が確認できます。だだこれだと、libreadline.so.6 => /lib64/libreadline.so.6という共有モジュールを 意図して削除した場合、動的リンクができずに php -a によるインタラクティブモードが動かせなくなります。 これを回避するために、静的リンク?というのでしょうかphpバイナリそのものに組み込むことはできないのでしょうか? つまり外部のlibreadline.soに依存せずにphpを動かすと行った具合です。 もちろん、これがなんのいみのない処理なのはわかります。起動するたびにメモリを大量に消費してしまうのでしょう。 ただ、こういうlibreadline.soなどの共有モジュールをphpバイナリに組み込める方法があるかどうかをしって実際に試してみたいのです。 LINUXなどPHPなどに造詣が深い方よろしっくご教授ください。お願い致します。

    • 締切済み
    • PHP
  • OpenLDAPのインストール

    プログラム初心者です。 Solaris10にOpenLDAPを導入する作業をしています。OpenLDAPのバックエンドにMySQL Clusterを利用しようとしているのですが設定の部分でエラーが発生してしまい、長いこと先に進んでいません。 内容は以下です。 ./configure --enable-ndb=yes --enable-bdb=no --enable-hdb=no ・・・(省略) configure:21927: result: no configure: error: could not locate ndbclient library **config.logの内容: ・・・(省略) Undefined first referenced symbol in file __1cG__CrunKvector_des6FpvLLpF1_v_v_ /mysql/mysqlc/lib/libndbclient.so __1cG__CrunKvector_con6FpvLLpF1_vp2_v_ /mysql/mysqlc/lib/libndbclient.so __1cG__CrunKvector_del6FpvLpF1_v_1_ /mysql/mysqlc/lib/libndbclient.so __1cG__CrunKvector_new6FpvLLpF1_vp2_1_ /mysql/mysqlc/lib/libndbclient.so __1c2n6FLpv_0_ /mysql/mysqlc/lib/libndbclient.so __1c2N6FLpv_0_ /mysql/mysqlc/lib/libndbclient.so __1cG__CrunJzero_ptrs6FpvL_v_ /mysql/mysqlc/lib/libndbclient.so __1cG__CrunSregister_exit_code6FpG_v_v_ /mysql/mysqlc/lib/libndbclient.so __1cDstdFqsort6FpvLLpFpkv3_i_v_ /mysql/mysqlc/lib/libndbclient.so __1c2N6FL_pv_ /mysql/mysqlc/lib/libndbclient.so __1c2n6FL_pv_ /mysql/mysqlc/lib/libndbclient.so __1c2K6Fpv_v_ /mysql/mysqlc/lib/libndbclient.so __1c2k6Fpv_v_ /mysql/mysqlc/lib/libndbclient.so ld: fatal: Symbol referencing errors. No output written to conftest collect2: ld returned 1 exit status ・・・(省略) **環境変数 PATH:/usr/sfw/bin/64:/usr/local/bin:/mysql/mysqlc/bin:/mysql/mysqlc/lib:/usr/sbin:/usr/bin:/usr/lib/64:/usr/lib:/usr/ccs/bin LDFLAGS:-L/mysql/mysqlc/lib -L/usr/local/ssl/lib -L/usr/local/lib -L/usr/sfw/lib/mysql CPPFLAGS:-I/mysql/mysqlc/include -I/usr/local/ssl/include -I/usr/local/include -I/usr/include エラーについても検索してみたのですが、似たような情報が少なく解決できませんでした。 何よりSolarisを触ってまだ2ヶ月もたっていないのでわからないことだらけです。 何卒よろしくお願いいたします。