はじめに
環境構築の際に使う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やら基本的なことにまったく触れてないですが
参考サイト様&参考記事がわっかりやすく書いてくださっているので
こちらを見てもらえればと思います