Ubuntu Weekly Topics

2013年5月31日号バグ#1のFix・UpstartとDebian・nginxのMIR・Ubuntu Open Weekのログ・UWN#318

Bug#1: Fix Released

Ubuntuの最初のバグ、LP#1がFixされました。

このバグは、⁠Microsoft Windowsのシェアが高すぎる」というもので、Ubuntuはこのバグへのパッチとしてリリースされた、という背景があります。

改善の担当者はMark Shuttleworthで、Fix時のコメントによれば、Fixの理由は次のようなものです。⁠意訳)パーソナルコンピューティング市場はこのバグを登録した2004年当時とは大きく変化した。スマートフォン・タブレット・ウェアラブルコンピュータなど、多くのデバイスがデジタル生活を支えており、非常に多くのプレイヤーが市場に登場している。iOSしかり、Anrdoidしかり、Windowsの牙城を崩すことに成功していると言えるだろう。⁠中略)こうした変化によって、当時の立ち位置からまた別の場所へ移動する必要がある。Ubuntuから見れば、このバグはすでに解決している⁠⁠。

2004年にバグが登録された時の状況は、このバグの再現方法からも見て取ることができます。いわく、⁠1) お近くのPCショップへ足を運びます。 2) あたりを見回します。 3) Windowsが搭載されたコンピューターばかりです⁠⁠。この当時、Androidはまだ存在せず、iPodはまだ音楽を聞く機能しか持っておらず、ショップ店頭にはWindowsが搭載されたコンピューターばかり、Linuxプリインストールマシンはまったく無いとは言えないものの、SuSEを搭載した中古再生マシンがわずかに存在する、というレベルでしたから、⁠解決した」と言っても過言ではないでしょう。

とはいえ、Computex Taipeiを控えたこの時期にこのバグを閉じることは、なんらかの大きな発表の前触れ、という考え方をすることもできますから、今後のUbuntu/Canonicalの動向を注目しておくのが良さそうです。

UpstartとDebian

Upstart環境と競合しないSysV initスクリプトを作成し、Debianのinitスクリプトを更新するというプロジェクトが開始されました。このプロジェクトが完了すると、⁠Upstartに対応させるためのUbuntu側での改造」が不要になり、DebianとUbuntuの間のパッケージのやり取りが非常に楽になる予定です。

技術的には単純ながら興味深いものなので、簡単に内容を見ていきましょう。

基本的な前提として、⁠init」は、Unix環境においてサービスを起動するためのデーモンです。⁠最初のプロセス」などと呼ばれることもあり、カーネルが起動後、まずinitが起動され、そこからログインのための各種ttyやネットワークサービスなどが起動されます(ここでinitを起動する代わりに/bin/shなどを起動すると、いわゆるシングルユーザーモードになります⁠⁠。UbuntuではinitとしてUpstartを採用しています。Upstartは、Canonicalが中心になって開発する独自のinitデーモンで、イベントベースのジョブ操作や、非常に単純に記述できるジョブ設定・既存のSysV initスクリプトとの互換性を有しています。

このUpstartのための起動スクリプトは、/etc/init/以下に配置されるNative Job設定ファイルによって実現されます。このファイルをUpstartが読み込み、Upstart Jobとして実行することで各種デーモンを起動します。本来、システムを動作させるだけであれば、これらのファイルだけで十分です。

しかし、Upstart環境では、古典的なSysV initスクリプトのための操作(/etc/init.d/hoge statusやservice hoge status)のために、/etc/init.d/以下にもサービス操作のためのinitスクリプトが配置されます。これは実際には/lib/init/upstart-jobへのシンボリックリンクです。

シンボリックリンクとして呼び出された/lib/init/upstart-jobは、呼び出されたSysV initスクリプトと同じ名前(たとえば/etc/init.d/hogeとして呼ばれた場合は、/etc/init/hoge.conf)のUpstart Job操作を行います。実際にはUpstart Jobに対する操作なのですが、インターフェースとしては古典的なSysV initと同じ動作を行う、ということです。これは、serviceコマンドや/etc/init.d/以下にあるスクリプトに依存した動作を行う各種スクリプトの互換性を維持するために必要な措置です。

まとめると、現状では次のような状態です。

  • Debianパッケージ:SysV initスクリプト(/etc/init.d*)が含まれる。
  • Ubuntuにおける改造:DebianパッケージにUpstartのためのNative Jobファイル(/etc/init/*)を追加し、さらにSysv initスクリプトを削除してJobファイルのシンボリックリンクに置き換える。

ここには、次のような対立構造があります。

  • DebianはSysV initベースで動作するため、/etc/init.d/hogeは実体ファイルである必要がある。
  • UbuntuはUpstart Native Jobで動作するため、/etc/init.d/hogeはupstart-jobコマンドへのシンボリックリンクである必要がある。

このため、DebianからUbuntuにパッケージを取り込む際に、個別にパッチを当てる、という対応が行われています。

この対応はUbuntu独自に行われるため、Upstart対応のパッケージが増えれば増えるほど手間が増える上、Debian側のパッケージが更新されるたびに都度更新しないといけない、という問題を抱えています。

今回の対応は、この問題を回避するために、/etc/init.d/hoge側に改造を行う、というものです。この改造により、Upstartが存在する環境で呼び出されるとUpstartのジョブ操作を行う、という動作になり、/etc/init.d/*をシンボリックリンクに置き換える処理が不要になります。

言い換えると、上記の対立構造を解消するために、SysV initスクリプトにUpstartのためのフックを入れよう、ということです。この提案に基づく作業が完了すると、以下の状態になるでしょう。

  • DebianはSysV initベースで動作するため、/etc/init.d/hogeは実体ファイルである必要がある。Upstartのためのフックがあっても無害なので、フックも仕込んだまま。
  • UbuntuはUpstart Native Jobで動作するため、/etc/init.d/hogeからupstart-jobが呼び出される状態になる。

この対応が完了することで、Upstart Native Job対応のパッケージが増えてもパッチ地獄に陥ることはなくなり、ありったけのパッケージをUpstartに対応させることができます。UpstartがUbuntuに採用されてから7年[1]⁠、ついにすべてのジョブをUpstartベースから行う状態への移行の準備が整うことになります。

nginxのMIR

ubuntu-server MLに、nginxをMIRしたいという主旨のメールが投稿されています。実際にこれが受け入れられるかどうかは不明瞭な部分もありますが、Ubuntu環境のWebサーバーの選択肢が増えることになるかもしれません。

このメールを読むには一定の前提知識が必要なので、Ubuntuにおいて「ソフトウェアが受け入れられる」プロセスを見ていきましょう。あるオープンソースソフトウェアがUbuntuに受け入れられるプロセスには、大きく分けて3つの段階があります。

  • universe:もっとも「簡単に」Ubuntuに含まれる状態にするには、Debianにパッケージが収録されることです。原則として、すべてのDebianのパッケージはUbuntuの「universe」リポジトリに含められます。これは、DebianのパッケージをUbuntu環境でリビルドしたものです。universeに含まれるパッケージには「サポート」は提供されず、セキュリティアップデートも有志によって行われるものです。近年のリポジトリ設定ファイルでは「ノーブランド」のソフトウェアであること、すなわちUbuntu TeamやCanonicalによるサポートが提供されないことが示されています。
  • main:universeにあるパッケージのうち、特に重要である、と判断されたパッケージは、MIR(Main inclusion Process、注2に基づいて審議され(これをMain includeion Processと呼びます)、「main」リポジトリに含められるようになります。mainに含まれるパッケージはCanonical/Ubuntu Teamによる支援が提供され、サポート期間内におけるセキュリティアップデート・重篤なバグへの対応が保証された状態になります。mainの中にはuniverseにそもそも含まれていないパッケージ(Debianに存在しないパッケージ)もあります。
  • プリインストール:パッケージ群の一部は、Ubuntuのデフォルトインストールイメージに含められた状態で配布されます。通常はmainに属するパッケージが配布されます。

非常にややこしいので混同しがちですが、現状、nginxはuniverse、Apache HTTPdはmainかつプリインストール(厳密にはUbuntu Serverのインストール用CD/DVDに同梱されているだけで、「デフォルトのWebサーバー」という位置づけ)というステータスです。この提案は「nginxをmainにできないか」すなわちMIRについて検討することを主眼としており、「デフォルトのWebサーバー」としてnginxを利用しよう、という提案ではありません。あくまで、「Apache Web Server」「nginx Web Server」の双方を選択可能にしよう、そのためにMIRを通そう、というもので、UbuntuのデフォルトがApacheからnginxに切り替わるというものではありません。

Ubuntu Open Weekのログ

先日開催されたUbuntu Open Week(Ubuntuのコア開発者やコアメンバ・コミュニティマネージャーなどが、インターネット越しに質問に答えるイベント)のログが公開されています。

Ubuntu Touch向けアプリケーションの開発方法・QAやNews、Kernel、Lubuntuなどの各チームへのインタビューや、Mark Shuttleworthへのインタビューなど、Ubuntuの開発に参加したい人にとっては貴重な情報が集められています。

UWN#318

Ubuntu Weekly Newsletter #318がリリースされています。

その他のニュース

  • SSHで用いるPrivate Keyの暗号化を、強度の高いものに置き換える方法。
  • Emeraldを用いて、現在のUbuntuのウインドウの見た目を変更する方法。

今週のセキュリティアップデート

usn-1833-1:Linux kernelのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2013-May/002119.html
  • Ubuntu 12.04 LTS用のアップデータがリリースされています。CVE-2013-1929, CVE-2013-1979, CVE-2013-3301を修正します。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
  • 備考:ABIの変更を伴いますので、カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるので、通常はそのままアップデートの適用を行えば対応できます。
usn-1834-1:Linux kernel (Quantal HWE) のセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2013-May/002120.html
  • Ubuntu 12.04 LTS用のアップデータがリリースされています。CVE-2013-1929, CVE-2013-3301を修正します。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
  • 備考:ABIの変更を伴いますので、カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるので、通常はそのままアップデートの適用を行えば対応できます。
usn-1835-1:Linux kernelのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2013-May/002121.html
  • Ubuntu 12.10用のアップデータがリリースされています。CVE-2013-1929, CVE-2013-3301を修正します。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
  • 備考:ABIの変更を伴いますので、カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるので、通常はそのままアップデートの適用を行えば対応できます。
usn-1836-1:Linux kernel (OMAP4) のセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2013-May/002122.html
  • Ubuntu 12.10用のアップデータがリリースされています。CVE-2013-1929, CVE-2013-2094, CVE-2013-3301を修正します。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
  • 備考:ABIの変更を伴いますので、カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるので、通常はそのままアップデートの適用を行えば対応できます。
usn-1837-1:Linux kernelのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2013-May/002123.html
  • Ubuntu 13.04用のアップデータがリリースされています。CVE-2013-3076, CVE-2013-3222, CVE-2013-3223, CVE-2013-3224, CVE-2013-3225, CVE-2013-3226, CVE-2013-3227, CVE-2013-3228, CVE-2013-3229, CVE-2013-3230, CVE-2013-3231, CVE-2013-3233, CVE-2013-3234, CVE-2013-3235を修正します。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
  • 備考:ABIの変更を伴いますので、カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるので、通常はそのままアップデートの適用を行えば対応できます。
usn-1839-1:Linux kernel (OMAP4)のセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2013-May/002124.html
  • Ubuntu 12.04 LTS用のアップデータがリリースされています。CVE-2013-1929, CVE-2013-1979, CVE-2013-2094, CVE-2013-3301を修正します。
  • 対処方法:アップデータを適用の上、システムを再起動してください。
  • 備考:ABIの変更を伴いますので、カーネルモジュールを自分でコンパイルしている場合は再コンパイルが必要です。カーネルモジュール関連のパッケージ(標準ではlinux-restricted-modules, linux-backport-modules, linux-ubuntu-modulesなど)は依存性により自動的にアップデートされるので、通常はそのままアップデートの適用を行えば対応できます。
usn-1841-1:Tomcatのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2013-May/002125.html
  • Ubuntu 13.04・12.10・12.04 LTS・10.04 LTS用のアップデータがリリースされています。CVE-2012-3544, CVE-2013-2067, CVE-2013-2071を修正します。
  • Tomcat 7.0.40・6.0.37からセキュリティ修正のみをバックポートしたアップデータです。
  • 対処方法:通常の場合、アップデータを適用することで問題を解決できます。
usn-1831-2 OpenStack Nova regression
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2013-May/002126.html
  • Ubuntu 12.10用のアップデータがリリースされています。usn-1831-1の修正により、QCOWイメージが利用できない状態になっていた問題を修正します。
  • 対処方法:通常の場合、アップデータを適用することで問題を修正できます。
usn-1842-1:KDE-Libsのセキュリティアップデート
  • https://lists.ubuntu.com/archives/ubuntu-security-announce/2013-May/002127.html
  • Ubuntu 13.04・12.10・12.04 LTS用のアップデータがリリースされています。CVE-2013-2074を修正します。
  • サーバーがInternal Server Errorを返した際、KIOがエラーとして表示するURLに、アクセス時に利用したレルムに対するユーザー名・パスワードが表示されてしまう問題がありました。
  • 対処方法:アップデータを適用した上で、KIOを利用しているすべてのアプリケーションを再起動してください。判断がつかない場合はセッションを再起動(一度ログアウトして再ログイン)してください。

おすすめ記事

記事・ニュース一覧