いままでyumをよーわからんけど使いすぎていた
はじめに
みなさん yum
使っていますでしょうか?
今までcentOSで使うパッケージマネージャーくらいにしか思っていなかったんですが、
今回ちゃんと使う機会があり「以外と知らずに使うこと多かったな」と思うことがあったのでこの記事を書きました。
そもそもyumとは
Wikipediaによると
Yellowdog Updater ModifiedはLinuxのRPM Package Managerのパッケージを管理するメタパッケージ管理システムである。Yumは デューク大学のLinux@DUKEプロジェクトでセス・ヴィダルを始めとするボランティアによって開発された。
"RPM Package Managerのパッケージを管理するメタパッケージ管理システム"
「あれ? yumがパッケージ管理システムじゃないん?」ってなった方は勘が鋭いです!
そうです、Linuxでパッケージを管理するのは rpm
で yum
はそれをいい感じに管理する管理システムみたいな感じですね
rpm
と yum
は結局なにが違うんだ?
ん? そもそも、我々がマシンのなかで実行しているアプリケーションは実態だけでなくその他の依存パッケージがいろいろあってそれも全部含めて実行することができるようになっています。
なので、何かをinstallする際は、それに依存するパッケージ等も含めてinstallだったりupdateをしてあげる必要があります。
rpm
とは
パッケージを管理するものrpmを直接持ってきて環境にインストールしたり、URLを指定してインストールすることができる
rpm
はどんなパッケージがインストール済みかとかインストールされているパッケージのversionはなにかという部分は管理できるが パッケージの依存関係は自動で解決はしてくれない
yum
とは
パッケージの依存関係は自動で解決してくれない rpm
に対して、依存関係の解決もいい感じにやってくれるのが yum
です。
正確には内部的に yum
が rpm
をいい感じにやってくれている感じになります。
便利ですね!!!!
yumの基本
よく使うコマンド
yum install <パッケージ名>
<パッケージ名>をインストールする。
yum update <パッケージ名>
<パッケージ名>をアップデートする
yum remove <パッケージ名>
<パッケージ名>を削除する
yum list [all | installed | available] <パッケージ名>
インストール済み・利用可能パッケージの一覧
yum search <パッケージ名>
<パッケージ名>を検索する
yum info <パッケージ名>
<パッケージ名>の詳細を表示する
リポジトリーとは?
ここが私がハマったポイントです。
たとえば、mysql
の最新版をインストールしたいときに
yum install mysql
ってやればmysqlの最新版がインストールされると思うじゃないですか?
yum
にはリポジトリと言うものがあり、リポジトリを指定しない場合はそのOSのversionのデフォルトリポジトリが指定されるので、そのリポジトリにある最新版が現行の最新版より古い場合現行の最新版をインストールすることができません。
じゃぁどうすれば良いんだ?
公式のリポジトリではなくサードパーティ製のリポジトリを指定して上げればいけます!
サードパーティのリポジトリの追加についてはこの記事とかが参考になります。
パッケージ管理といえば、 日常的に利用するのが home brew
とかくらいなのでパッケージはすべて一括になっているという感覚で使ってしまっていましたね。
最後に
実際のアプリケーションで利用するものに関しては、「よーわからんけど動いた!」ではなくちゃんと「なぜ動くか」を理解しながら使うことの重要性を学びましたね。
yumを使うと依存パッケージとかを意識しなくて済む点が良い点でもありますが、逆にそれによって何故動いているかわからないけど実行できるからよしとなるといざ別の環境で同じものを利用した際とかに詰まることがあるので、ちゃんと使うことが大切だと思いました。
Discussion