(0)目次&概説
(1) 記事の目的
(1-1) 目的
(1-2) 前提条件
(2) rpm(パッケージ管理システム)
(2-1) rpmとは?
(2-2) rpmコマンド(追加・更新・削除)
(2-3) rpmコマンド(照会)
(2-4) SRPMとは?
(3) yum(パッケージ管理システム)
(3-1) yumとは?
(3-2) yumコマンド(リポジトリ操作系)
(3-3) yumコマンド(リポジトリ照会系)
(3-4) yumコマンド(パッケージ照会系)
(3-5) yumコマンド(追加・更新・削除)
(3-6) yum vs rpm比較
(4) epel(リポジトリ)
(4-1) epelとは?
(4-2) epel有効化(CentOS系)
(4-3) epel有効化(RHEL系)
(4-4) epelコマンド(照会)
(1) 記事の目的
(1-1) 目的
今更ですがLinux系OSで使われるパッケージ管理システム(yumやrpm)と良く聞くepelリポジトリについて理解を深めるべく改めて整理しました。ちなみに、まとめた後に知ったのですがyumコマンドは「Python2」で実装されているという理由から廃止となる予定で、後継のコマンドとして「Python3」で実装された「dnf」がこれから標準になってくるとの事・・。まあそれでも当面はyumを使う方もいると思うし、自分の備忘もかねて投稿してみます。
(2) rpm(パッケージ管理システム)
(2-1) rpmとは?
(2-2) rpmコマンド(追加・更新・削除)
(2-2-1) パッケージをインストール
$ sudo rpm -ivh [Package Name]
(2-2-2) パッケージをアップデート
$ sudo rpm -Uvh [Package Name]
(2-2-3) パッケージをアンインストール
$ sudo rpm -evh [Package Name]
(備考)
・「v」オプションはパッケージの検査(Verify)を行います。
・「h」オプションはは進捗状況を表示します。
(2-3) rpmコマンド(照会)
(2-3-1) パッケージを照会
$ sudo rpm -qa | grep [Package Name]
(備考)
・「q」オプションはパッケージ情報の表示と検索(Query)
・「a」オプションはインストールされているパッケージを一覧表示します
(図231)①単一のパッケージ名を指定した場合
(図231)②ワイルドカードでパッケージ名を指定した場合
(2-4) SRPMとは?
・rpmパッケージのうち、ソースコードを含んだrpmパッケージを「SRPM」と呼んでおり、拡張子は「src.rpm」になります。
・コンパイルや手動での編集が可能なため、もしソースコードをカスタマイズ等したうえでコンパイルしたいケースなどはSRPMパッケージを入手する形になります。
・ビルドする場合のコマンドは以下
# cd ~/rpmbuild/SPECS/ # rpmbuild -ba mozc.spec
(3) yum(パッケージ管理システム)
(3-1) yumとは?
・RPMベースのディストリビューションでのみ利用可能(UbuntuといったDebian系など系統が異なるOSでは利用不可)
・もし最新を自動で維持したい場合は「yum-cron」を用いての自動アップグレード等も可能です。
(3-2) yumコマンド(リポジトリ操作系)
(3-2-1) リポジトリの追加
このコマンドを実行すると「/etc/yum.repos.d/」配下の「.repo」ファイルが更新されます。
$ sudo yum-config-manager --add-repo [Repository URL]
(例)
$ sudo yum-config-manager --add-repo http://www.rainbowsample.com/sample.repo
(3-2-2) リポジトリの有効化
$ sudo yum-config-manager --enable [Repository Name] $ sudo yum --enablerepo=[Repository Name]
(例)
$ sudo yum --enablerepo=epel
(3-2-3) リポジトリの無効化
$ sudo yum-config-manager --disable [Repository Name]
(3-3) yumコマンド(リポジトリ照会系)
(3-3-1) リポジトリIDの表示
$ sudo yum repolist [all/enabled/disabled]
(実行結果サンプル)
Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp-srv2.kddilabs.jp * epel: ftp.iij.ad.jp * extras: ftp-srv2.kddilabs.jp * updates: ftp-srv2.kddilabs.jp repo id repo name status base/7/x86_64 CentOS-7 - Base 10070 epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13300 extras/7/x86_64 CentOS-7 - Extras 397 updates/7/x86_64 CentOS-7 - Updates 671 repolist: 24438
(図331)
(3-3-2) システムで利用可能なグループリストを表示
[Group Name]の一覧が表示されます。
$ sudo yum grouplist
(3-3-3) グループ内の情報表示
$ sudo yum groupinfo [Group Name]
(3-4) yumコマンド(パッケージ照会系)
(3-4-1) リポジトリにある全パッケージ+インストール済みの全パッケージを表示
$ sudo yum list
(3-4-2) インストール済みの全パッケージを表示
$ sudo yum list installed
(3-4-3) 全リポジトリからインストール可能なパッケージを照会
$ sudo yum list available
(3-4-4) 利用可能なアップデートを調べる
$ sudo yum list available
(3-5) yumコマンド(追加・更新・削除)
(3-5-1) パッケージのインストール
$ sudo yum install [Package Name]
(3-5-2) パッケージのアンインストール
$ sudo yum remove [Package Name]
(3-5-3) 複数パッケージの一括インストール(逆は「groupremove」)
$ sudo yum groupinstall "[Package Name1]" "[Package Name2]"…
(例)
$ sudo yum groupinstall "GNOME Desktop"
(3-6) yum vs rpm比較
これまでの内容も踏まえ、yumとrpmの違いとなるポイントを表にまとめました。
(表)
比較項目 | YUM | RPM |
依存関係の解決 | ・依存するパッケージがあるかをチェックし、もしあれば全て事前に取得~インストールする事が出来る(パッケージの依存関係の解決が可能) | ・依存するパッケージが全てあるかをチェックしてアラートを出す事は出来るが、それらを自動的に取得~インストールする事はできない。 |
複数バージョン導入 | ・同時に複数バージョンの導入は不可 | ・同時に複数のバージョンの導入が可能 |
リポジトリ | ・全般的にオンラインのリポジトリに依存する | ・オンラインのリポジトリは一切使用しない |
システム全体のアップグレード | ・YUMはシステム全体(システム内の全パッケージ)を最新化する事ができます(マイナーバージョンの更新も含む) | ・システム全体のアップグレードは不可 |
その他 | ・「yum update」の動作について、パッケージ名を指定した場合は、その該当パッケージ+依存パッケージのダウンロードとインストールを実行します。 ・一方でパッケージ名を指定せずに実行した場合はシステム内の全てのパッケージをインストールしようとする ・「yum upgrade」は「yum update」と基本的に同じだが、違いとしては「非推奨」のパッケージを削除しようとする |
(4) epel(リポジトリ)
(4-1) epelとは?
(4-2) epel有効化(CentOS系)
(4-2-1) インストール
$ sudo yum install epel-release
(4-2-2) リポジトリ一覧を確認
$ sudo yum repolist
(4-3) epel有効化(RHEL系)
(4-3-1) rpmファイルダウンロード
$ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
$ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm
$ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm
(4-3-2) インストール
$ sudo yum install ./epel-release-latest-*.noarch.rpm
(4-4) epelコマンド(照会)
(4-4-1) epelの情報照会
# yum info epel-release
(4-4-2) epelの有効化
# yum --enablerepo=epel
(4-4-3) epelを構成するパッケージの表示
# yum --disablerepo="*" --enablerepo="epel" list available
(4-4-4) epelを構成するパッケージからパッケージ名をキーに個別検索
# yum --disablerepo="*" --enablerepo="epel" list available | grep '[Package Name]'
(4-4-5) epelリポジトリを利用してパッケージインストール
# yum --enablerepo="epel" install [Package Name]