CentOS5 wgetをアップデートする
先日発表された「CVE-2014-4877」の対策のため、wgetをアップデートしました。
1台はすんなり行ったのに、残りのサーバで、おもいっきりハマってしまい、往生したので、今後のために記しておきます。
wget1.16にアップデートするのに、rpmが見つからなかったので、
ソースからインストールすることになりました。
1.ソースを取りに行く
http://ftp.gnu.org/gnu/wget/ からダウンロード出来るということなので、
wget http://ftp.gnu.org/gnu/wget/wget-1.16.tar.gz
でファイルをダウンロードします。
2.圧縮ファイルを展開
オプションにxzvfを付けます。
因みに
x:書庫からファイルを取り出す。
z:gzipの処理
v:処理ファイルの一覧表示
f:指定した書庫ファイルとか、デバイスを使う。
tar -xzvf wget-1.16.tar.gz
3.展開したファイルに移動
cd wget-1.16
4.Makefileを作成失敗
いきなり、./configureしたら
configure: error: --with-ssl was given, but GNUTLS is not availableと怒られてしまいました。
色々調べると、オプションに「--with-ssl=openssl」を付ければ良いということでした。そこで改めて、
./configure --with-ssl=openssl
画面上を色々な文字列が流れ過ぎた後…。またもやエラー。
configure: error: --with-ssl=openssl was given, but SSL is not available、
GNUTLSがSSLに変わっただけじゃん。
どうしたら良いのか、分からなくなったので、取り合えすHelpを見ることに…。
./configure --help
5.SSL要らなければいいかもね
--without-sslオプションを使えば、SSL無視できるよ
でも、httpsからはダウロードできないけど…。
試しに、このオプションを付けてるとMakefileが作れ、コンパイル、インストールができました。
しかし、httpsサイトからのダウンロードができません。
やはり、不便なので、他の方法を探すことにしました。
再び、色々検索し「gnutls-devel」と言うパッケージが必要だ。
と言う文言に当りました。
6.gnutls-devel入れてみる
パッケージなので、ココは素直にyumを使いました。
yum info gnutls-devel
パッケージが存在していたので、そのままインストールしました。
yum install gnutls-devel
そして再びMakefile作成をしてみましたが、ダメでした。
configure: error: --with-ssl was given, but GNUTLS is not available
configure: error: --with-ssl=openssl was given, but SSL is not available
「./configure」しても、「./configure --with-ssl=openssl」してもエラー。
7.手詰まりから一転
正直どうしたらいいのか、わからなくなりました。
console.logを見ろとのことで、見てみましたが、さっぱり読解できませんでした。
そんな折、ふとgnutls-develがあるんだったら、openssl-develもあるんじゃない?と
思い、「devel」について、調べてみました。
ソースからコンパイルする時に、必要なヘッダファイルなどを含んでいるファイル。
あっ! もしかして、コレ?!
この間、「Heartbleed」でOpenSSLアップデートしたけど、openssl-develなんて表示観た覚えがない。
rpm -qa | grep openssl
openssl-0.9.8e-31.el5_11
あっ、やっぱり…。openssl-develない。
yum install openssl-devel
それでは、再々度Makefile。
./configure --with-ssl=openssl
無事成功したようなので、makeする前に旧パッケージ版のwgetを削除しておきます。
yum remove wget
8.やっとコンパイル・インストール
rootユーザーとして、一気に連続処理します。
make && make install
出来た!
9.一難去ってまた、一難
よし、バージョンの確認
wget -V
あれ? 何処行った?
which wget
/usr/local/bin/wget
しまった!--prefix=/usrオプションつけ忘れた。(デフォルトでは、/usr/localに入る)
シンボリックリンクを付けて対応します。
ln -s /usr/local/bin/wget /usr/bin/wget
バージョンを確認します。
wget -V
やっと出来た。
10.おわり
試しに、wgetで適当なファイルをhttpsサイトから取ってみました。
無事にダウンロードできたので、たぶんコレで大丈夫だと思います。