はじめに
新しくKVMのサーバを契約したので一からサーバを構築しようとyumのinstallをしたところ、Requires: kernel-headers >= 2.2.1 のメッセージが出て失敗。
以下はgcc-c++をyumでインストールしようとした際のエラーです。
# yum install gcc-c++ ~中略~ Error: Package: glibc-headers-2.17-292.el7.x86_64 (base) Requires: kernel-headers Error: Package: glibc-headers-2.17-292.el7.x86_64 (base) Requires: kernel-headers >= 2.2.1 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest
最小限のminimum状態からの構築なので、パッケージ類もまだほとんどインストールしていない状態で依存パッケージのエラーが出たのはなんかおかしいなと。。
実はPostfixをソースから構築しようとtarボールをダウンロードし、コンパイルしようとしたところgccが見つからないという今回のエラーが出たのが発端です。
事象
yum install gcc をすると以下の通り、kernel-headersのバージョンを上げなさいと言われてしまいました。
# yum install gcc Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.cat.net * centos-sclo-rh: mirrors.cat.net * centos-sclo-sclo: mirrors.cat.net * extras: mirrors.cat.net * updates: mirrors.cat.net Resolving Dependencies --> Running transaction check ---> Package gcc.x86_64 0:4.8.5-39.el7 will be installed --> Processing Dependency: glibc-devel >= 2.2.90-12 for package: gcc-4.8.5-39.el7.x86_64 --> Running transaction check ---> Package glibc-devel.x86_64 0:2.17-292.el7 will be installed --> Processing Dependency: glibc-headers = 2.17-292.el7 for package: glibc-devel-2.17-292.el7.x86_64 --> Processing Dependency: glibc-headers for package: glibc-devel-2.17-292.el7.x86_64 --> Running transaction check ---> Package glibc-headers.x86_64 0:2.17-292.el7 will be installed --> Processing Dependency: kernel-headers >= 2.2.1 for package: glibc-headers-2.17-292.el7.x86_64 --> Processing Dependency: kernel-headers for package: glibc-headers-2.17-292.el7.x86_64 --> Finished Dependency Resolution Error: Package: glibc-headers-2.17-292.el7.x86_64 (base) Requires: kernel-headers Error: Package: glibc-headers-2.17-292.el7.x86_64 (base) Requires: kernel-headers >= 2.2.1 You could try using --skip-broken to work around the problem You could try running: rpm -Va --nofiles --nodigest #
gccはインストール済みだが、# gcc -v をするとPathが通っていない。
# rpm -qa | grep gcc libgcc-4.8.5-39.el7.x86_64 # # gcc -v -bash: gcc: command not found #
原因
/etc/yum.conf に exclude=kernel* と記述していたのが原因でした。
確かに yum update を最初に実行したのですが、kernelのバージョンが変わってしまうのは避けた方がいいのかなと思い、yum.conf内に exclude=kernel* を記述した事を失念していました。
解決方法
exclude=kernel* を一時的にコメントアウトします。
# vi /etc/yum.conf #exclude=kernel*
# yum install gcc ~中略~ --> Finished Dependency Resolution Dependencies Resolved ============================================================================================================== Package Arch Version Repository Size ============================================================================================================== Installing: gcc x86_64 4.8.5-39.el7 base 16 M Installing for dependencies: glibc-devel x86_64 2.17-292.el7 base 1.1 M glibc-headers x86_64 2.17-292.el7 base 687 k kernel-headers x86_64 3.10.0-1062.12.1.el7 updates 8.7 M Transaction Summary ============================================================================================================== Install 1 Package (+3 Dependent packages) Total download size: 27 M Installed size: 44 M Is this ok [y/d/N]: y Downloading packages: (1/4): glibc-headers-2.17-292.el7.x86_64.rpm | 687 kB 00:00:00 (2/4): glibc-devel-2.17-292.el7.x86_64.rpm | 1.1 MB 00:00:00 (3/4): gcc-4.8.5-39.el7.x86_64.rpm | 16 MB 00:00:02 (4/4): kernel-headers-3.10.0-1062.12.1.el7.x86_64.rpm | 8.7 MB 00:00:03 -------------------------------------------------------------------------------------------------------------- Total 8.4 MB/s | 27 MB 00:00:03 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : kernel-headers-3.10.0-1062.12.1.el7.x86_64 1/4 Installing : glibc-headers-2.17-292.el7.x86_64 2/4 Installing : glibc-devel-2.17-292.el7.x86_64 3/4 Installing : gcc-4.8.5-39.el7.x86_64 4/4 Verifying : glibc-devel-2.17-292.el7.x86_64 1/4 Verifying : gcc-4.8.5-39.el7.x86_64 2/4 Verifying : kernel-headers-3.10.0-1062.12.1.el7.x86_64 3/4 Verifying : glibc-headers-2.17-292.el7.x86_64 4/4 Installed: gcc.x86_64 0:4.8.5-39.el7 Dependency Installed: glibc-devel.x86_64 0:2.17-292.el7 glibc-headers.x86_64 0:2.17-292.el7 kernel-headers.x86_64 0:3.10.0-1062.12.1.el7 Complete! #
上手くインストールできました!
yum install gcc-c++ も試してみます。
# yum install gcc-c++ Loaded plugins: fastestmirror Loading mirror speeds from cached hostfile * base: mirrors.cat.net * centos-sclo-rh: mirrors.cat.net * centos-sclo-sclo: mirrors.cat.net * extras: mirrors.cat.net * updates: mirrors.cat.net Resolving Dependencies --> Running transaction check ---> Package gcc-c++.x86_64 0:4.8.5-39.el7 will be installed --> Processing Dependency: libstdc++-devel = 4.8.5-39.el7 for package: gcc-c++-4.8.5-39.el7.x86_64 --> Running transaction check ---> Package libstdc++-devel.x86_64 0:4.8.5-39.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ============================================================================================================== Package Arch Version Repository Size ============================================================================================================== Installing: gcc-c++ x86_64 4.8.5-39.el7 base 7.2 M Installing for dependencies: libstdc++-devel x86_64 4.8.5-39.el7 base 1.5 M Transaction Summary ============================================================================================================== Install 1 Package (+1 Dependent package) Total download size: 8.7 M Installed size: 25 M Is this ok [y/d/N]: y Downloading packages: (1/2): libstdc++-devel-4.8.5-39.el7.x86_64.rpm | 1.5 MB 00:00:01 (2/2): gcc-c++-4.8.5-39.el7.x86_64.rpm | 7.2 MB 00:00:01 -------------------------------------------------------------------------------------------------------------- Total 7.9 MB/s | 8.7 MB 00:00:01 Running transaction check Running transaction test Transaction test succeeded Running transaction Installing : libstdc++-devel-4.8.5-39.el7.x86_64 1/2 Installing : gcc-c++-4.8.5-39.el7.x86_64 2/2 Verifying : gcc-c++-4.8.5-39.el7.x86_64 1/2 Verifying : libstdc++-devel-4.8.5-39.el7.x86_64 2/2 Installed: gcc-c++.x86_64 0:4.8.5-39.el7 Dependency Installed: libstdc++-devel.x86_64 0:4.8.5-39.el7 Complete! #
無事、インストールできました。
作業が済んだので、yum.conf を元に戻しておきます。
この際、centosも追記しておきます。
# vi /etc/yum.conf exclude=kernel* centos*
まとめ
サーバを構築するほぼ最初の段階で yum updateをした後に kernel-headersの依存エラーが出ていたのでおかしいなと思っていたのですが、yum.conf に kernelをexcludeしていたのを忘れていたのが原因でした。
–skip-broken 等、いろいろ試してもダメだったので若干、嵌ってしまったのですが、ご参考になれば幸いです。
コメント