はじめに
yumでインストールできない場合のメモ。
yum installでインストールできない場合って、いくつか理由が考えられます。
今回の例は上記でいうところの4行目の事例についての対応方法メモです
ちなみに、こういうパターンは社内やプロジェクトのイントラリポジトリ(内部リポジトリ)からyum installする設定になってる場合なんかが多いです。
ながれ
また、今回はlocateコマンドをいれようとしたら
yumが自前リポジトリしか向いてなかったという体で話しを進めます。
1. yumが自前リポジトリしか向いてない状況確認
いつもどおりlocateをyumでいれようとしてみる
※ おもむろにlocate # locate bin/perl zsh: command not found: locate ※ 無いのでyum searchからのinstallを試みる # yum search locate Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile intra-repo | 1.9 kB 00:00 ========================================================= N/S Matched: locate ========================================================== perl-File-ShareDir.noarch : Locate per-dist and per-module shared files which.x86_64 : Displays where a particular program in your path is located Name and summary matches only, use "search all" for everything. ※ でてこない!
リポジトリ関連を確認
コマンドで確認
コマンドで確認する場合は
* yum repolist
で有効なリポジトリのリスト
* yum repolist all
で有効なリポジトリのリストとステータス
を確認できます。
※ リポジトリのリストを確認 # yum repolist Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile intra-repo | 1.9 kB 00:00 repo id repo name status intra-repo intra dev $relreasever - x86_64 1,531 repolist: 1,531 ※ リポジトリのリストとステータスを確認 # yum repolist all Loading mirror speeds from cached hostfile intra-repo | 1.9 kB 00:00 repo id repo name status base CentOS-6 - Base disabled c6-media CentOS-6 - Media disabled centosplus CentOS-6 - Plus disabled contrib CentOS-6 - Contrib disabled debug CentOS-6 - Debuginfo disabled extras CentOS-6 - Extras disabled intra-repo intra dev $relreasever - x86_64 enabled: 1,531 updates CentOS-6 - Updates disabled repolist: 1,531 ※ 案の定baseリポジトリが出てこない!
設定ファイルで確認
だいたい/etc/yum.repos.d
配下に設定があると思うので見てみます
# pwd /etc/yum.repos.d ※ 設定ファイルとか # ls -al -rw-r--r-- 1 root root 1962 5月 29 19:07 2013 CentOS-Base.repo -rw-r--r-- 1 root root 637 12月 9 12:05 2011 CentOS-Debuginfo.repo -rw-r--r-- 1 root root 626 12月 9 12:05 2011 CentOS-Media.repo -rw-r--r-- 1 root root 403 8月 30 03:35 2012 intra.repo ※ 中身を確認。[ ]で囲われてる文字列がリポジトリ名 ※ enabledの値に注目。1:有効、0:無効、設定無し=有効 # cat CentOS-Base.repo ・・・省略・・・ [base] name=CentOS-$releasever - Base mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6 enabled = 0 ・・・省略・・・ ※ 内部リポジトリの設定を確認 # cat intra.repo [intra-repo] name=intra dev $relreasever - $basearch baseurl=http://yum.hoge.fuga.ne.jp/intra-rpms/rhel$releasever/$basearch/ enabled=1 gpgcheck=0 http_caching=none metadata_expire=0
2. 対応してインストールしてみる
対応方針を決める
今回のパターンはリポジトリ(の設定)はすでにあるので、
これに対応する方法は主に下記2点あります
2. 設定を変えちゃう
もできそうですが、
1のほうがおおもとの設定を崩さず一時的で簡単なのでそちらでやります。
やってみる
locateはyum searchるとmlocate
という名前でみつかるので
インストールする場合はその名前で行います。
参考:vagrantで立ち上げたCentOS 6.5にlocateコマンドが無かったのでyum install mlocateで入れるメモ
※ この後の違いをみるために再度オプション無しでyum searchってみる # yum search locate Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile intra-repo | 1.9 kB 00:00 ========================================================= N/S Matched: locate ========================================================== perl-File-ShareDir.noarch : Locate per-dist and per-module shared files which.x86_64 : Displays where a particular program in your path is located Name and summary matches only, use "search all" for everything. ※ オプションありでsearchってみる # yum search --enablerepo=base locate Loaded plugins: fastestmirror, security Loading mirror speeds from cached hostfile * base: ftp.nara.wide.ad.jp base | 3.7 kB 00:00 base/primary_db | 4.6 MB 00:00 intra-repo | 1.9 kB 00:00 ========================================================= N/S Matched: locate ========================================================== mlocate.x86_64 : An utility for finding files by name perl-File-ShareDir.noarch : Locate per-dist and per-module shared files which.x86_64 : Displays where a particular program in your path is located Name and summary matches only, use "search all" for everything. ※ mlocateがみつかったのでオプションつければインストールできそう # sudo yum install --enablerepo=base mlocate.x86_64 ・・・省略・・・ Running Transaction Installing : mlocate-0.22.2-4.el6.x86_64 1/1 Installed: mlocate.x86_64 0:0.22.2-4.el6 Complete! ※ locateが使うdb情報更新 # sudo updatedb ※ locateつかってみる # locate bin/perl /home/hoge/.cpanm/work/1365073612.337/Perl-Critic-1.118/bin/perlcritic /home/hoge/.cpanm/work/1365073612.337/Perl-Tidy-20121207/bin/perltidy /home/hoge/perl5/perlbrew/bin/perlbrew /home/hoge/perl5/perlbrew/perls/perl-5.10.1/bin/perl /home/hoge/perl5/perlbrew/perls/perl-5.10.1/bin/perl5.10.1 /home/hoge/perl5/perlbrew/perls/perl-5.10.1/bin/perlbug /home/hoge/perl5/perlbrew/perls/perl-5.10.1/bin/perldoc /home/hoge/perl5/perlbrew/perls/perl-5.10.1/bin/perlivp /home/hoge/perl5/perlbrew/perls/perl-5.10.1/bin/perlthanks /home/hoge/perl5/perlbrew/perls/perl-5.16/bin/perl /home/hoge/perl5/perlbrew/perls/perl-5.16/bin/perl5.16.3 /home/hoge/perl5/perlbrew/perls/perl-5.16/bin/perlbug /home/hoge/perl5/perlbrew/perls/perl-5.16/bin/perldoc /home/hoge/perl5/perlbrew/perls/perl-5.16/bin/perlivp /home/hoge/perl5/perlbrew/perls/perl-5.16/bin/perlthanks /usr/bin/perl /usr/bin/perl5.8.8 /usr/bin/perlbug /usr/bin/perlcc /usr/bin/perldoc /usr/bin/perlivp /usr/bin/perlstack /usr/bin/perlstack_ptrace
ということで無事yumインストールできました!
参考
- yum install git でインストールできない場合 EPELリポジトリの追加
- 普段使っていないリポジトリを一時的にyumで利用するには
- インストールだけじゃない!yumの設定から便利な使い方まで徹底的に解説
まとめ
設定を直す手順も加えようかと思ったんですが長くなるのでやめましたw
こういうケースは
会社やプロジェクトでイントラ内や内部リポジトリを設定してると思うので
自分だけが欲しいものは一時的に有効にしてインストールするほうが
問題も起きなくて良いですよね!
というメモでした