豚吐露@wiki

Install

最終更新:

ohden

- view
管理者のみ編集可


■Download
【OpenSSH】
FreeBSD用
ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/
FreeBSD以外用
ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/
ってなってるらしい。んで、
> wget ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-5.3p1.tar.gz
とか
> wget http://ftp.jaist.ac.jp/pub/OpenBSD/OpenSSH/portable/openssh-5.6p1.tar.gz
とかやってdownload

その他に必要な物として

> wget http://www.zlib.net/zlib-1.2.3.tar.gz

【OpenSSL】
http://www.openssl.org/
> wget http://www.openssl.org/source/openssl-0.9.8m.tar.gz

がある。

■解凍
取得した場所に行って
> tar xzvf openssh-5.3p1.tar.gz
> tar xzvf openssl-0.9.8m.tar.gz 
> tar xzvf zlib-1.2.3.tar.gz 

Win環境で『Lhaplus』じゃとなんでか解凍できんかった。
『Lhaplus』ってtar gzipに対応しとらんのんだっけ?

■導入
解凍ディレクトリで以下のコマンドを実施。

【OpenSSL】
コマンド例
> ./config --prefix=/usr/local shared
> make
> make test
> sudo make install
設定
ビルド
動作確認
導入
configスクリプトオプション
--prefix=【path】 ライブラリの導入先を絶対pathで指定
ココで指定した『【path】/bin』に実行ファイルが、『【path】/lib』に共有ライブラリが、『【path】/include』に外部ヘッダが格納される
例の場合だと『/usr/local/bin』と『/usr/local/lib』『/usr/local/include』となる。
--openssldir=【path】 実行ファイル、共有ライブラリ以外を導入するpathを指定
default: /usr/local/ssl
shared 共有ライブラリを作成したい場合指定する

【zlib】
コマンド例
> ./configure --shared --prefix=/usr/local
> make
> make test
> sudo make install
設定
ビルド
動作確認
導入
configスクリプトオプション
--shared 共有ライブラリ作成
--prefix=PREFIX 導入先pathの指定
--exec_prefix=EXPREFIX
--libdir=LIBDIR
--includedir=INCLUDEDIR

インストール中に『/lib/libc.so.6: could not read symbols: Bad value』って出て落ちる時は、
『--include /usr/include/errno.h』をコンパイルオプションに追加してやる。
configureで作成されたMakefileを開き、『CFLAGS』に追加してやる
e.g.)
CFLAGS=-O3 -DNO_snprintf -DHAS_sprintf_void -DNO_ERRNO_H
↓
CFLAGS=-O3 -DNO_snprintf -DHAS_sprintf_void -DNO_ERRNO_H --include /usr/include/errno.h

【OpenSSH】
コマンド例
> ./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh
> make
> sudo make install
Makefileの作成
build
install
configスクリプトオプション
--prefix=【path】 Install path
--sysconfdir=【path】 設定file格納path

~注意~
configureの過程で、gccのpathに複数のOpenSSL versionが存在するのが原因でerrorが出る場合がある。
解決するにはgccのpathに含まれるOpenSSLのversionを1つにすれば良い。

OpenSSHにはOpenSSLのversionを調べるscriptが同梱されている。まずはそれを実行。
> sh contrib/findssl.sh
sh contrib/findssl.sh
Searching for OpenSSL header files.
0x009080dfL /home/*****/wk_hpc/archive/openssl-0.9.8m/crypto/opensslv.h
0x009080dfL /home/*****/wk_hpc/archive/openssl-0.9.8m/include/openssl/opensslv.h
0x009080dfL /usr/local/include/openssl/opensslv.h

Searching for OpenSSL shared library files.
0x0090807fL /lib/libcrypto.so.0.9.8
0x0090807fL /lib/i486/libcrypto.so.0.9.8
0x009080dfL /lib/i586/libcrypto.so.0.9.8
0x0090807fL /lib/i686/cmov/libcrypto.so.0.9.8
0x0090807fL /usr/lib/libcrypto.so.0.9.8
0x009080dfL /usr/local/lib/libcrypto.so
0x009080dfL /usr/local/lib/libcrypto.so.0.9.8

Searching for OpenSSL static library files.
0x009080dfL /usr/local/lib/libcrypto.a
結果、gccのpath上に存在するOpenSSLのversionが表示される。
今回は『0x0090807fL』『0x009080dfL』が競合してたらしい。
ここで
『Searching for OpenSSL header files.』の『opensslv.h』と『Searching for OpenSSL shared library files.』の『libcrypto.so』に同じversionのものがあるか探す。
あったら、そのversion以外のfileをgccのpath外に移動させる。
で、configureを実施、移動させたfileは元に戻しておく。


OpenSSLのheaderとlibraryチェックでどうしても落ちる...
どうやら、--with-ssl-dirで適切なpathが指定できてれば、--without-openssl-header-checkを指定してしまう方が楽みたい。(´・ω・`)
--with-ssl-dir=/usr/local
--without-openssl-header-check

e.g.)
./configure --prefix=/usr/hpc/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/hpc/local --with-zlib=/usr/hpc/local --without-openssl-header-check
./configure --prefix=/usr/local/openssh --sysconfdir=/etc/ssh --with-ssl-dir=/usr/local --with-zlib=/usr/local --without-openssl-header-check


libssh.aと結合しようかしたら...
strlcpy()とstrnvis()が無いって怒られた。(´Д`)
OpenSSHのMakefileみたら確かに結合対象になっとらんね...
仕方が無いので『LIBSSH_OBJS』に『openbsd-compat/strlcpy.o openbsd-compat/vis.o』足してみた...通った...良いのか?こんなんで...(´Д`)

あと、OpenSSHのconfigureが通らん状況回避として以下をinstallする方法がある
> sudo apt-get install libssl-dev
意外とこの方法の方があっさり通ったりする・・・



更新日: 2010年11月10日 (水) 14時46分12秒
記事メニュー
ウィキ募集バナー