- PR -

CentOS + yumレポジトリの優先順位

1
投稿者投稿内容
Johann
ベテラン
会議室デビュー日: 2005/08/31
投稿数: 52
投稿日時: 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

以上、どうぞよろしくお願いいたします。
passol
常連さん
会議室デビュー日: 2008/12/12
投稿数: 20
投稿日時: 2009-01-08 00:04
こんばんは、passolです。

引用:

[custom]
name=custom
baseurl=http://192.168.1.4/repo/
gpgcheck=0


まず、上記なのですがenabledは設定されていないのでしょうか?
デフォルトで見るようにするのなら、enabled=1を設定しなきゃいけないような気がします。
(っていうか、enabledを指定せずにそのリポジトリを見に行きます?)

上記のenabledを指定して試して上手く動かなかったら、リポジトリの優先順位の設定は、yum-priorityプラグインを使用すると設定出来るみたいなので、試して下さい。

参考サイト様:http://s86ed1.exblog.jp/9553995/


[ メッセージ編集済み 編集者: passol 編集日時 2009-01-08 00:05 ]
Johann
ベテラン
会議室デビュー日: 2005/08/31
投稿数: 52
投稿日時: 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プラグインで明示的に設定するのが一番確実なようですね。
ありがとうございました。
passol
常連さん
会議室デビュー日: 2008/12/12
投稿数: 20
投稿日時: 2009-01-09 00:36
こんばんは、passolです。

気になったので、yumの挙動について追加で調べてみました。
すると、下記のURLで次のような文章が見つかりました。

・CentOS 5.1 リリースノート
http://wiki.centos.org/Manuals/ReleaseNotes/CentOS5.1/Japanese
引用:

4. 解決した問題

・yumの優先順位は、違うアーキテクチャで優先順位の低いリポジトリからパッケージを正しく保護するように直されました。具体的には、優先順位の低いnoarchのパッケージでi386のパッケージを置き換えようとしたときなどです。



文章を読んだ上での勝手な推測で、多分なのですが、RPMForgeのpuppet 0.22がi386等の優先度の高いパッケージで、ローカルのpuppet 0.24がnoarch版だから優先順位の低いローカルにあるpuppet 0.24がインストール出来なかったのでは?と思っています。

違っていたらすいません。

[追記]
上記の文章の書き方が下手なせいで、引用元の情報が歪んで伝わってしまうかもしれないと思ったので、追記します。

自分は引用元の情報を読んで、違うアーキテクチャで優先順位の低いリポジトリよりも、同じアーキテクチャの優先順位の高いリポジトリを(優先度と書かれているので)優先し
てインストールするのでは?と推測しました。(というか、優先度って文字を見るとyumの仕様で、優先度の高いリポジトリを(バージョンの高さに関係なく)優先してインストールしているのではないかなと思ったのです。)

でも上記の引用元での文章は、update時の例しか記載されていないので、確信出来る情報にはなっていません。
[/追記]

[ メッセージ編集済み 編集者: passol 編集日時 2009-01-09 01:02 ]
Johann
ベテラン
会議室デビュー日: 2005/08/31
投稿数: 52
投稿日時: 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

スキルアップ/キャリアアップ(JOB@IT)