はじめに
環境構築の際に使うyumコマンド。
基本的な流れはリポジトリを追加(インストール)して、それを基にパッケージを取ってくるわけですが
環境構築方法を調べると
yum install と yum localinstallを使っているサイトがありますよね
どっちでも出来るんですが、何が違うのだろうと
ふと気になったのがきっかけ。
調べてみた
によれば
yum install
リポジトリからシステムにパッケージをインストールする
# vsftpd パッケージをインストールする
yum install vsftpd
うん。これはまあわかる。
yum localinstall
ローカルファイル、http、または ftp からパッケージをインストールする
# ローカルディレクトリから abc パッケージをインストールする
yum localinstall abc-1-1.i686.rpm
# FTP サイトから abc をインストールする
yum localinstall http://myrepo/abc-1-1.i686.rpm
おろ?
なるほど、名前通りローカル内にあるrpmファイルからパッケージをインストールできるわけですね。
(リポジトリの追加って言った方が正しい気がする)
ローカルから出来るってことは
rpm用のディレクトリ作っておいて
yum localinstall *
みたいにすれば一気にリポジトリが追加できますね
なるほどなるほど
例2はいつものやつですね
普通にサイトから直接とってくる奴ですね
比較
それじゃあyum installでrpmファイルは取得できないのか?
(リポジトリは追加できないのか?)
結論:出来る
出来るんかーい!
じゃじゃじゃじゃあ
yum localinstallでパッケージのインストールはできないのか?
結論:出来ない
出来ないんかーい!
調べてみると、こんなのを見つけました。
参考
RHEL 5以前のバージョンでは、
yum installは有効なリポジトリからのパッケージ名のみを受け入れ、ローカルRPMへのパスを受け入れませんでした。これらをインストールするには、yum localinstallを使用する必要がありました。
RHEL 6以降では、yum installはパッケージ名とローカルファイル名の両方を受け入れるため、localinstallは不要になりましたが、下位互換性のために含まれています。
RHEL 8では、dnf localinstallはdnf installの単なるエイリアスです。
なるほどー
つまり以前はrpm取得(リポジトリの追加)する際には
yum localinstallじゃないとダメだったけど
RHEL 6以降
yum installでも取ってこれるようになったと。ふむふむ。
そして
CentOS7では微妙な違いがあることに注意してください
Sudo yum install <alreadyExistingPackage>
エラーが発生しますError: Nothing to do
しかし
Sudo yum localinstall <alreadyExistingPackage>
エラーは発生しません
ほー
yum installだとすでにリポジトリが追加されている場合、エラーが返るが
yum localinstallだとエラーは出ない
結論
ローカルにrpmファイルをあらかじめ用意しておいて
まとめて追加するとかやる以外は
基本yum installで良いんじゃないかと
# リポジトリの追加
yum install [パッケージ名(url)].rpm
# リポジトリの確認
yum repolist
# パッケージのインストール
yum install [パッケージ名]
注意点としては
yum localinstallでも出来るけど
最終的なパッケージのインストールは
yum installじゃないと出来ないよってことですね
結論:yum installで良くね?
おまけ
rpm -qlp [パッケージ名].rpm
するとパッケージに含まれているファイル一覧が表示される
.repoファイルにリポジトリURLが書かれており
yum install [パッケージ名]することでこのURLからパッケージがダウンロード&インストールされる
参考
epelやら基本的なことにまったく触れてないですが
参考サイト様&参考記事がわっかりやすく書いてくださっているので
こちらを見てもらえればと思います