いままでyumをよーわからんけど使いすぎていた

2 min read読了の目安(約1900字

はじめに

みなさん yum 使っていますでしょうか?
今までcentOSで使うパッケージマネージャーくらいにしか思っていなかったんですが、
今回ちゃんと使う機会があり「以外と知らずに使うこと多かったな」と思うことがあったのでこの記事を書きました。

そもそもyumとは

Wikipediaによると

Yellowdog Updater ModifiedはLinuxのRPM Package Managerのパッケージを管理するメタパッケージ管理システムである。Yumは デューク大学のLinux@DUKEプロジェクトでセス・ヴィダルを始めとするボランティアによって開発された。

"RPM Package Managerのパッケージを管理するメタパッケージ管理システム"
「あれ? yumがパッケージ管理システムじゃないん?」ってなった方は勘が鋭いです!

そうです、Linuxでパッケージを管理するのは rpmyum はそれをいい感じに管理する管理システムみたいな感じですね

ん? rpmyum は結局なにが違うんだ?

そもそも、我々がマシンのなかで実行しているアプリケーションは実態だけでなくその他の依存パッケージがいろいろあってそれも全部含めて実行することができるようになっています。
なので、何かをinstallする際は、それに依存するパッケージ等も含めてinstallだったりupdateをしてあげる必要があります。

rpm とは

パッケージを管理するものrpmを直接持ってきて環境にインストールしたり、URLを指定してインストールすることができる
rpm はどんなパッケージがインストール済みかとかインストールされているパッケージのversionはなにかという部分は管理できるが パッケージの依存関係は自動で解決はしてくれない

yum とは

パッケージの依存関係は自動で解決してくれない rpm に対して、依存関係の解決もいい感じにやってくれるのが yum です。
正確には内部的に yumrpm をいい感じにやってくれている感じになります。

便利ですね!!!!

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を使うと依存パッケージとかを意識しなくて済む点が良い点でもありますが、逆にそれによって何故動いているかわからないけど実行できるからよしとなるといざ別の環境で同じものを利用した際とかに詰まることがあるので、ちゃんと使うことが大切だと思いました。