Rainbow Planet

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

Linux

Linux系OSのパッケージ管理システム(rpmやyum)及びリポジトリ(epel)について

投稿日:2020年5月29日 更新日:

(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とは?

・”Red Hat Package Manager”の略で、Linux系ディストリビューションの標準のパッケージ管理システムである。
・RPMベースのディストリビューションでのみ利用可能(UbuntuといったDebian系など系統が異なるOSでは利用不可)。
・RPMファイルは拡張子が「.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とは?

・”Yellowdog Updater Modified”の略で、Linuxディストリビューションにおいて利用されるオープンソースのパッケージ管理システムです
・RPMベースのディストリビューションでのみ利用可能(UbuntuといったDebian系など系統が異なるOSでは利用不可)
・ディストリビューションの公式リポジトリや、他のサードパーティーリポジトリからRPMパッケージをダウンロードします。

・もし最新を自動で維持したい場合は「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とは?

・Extra Packages for Enterprise Linuxの略で、扱うパッケージはものによってはコアリポジトリに含まれないものや、一般公開されていないアップデート等もあったりします。
・当ブログでもepelリポジトリを用いて「ibus」や「anthy」や「ibus-anthy」をインストールしました。
・利用可能なLinuxディストリビューションは①RHEL、②CentOS、③Scientific Linux、④Oracle Linuxです。
・開発の背景としてFedora開発の貢献者たちがRHELや、その他互換性のあるOSでも彼らが整備したパッケージを使いたいという願望から生まれました。
・EPELグループ(Fedora Projectの内部派生グループ)により管理されています。

目次にもどる

(4-2) epel有効化(CentOS系)

CentOSがEPELの導入が最も簡単で(通常のパッケージ導入と同じ)、‘CentOS Extras’ というリポジトリが標準で含まれています。

(4-2-1) インストール
下記のコマンドでリポジトリのインストールを行えます。
$ sudo yum install epel-release
(4-2-2) リポジトリ一覧を確認
$ sudo yum repolist

目次にもどる

(4-3) epel有効化(RHEL系)

(4-3-1) rpmファイルダウンロード
CentOS以外のOSの場合(RHEL等)やCentOSにて上記のやり方で導入出来なかった場合は、rpmファイル(Red Hatのパッケージ管理ファイル)をダウンロードしてyumコマンドでインストールします。

・ダウンロード:RHEL7/CentOS7等の場合
$ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

・ダウンロード:RHEL6/CentOS6等の場合
$ wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

・ダウンロード:RHEL5/CentOS5等の場合
$ 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]

目次にもどる

Adsense審査用広告コード


Adsense審査用広告コード


-Linux

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

CentOS7でVNC-Serverを使ってリモートデスクトップ環境を構築する手順

(0)目次&概説 (1) 記事の目的  (1-1) 目的  (1-2) 前提条件 (2) 実施手順  (2-1) 必要資源のインストール   (2-1-1) “tigervnc-serve …

Linux(CentOS 6)のパケットフィルタリング方法(iptables)

(0)目次&概説 >(1) “iptables”の概要 >(2) “iptables”の解説  >(2-1) “iptables&#8221 …

CentOS7でfirewalldを用いてポートの開放を行う方法について

(0)目次&概説 (1) パケットフィルタリングの概要  (1-1) CentOS7のパケットフィルタリング概要  (1-2) CentOS6(iptables)との主な違い  (1-3) 「ゾーン」 …

Linuxで一般ユーザ(rootスイッチ権限有り)を作成する方法

Linuxでユーザを作成する方法を書きます。 (0)目次 >(1)作業の背景・目的・前提条件 >(2)ユーザの作成 >(3)ユーザの「Wheel」グループへの追加 (1)作業の背景・目的・前提条件 「 …

Linux基礎コマンド(第1回) TeraTermログイン・pwd・cd

初めてLinuxを触る人向けにTeraTermのログイン方法からコマンドを入力する方法まで数回にわたり解説していきます。本記事はその第1弾です。 (0)目次&概説 >(1) Linuxのディレクトリ構 …

  • English (United States)
  • 日本語
Top