古いデータが入った VM を久しぶりに起動してバッチを起動したら curl が動かないことに気づきました。
実際に出たエラーは下記のようなもの。
これは時代が変わって TLSv1.1 以降でないと接続できないようになっているからですね。
† 自分で curl と openssl をソースからビルド
CentOS 5 はすでにサポートが終了しているので使わない方が良いことは間違いありません。
ただ、今回はちょっとこれではどうにもならないので、curl とopenssl を自分でビルドして解決してみました。
今回使ったのは curl-7.65.1 と openssl-1.0.2s で、LD_LIBRARY_PATH の影響を受けないように静的リンクしています。
wget なども使えないので、tar ball は scp でサーバに転送しました。
ビルド方法は以下のような感じでしょうか。
インストールしないで curl のバイナリだけが欲しい場合には make install の代わりに以下のようにしても大丈夫です。
現在も稼働している CentOS 5 系のマシンで yum を実行しようとするとエラーになります。
これはサポートが 2017 年 3 月 31 日で終了しているため、リポジトリが既にミラーサーバーから削除されているためです。
このようなマシンについては速やかにアップデートする必要があることは言うまでもありません。
ただ、今回は移行のためにいろいろソフトウェアを追加したかったので、リポジトリの定義を vault.centos.org に無理やり書き換えて問題を回避してみました。
† 実際の手順
/etc/yum.repos.d/CentOS-Base.repo を以下に従って書き換えるだけです。
# diff -Bw -u CentOS-Base.repo{.bak,}
これを実行すると yum は使えるようになりますが、内容はあくまでも 2017 年 3 月 31 日時点のものなので、このまま運用することは当然のことながらオススメできません。
コマンドラインやシェルスクリプトからお手軽に添付ファイル付きのメールが送れる方法がないかと思って調べてみたら意外と簡単な方法が見つかったのでメモ。
CentOS 7 の場合には mail コマンドが入ってないので yum で mailx をインストールする必要があります。
CentOS 5 などの場合、 mail コマンドが -a オプションをサポートしていない場合がありますが、そのような時には落ち着いて mutt を導入すると CentOS 7 と同じことができます。
来る2017 年 3 月 31 日に RHEL 5 の通常サポート終了が終了し、有料の延長サポートのみになります。
RHEL を使っている人はそれほど多くないと思いますが、注意したいのはこれに伴ってCentOS 5 も 2017 年 3 月 31 日でサポート終了になるということです。CentOS のライフサイクルについてはCentOS Product Specifications に記載があるので、一度確認しておくとよいと思います。
マイグレーションには時間がかかるので、システム管理者は今のうちからシステムの棚卸しを行い、該当するシステムがある場合には速やかにマイグレーション計画を策定したいところです。特にRHEL / CentOS 7 は以前のバージョンと比べて様々な部分の操作性が大きく変わっているので、RHEL / CentOS 5 からの移行はかなりの困難が予想されます。
† 参考
CentOS 標準の GCC はとにかく古く、c++0x や c++11 が必要な場合*1にはコンパイルが通らないこともあります。
というわけで、yum でお手軽にできる gcc のバージョンアップを試してみました。
CentOS 5 の標準の gcc を確認してみると、なんと4.1.2。
CentOS 6 向けの「CentOS 6.5にGCC 4.8.2をレポジトリで入れてみた - 以下省略!」は CentOS 5 にも適用可能なので、以下のように yum に新しいリポジトリを追加し、gcc をインストールしてやります。
あとは scl を使って gcc を切り替えてやると、無事4.8.2 になりました。
yum でカーネルをアップデートしようとしたときに/boot の容量が足りないと以下のようなエラーメッセージが出ることがあります。
これを簡単に解消できる方法が見つかったのでメモ。
At least xMB more space needed on the /boot filesystem.
さくらのクラウドの標準イメージなど boot がかなり小さめに切られている環境で、こういうエラーが出やすいです。エラーの内容はメッセージを読んで字のごとく、/boot パーティションの空き容量が足りないというエラーなので、/boot に含まれている使っていない古いカーネルを削除してやる必要があります。これまではuname -a で使っているカーネルを調べて、 rpm -qa | grep kern で表示されるカーネルのリストからいらないモノを手動で削除していたのですが、これがちょっとした手間でした。
ところが、この作業はyum-utils に含まれているpackage-cleanup というコマンドを使うと一撃で実行できることが分かりました。
地味に困っている人も多いと思うので、覚えておくと良さそうです。
sftp でファイル転送をする必要があったのですが、ごちゃごちゃスクリプトを書くのは面倒なので、curl に一撃でダウンロードやアップロードをする機能があったのを思い出して早速試してみたところ、curl: (1) Unsupported protocol: sftp というエラーが出てしまってしょんぼり。以下をみると分かるとおり、CentOS 5.x に搭載されている curl 7.15.5 は sftp が有効な状態でコンパイルされていませんでした。
仕方がないので、curl の本家サイトからリンクされているhttp://mirror.city-fan.org/ftp/contrib/sysutils/Mirroring/ で公開されている RHEL/CentOS 向けバイナリを利用することにしました。ライブラリの依存関係をかいけつしてやらないといけないので、インストールは以下のような感じになります。
インストール後に curl の状態を調べてみると、ちゃんと sftp が有効になっていることが確認できます。
ここまでくれば、以下のコマンドでファイルを簡単にサーバから出し入れできるようになります。
以下はパスワード認証を使っていますが、sftp は ssh の応用アプリなので公開鍵認証することもできます。
気づいていませんでしたが、CentOS 5系 がマイナーバージョンアップして5.11 になっていました。
クローン元のRHEL5 は 5.11 をもって運用フェーズ2を終了するようなので、CentOS 5 もこれが最後のマイナーリリースになるはずです。
運用フェーズ3による重要なセキュリティパッチの提供は今後3年程度続きますが、早めに移行を考えないといけませんね。
「CentOS 5.11」リリース | SourceForge.JP Magazine
CentOS 5.11はRHEL 5.11のクローンとなり、RHEL 5.11と同一の機能が利用できる。LSI MegaRAID SAS 9360/9380が技術プレビューから正式扱いとなり、OpenSCAPは1.0.8にアップデートされた。なお、Samba 3系ではTrivial Database(TDB)ファイルのフォーマットが変更になるため、アップグレードすると既存のTDBファイルがアップデートされる点を注意している。
サーバ証明書に有効期限があることは、定期的に更新が必要になることからよく知られていますが、ルート証明書や中間証明書のような上位の証明書にも当然のことながら有効期限があります。例えばこのサーバの証明書のルート証明書GeoTrust Global CA は 2022/05/21 13:00:00 までになっています。通常はルート証明書の有効期限が切れる前に、新しいルート証明書が提供されるはずなのですが、それが間に合っていなくて証明書の検証がエラーになって、SSL 接続できないという事象が RHEL5/CentOS5 で発生している模様。
RHEL5/CentOS5でGlobalSignのルート証明書が有効期限切れで大騒ぎ - インフラエンジニアway - Powered by HEARTBEATS
昨晩1/28 21:00JSTにRHEL5/CentOS5にインストールされているルート証明書のうち、GlobalSignの有効期限が切れました。
伴ってREHL5/CentOS5からのHTTPS(SSL)接続にてGlobalSignの証明書を使っているサイトへの接続がエラーになるようになりました。 私の確認している範囲では、 curlコマンドやPHPのcurlライブラリなどでの接続時に接続エラーとなることに起因して以下のような影響が出ています。
Yahoo! JAPAN Tech Blog に「WebAPIやOpenIDでSSLエラーが起きる現象につきまして」というエントリが上がっていたのでこれは何だろうと思っていたら、どうもこういうオチのようです。
CentOS 5.x 系の最新バージョン、5.10がリリース*1されたようなのでメモ。
アップグレードはいつも通りyum update と打ち込むだけなので簡単です。
実行する前にリリースノート*2くらいには目を通しておいた方がいいかもしれません。
RHEL 5.10互換の「CentOS 5.10」リリース | SourceForge.JP Magazine
CentOS 5.10は、CentOS 5系の最新版となる。10月1日のRHEL 5.10から3週間弱でのリリースとなり、MySQL 5.5およびMySQL 5.1がサポートされるなどのRHEL 5.10の新機能が加わっている。MySQL 5.5は2010年末にGAがリリースされており、InnoDBの統合、準同期レプリケーションなど多数の特徴を持つ。なお、MySQL 5.1を含んだ理由は5.5アップグレードに必要となるため。セキュリティアップデートは5.5系で行われるため、運用環境では5.1を利用しないよう警告している。