Ubuntu Weekly Recipe

第217回 新年度特別企画・Red HatユーザーのためのUbuntuパッケージ管理の心得

この記事を読むのに必要な時間:およそ 5 分

パッケージの管理

前振りはこのくらいにして,Ubuntuのパッケージ管理の特性を見ていきましょう。

RHEL環境のシステム管理において,yumとRPMを適切に使いこなすことは基本です。これと同じように,Ubuntu環境ではaptとdpkgを適切に使う必要があります。RHELで良く行われる操作のうち,特にUbuntuで気にするべき点を並べてみましょう。

パッケージのインストールと削除

RHELで利用するyumと,Ubuntuで利用するapt(apt-get, apt-cache)は,基本的な操作はほとんど同じです。yum install ⁠パッケージ名)とすることで依存するパッケージをまとめてインストールできるのと同じように,apt-get install(パッケージ名)を用いることができます。

パッケージの検索を行う場合は少々異なり,⁠apt-get」のかわりに「apt-cache」を用いることになります。より詳しい点はman等を参照してください。

パッケージに含まれるファイルの一覧

RPM環境では,⁠あるパッケージに含まれるすべてのファイル」を閲覧する場合は,⁠rpm -ql ⁠パッケージ名⁠⁠」を用います。Ubuntuのようなdpkgベースのシステムの場合は,⁠dpkg -L ⁠パッケージ名⁠⁠」を用います。

設定ファイルの待避

RPMを用いた環境で良く起きる事故は,⁠設定ファイルを編集してシステムを動かしていたら,パッケージのアップデートで巻き戻ってしまった」というものです。

yum updateなどでRPMを更新すると,⁠.rpmold」「.rpmnew」をつけた形で設定ファイルが残される場合もありますが,たとえば/etc/logrotate.d/の下にあるファイルは問答無用で置き換えられてしまいます。致命的なのは「問答無用で」というところで,パッケージアップデートの前後で「本来想定していない変更」が加えられていないか,一通り確認する必要があります。

これは,⁠conffile」として指定されていないファイルはすべて(≒RPMパッケージの作者が設定ファイルだと信じているものすべて)置き換えられる,というRPMの仕様によるものです。conffileに適切に指定を行っていない場合,RPMパッケージにスクリプト(rpm -q --scripts)を含めることで,適切に設定ファイルの待避を行う,というアプローチもありますが,いずれにせよパッケージの作者が適切に設定している,という前提が必要になります。

このため,RHEL環境の管理においては,設定ファイルを編集する前にまず「rpm -qc」を行ってconffileの一覧を確認し,編集しようとするファイルがconffileとして指定されていなければetckeeperなどで回避する,といった対処が必要になってしまいます。

Ubuntuの場合,こうした操作は必要ありません。/etc以下は暗黙で設定ファイルが配置される場所として認識されているため,これらのファイルを置き換える場合はapt-get upgrade実行時に確認が行われます。こうした「RPMパッケージがファイルを置き換えてしまう問題」へのバッドノウハウは,こと設定ファイルに関する限りは気にする必要がありません。

パッケージのソースファイルの入手

システム管理において,バグを発見した場合にはソースを確認したいことがあります。RHEL環境ではyumの設定を変更してSRPMを入手できるようにしておき,yumでSRPMを入手→rpm2cpioでcpio形式に変換,というのが基本的なソースの入手方法です。

Ubuntuの場合,apt-get source ⁠パッケージ名)とすることで自動的にパッケージのソースファイル群をダウンロードすることができます。dpkg-devパッケージを導入しておくと,ダウンロード完了後に自動的にソースが展開されます。

良く行われる作業

脆弱性情報の確認

RHELでは,特定のCVE-IDで示される脆弱性の影響を調査する場合はRed Hat Bugzillaで,CVE-IDを検索するのが普通です。これにより,Bug 796829 – CVE-2012-0879 kernel: block: CLONE_IO io_context refcounting issuesなどといった具体的なバグ情報が入手できます。

Ubuntuの場合,Ubuntu CVE Trackerを用いることで,特定の問題の影響を確認できます。

有償サービスの調達

RHELの場合はアップデートを入手する上で,RHN(Red Hat Network)の購読契約が必須です。RHNの契約を結ぶことで,パッケージのアップデートとテクニカルサポートを受けることができます。

Ubunutの場合,こうした契約なしにパッケージのアップデートを得ることができます。テクニカルサポートが必要な場合は,Ubuntu Advantageの契約を結ぶことで有償サービスを受けることができます。日本国内の場合はアシストが代理店です

バージョン情報の確認

Red Hat系のディストリビューションでは,/etc/redhat-releaseファイルを用いてリリースを確認するのが通常です。Ubuntuにはこれに該当するファイルはありません(厳密には/etc/debian_versionというファイルがあるのですが,これはベースになったDebianのバージョンを返すため,Ubuntuのリリースバージョンを調べるためには利用できません⁠⁠。

Ubuntu環境でバージョン情報を確認する場合,lsb_release -dを用いてください。

著者プロフィール

吉田史(よしだふみひと)

Ubuntu Japanese Team Member株式会社創夢所属。システム管理を中心にWindows/PC Unixを併用している。Ubuntu Japanese Teamではパッケージサーバの管理や翻訳などの作業を担当。