yumにnodepsやforceがない理由(rpmにはnodepsやforceがある)

シェアする

  • このエントリーをはてなブックマークに追加

スポンサードリンク

rpmとyumとyumdownloader

まずは、rpmとyumとyumdownloaderの整理。

rpm [RPMパッケージをインストール/アンインストールする]

rpm [option] [package]
[option] -i パッケージをインストールする
-e パッケージをアンインストールする
-q パッケージ詳細を表示する

yum [パッケージを取得してインストール/アンインストールする]

yum [option] [command] [package]
[option] -y 問い合わせにyと答える
[command] install パッケージをインストールする
update パッケージをアップデートする
remove パッケージをアンインストールする

yumdownloader [yumを使って、パッケージのダウンロードだけを行う]

yumdownloader [package]
yumdownloaderを使うには、yum -y install yum-utilsでyum-utilsをインストールしておく。

スポンサードリンク

yumにnodepsやforceがない理由(rpmにはnodepsやforceがある)

rpmコマンドには強制的にインストールするforceオプションや依存関係を無視するnodepsというオプションがあります。
ところが、yumにこれらのオプションはありません。
私は、rpmコマンドに慣れ親しんでいたので、yumでパッケージをインストールするとき、何度となく「yumにnodepsオプションがあればなぁ」と思っていました。
おそらく世界中で同じ考えの人はいると思います。
そんな中で、yumにnodepsやforceがない理由について記述されているページを見つけました。
なかなか興味深い内容でした。
http://yum.baseurl.org/wiki/NoDeps

要約すると以下の通りです。

Rpmには、--nodepsや--forceオプションがある。
これらは、競合ファイルや解決できない依存関係、その他いろいろな問題があっても管理者がパッケージを配備することを許可するために作られた。
Yumにはこれらのオプションがやろうとしている有害な特性のために実装されていない。
なぜ、--nodepsや--forceがyumにとって悪いかは以下の通りです。

  • yumは自動的に依存関係を解決するパッケージマネージャーです。--nodepsを使えば、もはや依存関係を解決しているとは言えず、間違えた情報でrpmdbを更新しているrpm2cpioコマンドとなってしまいます。
  • --nodepsはパッケージやシステムが極めて破壊されているときにだけ使われる。一般的なルールとして、ドライバーを使ってねじが穴に入らない時に、ハンマーを持ち出すべきではないです。
  • --forceはrpmに対して、どんなパッケージやファイルが競合しようとも無視して動作します。つまり、システムを安定して動作させたいなら良い考えとは言えません。ショベルカーを使ってガーデニングしているようなものです。
  • yumを使ってアップデートすれば、yumはrpmdbが大雑把に言って正しいという前提を置くことが出来ます。rpmdbが正しい依存関係を持っていないと気づいた時、我々はユーザーに警告する機能を追加しました。

これまでは、私はrpmで依存関係のエラーが出たら、nodepsを乱発していました。
こららの安易な行動について少し反省させられてしまう文章です。
ドライバーを使ってねじが穴に入らないので、ハンマーで叩いていたのですね。
yumを使う限りはシステムとして信頼できると言えるのですね。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

コメントをどうぞ

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です