RHELを題材にソースが見える環境を作る

ソースコードを見ればトラブルの原因がわかる 筆者は、顧客の環境で発生した弊社製品(Red Hat Enterprise Linux、以下RHEL)のトラブルの原因を調査する仕事に従事しています。この仕事をしていて大変に印象的なのは、「簡易なソースコード読解作業」によって多くの問題の原因を突き止めるに

大和 正武

2009年3月5日 20:00

ソースコードを見ればトラブルの原因がわかる

 筆者は、顧客の環境で発生した弊社製品(Red Hat Enterprise Linux、以下RHEL)のトラブルの原因を調査する仕事に従事しています。この仕事をしていて大変に印象的なのは、「簡易なソースコード読解作業」によって多くの問題の原因を突き止めるに至っている、ということです。

 「簡易なソースコード読解作業」とは、例えば次のようなものです。今、トラブルに対応すると考えられるログ出力を得たとします。トラブルの原因を究明したいが、ログだけを見てもその意味がわかりません。ところがこのログ出力を行っているソースコード行を特定し、その行を囲うif文の条件式から、ログの意味がわかり、まさにそのログがトラブルの原因を説明していたことが判明しました。

 この程度の読解作業であれば、文字列検索コマンドの実行方法と対象となるプログラミング言語の文法を知っていれば実施できます。たとえ解決に至らなくとも、コストはそれほどかからないので、障害の原因特定には「ぜひソースコードを活用してください」とRHELをお使いのみなさまにお勧めしたいところです。

なぜ、手間と時間がかかるのか

 ところがRHELでこれを実行しようとすると手間と時間がかかります。読解作業の前提となるソースコードが簡単には閲覧できないのです。ソースコードがなければ読解のテクニックや豊富な経験を披露しようもありません。以下に、この手間と時間を具体的に説明します。この説明は、RHELに限らずFedoraなどRPM系のGNU/Linuxディストリビューションにもあてはまるはずです。

 1つ目が入手先を特定する手間とダウンロードの待ち時間です。RHELは1000個程度のバイナリパッケージの集合からなります。各バイナリパッケージに対して、src.rpmと呼ばれる形式でそのソースコードをftp.redhat.com からanonymous ftp経由で入手できます。ここでまず、目的のパッケージの目的のバージョンがftp.redhat.comのどこにあるのかを捜す手間と、ダウンロードの待ち時間が発生します。

 2つ目がsrc.rpmファイルのインストールの手間です。rpmコマンドを実行して、src.rpmファイルをファイルシステムにインストールする必要があります。

 3つ目がソースコード復元の手間です。src.rpmファイルをrpmコマンドでインストールすると、/usr/src/redhat/SOURCESに製品のバイナリとなるソースコードの原型が配置されます。原型と書いたのは、ソフトウエアの原作者が配布するファイル(オリジナルファイル)と、それを顧客に提供するにあたり弊社開発部門が加えた変更点(パッチファイル)が分離されているためです。ほとんどのsrc.rpmファイルにおいてオリジナルファイルはtar.gzなどの形式で圧縮されています。パッチファイルはその名の通りpatch形式のファイルです。

 ここで、rpmbuildコマンドを用いてソースコードを復元しなければいけません。rpmbuildコマンドは、オリジナルファイルを伸長し、そこにパッチファイルを適用してソースコードを復元します。/usr/src/redhat/BUILD/パッケージ名以下にソースコードは復元されます。

 図1は、以降に説明する「ソースコードを閲覧するための環境」を構築したとき、その魅力を同僚に説明するために書いたプレゼンテーション資料からの抜粋です。顧客から問い合わせに即答できないことがあれば、自身の名誉と好奇心から調べたくなり、やる気が最高潮の状態になるでしょう。ところが「ソースコード復元」までのちょっとした時間が、その気持ちをむしばみます。一方、ソースコードが手元にあれば、やる気十分の形で問題に取り組むことができるのです。その変化は3ページ目で紹介します。

 ここまでRHELのソースコードに基づいて話をしてきましたが、RHELに限らず業務上ソースコードを読む必要があるのであれば、高度な読解技法などについて考える前にまず「読む必要のあるソースコードは手元にありますか?」という疑問について考えてみてください。

人気記事トップ10

人気記事ランキングをもっと見る

企画広告も役立つ情報バッチリ! Sponsored

ClickHouse Cloudが実現した広告運用SaaS「ATOM」のデータ基盤革新、パフォーマンスを向上しながら、運用負荷とコストを削減 11月11日 6:20 AIで開発が加速する時代、品質保証はどう変わる? Tricentisが示すAIエージェント活用の実像 11月9日 6:45 悪用までの猶予が「1分」に迫るフロンティアAI時代に開発と本番を貫く脆弱性管理が必要 10月29日 8:30 欧州CRA対応とSBOM運用。AI生成コードのOSS混入問題の対策とは ――スニペット単位で検出する「FossID」「Insignary Clarity」によるSBOM運用 9月16日 6:40 PostgreSQLからTiDBへ、稼働中SaaSで進める段階的DB移行の実践と再設計への展望 9月7日 6:30 機能安全開発におけるGoogleTestの活用を支援!「Parasoft C/C++test CT」で実現する効率化&AI連携 4月14日 6:30 【CNDW2025】Grafanaが明かす「オブザーバビリティの哲学」ー最小限の労力で実用的なインサイトを得るには 1月23日 6:30 【CNDW2025】プロダクト急増に備える基盤刷新 ーウェルスナビがECSからEKSへの移行で得た知見とは 1月15日 6:30 【CNDW2025】250環境を5人で運用、構築時間は30分に ーKINTOテクノロジーズが語るインフラ基盤組織の作り方 2025年12月18日 6:30 新たな自動化で熱視線! AIエージェントの「推論能力」を支える2つのコンポーネントとは? 2025年11月28日 6:30