WebOS Goodies

WebOS の未来を模索する、ゲームプログラマあがりの Web 開発者のブログ。

WebOS Goodies へようこそ! WebOS はインターネットの未来形。あらゆる Web サイトが繋がり、共有し、協力して創り上げる、ひとつの巨大な情報システムです。そこでは、あらゆる情報がネットワーク上に蓄積され、我々はいつでも、どこからでも、多彩なデバイスを使ってそれらにアクセスできます。 WebOS Goodies は、さまざまな情報提供やツール開発を通して、そんな世界の実現に少しでも貢献するべく活動していきます。
Subscribe       

特定パッケージの更新を抑制する

インストール済みパッケージのアップデートでは流してしまいましたが、更新パッケージのなかに Linux カーネルのソースが入っていました。GentooLinux では、一部のパッケージは emerge による自動更新だけでは完全に更新されず、特別な手続きが必要なものがあります。Linux カーネルもそのひとつです。自動更新でインストールされるのはカーネルソースだけで、そのコンパイルとインストールは手動で行わなくてはなりません。

しかし、個人サーバーではローカルユーザーからの攻撃を防御する必要性は低いですし、メンテナンスに大きな手間もかけられないので、頻繁にカーネルを更新するのは避けたいところです。そこで、今回は特定パッケージの更新を抑制する方法をご紹介します。

便宜上、昨日までの更新処理を行っていないものとして書きますので、ご了承ください。(^^ヾ

/etc/portage/package.mask について

特定パッケージの更新抑制の機能を実現するのが、"/etc/portage/package.mask" です。おそらくデフォルトでは存在しないので、新たに作成する必要があります。1 行 1 パッケージで更新を抑制するパッケージを列挙するのですが、まずは例を出したほうがわかりやすいと思いますので、gentoo-sources-2.6.15-r1 への更新を抑制する記述を示します。

=sys-kernel/gentoo-sources-2.6.15-r1

行頭の "=" は、指定したパッケージと完全に一致するバージョンのみを抑制することを示しています。これには不等号も指定できます。例えば ">=" とすれば指定したパッケージと同じかより新しいバージョンへの更新を抑制します。

不等号のあとには、完全なパッケージ名を記述します。"gentoo-sources-2.6.15-r1" だけではだめです。ただし、バージョン表記の部分にはワイルドカードが使えます。例えば、"gentoo-sources-2.6*" とすると、バージョン 2.6 のすべてが対象になります。

実際に記述してみる

それでは、実際にやってみましょう。vim などで "/etc/portage/package.mask" を読み込み、以下の行を記述して保存します。

<=sys-kernel/gentoo-sources-2.6.15-r1

"<=" としているのは、もし gentoo-sources-2.6.15-r2 などが登録されたときに、上記の行のバージョンを書き換えるだけで済ますためです。"=" で処理しようとすると、抑制したいすべてのバージョンを書かねばならなくなります。

この状態で "emerge --pretend --update world" を実行すると、以下のように gentoo-sources-2.6.15-r1 の更新がリストから外れているのがわかります。

These are the packages that I would merge, in order:

Calculating world dependencies ...done!
[ebuild     U ] sys-apps/man-pages-2.20 [2.17]
[ebuild     U ] sys-libs/cracklib-2.8.5 [2.8.3-r1]
[ebuild     U ] sys-fs/udev-079-r1 [070-r1]
[ebuild     U ] sys-apps/sysvinit-2.86-r3 [2.86]
[ebuild     U ] sys-apps/baselayout-1.11.14-r2 [1.11.13-r1]
[ebuild     U ] sys-devel/gnuconfig-20051223 [20051113]
[ebuild     U ] sys-devel/libtool-1.5.22 [1.5.20]
[ebuild     U ] sys-process/psmisc-21.9 [21.6]
[ebuild     U ] app-editors/nano-1.3.9 [1.3.7]
[ebuild     U ] dev-libs/libol-0.3.17 [0.3.16]
[ebuild     U ] app-admin/syslog-ng-1.6.9 [1.6.8-r1]
[ebuild     U ] sys-devel/libperl-5.8.7 [5.8.6-r1]
[ebuild     U ] dev-lang/perl-5.8.7-r3 [5.8.6-r8]

カーネルソース以外でも、さまざまな理由(最新バージョンをインストールすると、別のパッケージが動かなくなるとか)で更新を抑制したい場合が出てきますので、この方法は覚えておいて損はないと思います。

では、今日はこのへんで。

関連記事

この記事にコメントする

Recommendations
Books
「Closure Library」の入門書です。
詳しくはこちらの記事をどうぞ!
Categories
Recent Articles