- - PR -
CentOS + yumレポジトリの優先順位
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2009-01-07 13:09
お世話になっております。
ちょっと不可解な現象に遭遇致しましたので、皆様のお知恵を拝借したく。 - OS: CentOS 5.2 - レポジトリ: RPMForge, 自前Repo 今までRPMForgeから yum install puppet で、puppet-0.22を入れて使っていました。今回、自前Repoにpuppet-0.24のRPMを落としてcreaterepoをかけたところ、 yum upgrade でpuppet-0.24へアップグレード出来たんですね。 ところが、 yum remove puppet で一旦消し去った後にyum install puppetをかけると、なぜか RPMForgeの0.22版を入れようとするんです。 最初から自前レポの0.24版を入れるにはどのようにすればよろしいでしょうか? yum.confは特にいじっておらず、デフォルトではpkgpolicy=newestで動作する と認識していますので、0.24版が入るはずなのですが・・・ 自前レポの設定ファイルは下記になっています。 [custom] name=custom baseurl=http://192.168.1.4/repo/ gpgcheck=0 以上、どうぞよろしくお願いいたします。 | ||||
|
投稿日時: 2009-01-08 00:04
こんばんは、passolです。
まず、上記なのですがenabledは設定されていないのでしょうか? デフォルトで見るようにするのなら、enabled=1を設定しなきゃいけないような気がします。 (っていうか、enabledを指定せずにそのリポジトリを見に行きます?) 上記のenabledを指定して試して上手く動かなかったら、リポジトリの優先順位の設定は、yum-priorityプラグインを使用すると設定出来るみたいなので、試して下さい。 参考サイト様:http://s86ed1.exblog.jp/9553995/ [ メッセージ編集済み 編集者: passol 編集日時 2009-01-08 00:05 ] | ||||
|
投稿日時: 2009-01-08 13:03
passolさん、
早速のご回答ありがとうございます。 enabled=1は設定していませんでした。設定して再度試しましたが、0.22版をRPMForgeから入れようとする挙動は残念ながら変わりませんでした。0.22版を一旦いれた後でyum upgradeをかけると0.24へ上げる事は出来ていますし、 [root@server repo]# yum install puppet Loading "fastestmirror" plugin Determining fastest mirrors * custom: 192.168.1.4 * rpmforge: fr2.rpmfind.net * base: mirrors.usc.edu * updates: mirror.hmc.edu * addons: mirror.hmc.edu * extras: mirror.raystedman.net custom 100% |=========================| 951 B 00:00 primary.xml.gz 100% |=========================| 1.5 kB 00:00 custom : ################################################## 3/3 と出ておりますので、レポを見に行っていると思います。 yum-priorityプラグインで明示的に設定するのが一番確実なようですね。 ありがとうございました。 | ||||
|
投稿日時: 2009-01-09 00:36
こんばんは、passolです。
気になったので、yumの挙動について追加で調べてみました。 すると、下記のURLで次のような文章が見つかりました。 ・CentOS 5.1 リリースノート http://wiki.centos.org/Manuals/ReleaseNotes/CentOS5.1/Japanese
文章を読んだ上での勝手な推測で、多分なのですが、RPMForgeのpuppet 0.22がi386等の優先度の高いパッケージで、ローカルのpuppet 0.24がnoarch版だから優先順位の低いローカルにあるpuppet 0.24がインストール出来なかったのでは?と思っています。 違っていたらすいません。 [追記] 上記の文章の書き方が下手なせいで、引用元の情報が歪んで伝わってしまうかもしれないと思ったので、追記します。 自分は引用元の情報を読んで、違うアーキテクチャで優先順位の低いリポジトリよりも、同じアーキテクチャの優先順位の高いリポジトリを(優先度と書かれているので)優先し てインストールするのでは?と推測しました。(というか、優先度って文字を見るとyumの仕様で、優先度の高いリポジトリを(バージョンの高さに関係なく)優先してインストールしているのではないかなと思ったのです。) でも上記の引用元での文章は、update時の例しか記載されていないので、確信出来る情報にはなっていません。 [/追記] [ メッセージ編集済み 編集者: passol 編集日時 2009-01-09 01:02 ] | ||||
|
投稿日時: 2009-01-09 15:14
passolさん、
>RPMForgeのpuppet 0.22がi386等の優先度の高いパッケージで、 >ローカルのpuppet 0.24がnoarch版だから優先順位の低い >ローカルにあるpuppet 0.24がインストール出来なかったのでは?と思っています。 おっしゃる通りでした。自前repoの0.24版はnoarchで、RPMForgeの0.22版はi386です(先に書いておけば良かったですね。申し訳ない)。 0.24版のSRPMを見つけたので [root@server repo]# rpmbuild --rebuild puppet-0.24.5-1.src.rpm でi386版を作成し、これを自前repoに放り込んで [root@server repo]#yum remove puppet [root@server repo]#yum clean all [root@server repo]#yum install puppet としたところ、最初から0.24版(i386)を入れるようになりました。 yum priorityは特に設定せずに実験したので、パッケージを入れる順番としては 1. アーキテクチャ 2. バージョン番号 という順序で動作するものと思われます。 今回はyum upgradeの際にはnoarchにもかかわらず0.24版を入れようとしていたので、 「違うアーキテクチャで優先順位の低いリポジトリからパッケージを正しく保護」 できないバグに当たったのかもしれないですね。 色々とご調査いただきありがとうございました。大変勉強になりました。 |
1