特定パッケージの更新を抑制する
インストール済みパッケージのアップデートでは流してしまいましたが、更新パッケージのなかに 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]
カーネルソース以外でも、さまざまな理由(最新バージョンをインストールすると、別のパッケージが動かなくなるとか)で更新を抑制したい場合が出てきますので、この方法は覚えておいて損はないと思います。
では、今日はこのへんで。
詳しくはこちらの記事をどうぞ!
この記事にコメントする