試験運用中なLinux備忘録・旧記事

はてなダイアリーで公開していた2007年5月-2015年3月の記事を保存しています。

linux-headersの更新後にglibcをビルドしないと...

カーネルヘッダの更新後にはglibcを再ビルドする必要がある*1、と読んで以来、必ずそうしているのだが、もししなかったらどうなるのかについても含めて
[引用] linux-headersインストールログより

Kernel headers are usually only used when recompiling your system libc, as
such, following the installation of newer headers, it is advised that you
re-merge your system libc.
Failure to do so will cause your system libc to not make use of newer
features present in the updated kernel headers.

と、linux-headersのインストール後のメッセージに出ていたのを見つけた。抽象的ではあるが、書いてある通り。

ふと気になったのだが、多くのパッケージ更新があり、これをセットした後に放置したとして、その中にlinux-headersが含まれていた場合、見逃してしまうかもしれない。*2
こういうことを確実に防ぐには、インストールされているバージョンより上のものをマスクして、バージョンアップの対象から外すのも1つの方法。

  1. 新しいバージョンのlinux-headersが利用できることが判明する
  2. マスクを外す
  3. linux-headersのバージョンを上げる
  4. glibcを再ビルド
  5. マスク対象のバージョンを新しいlinux-headersのバージョンに更新して再びマスクする

の繰り返し。問題は、新しいバージョンのlinux-headersが利用できるかどうかを確認する必要が出ること。
ファイル名: /etc/portage/package.mask

>sys-kernel/linux-headers-[インストールされているバージョン]

もっとも、linux-headersパッケージの更新頻度は、安定版(「~」の付かない、「x86」や「amd64」など)では非常に低く、glibcのほうが更新頻度は高いので、それほど気にするほどのことでもないのかもしれないが...

*1:大部分の処理は、glibc経由でカーネルに渡されるので、「glibcカーネル」の部分を新しいものに更新する作業がこの再ビルドになる

*2:仮に数が少なくても、ずっと端末を眺めているわけでもないので、可能性はある