Rainbow Engine

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で日本語が文字化けした時の対処方法(SSH接続の場合)

<目次> (1) CentOS7で日本語が文字化けした時の対処方法(SSH接続の場合)  (1-1) 発生状況・エラーメッセージ  (1-2) 原因  (1-3) 対処法 (1) CentOS7で日本 …

Linux:サーバ死活管理スクリプト

システム構築では「運用」の中で死活監視を行いますが、その概要と簡単なLinuxでの例を紹介します。 ●死活監視とは サーバーが止まらずに動いているか?のチェックを行うことです。 最も身近な死活チェック …

CentOS6でエラー「Cannot find a valid baseurl for repo: centos-sclo-rh」が出た時の対処メモ

<目次> (1) CentOS6でエラー「Cannot find a valid baseurl for repo: centos-sclo-rh」が出た時の対処メモ  (1-1) エラーメッセージ …

CentOS7で日本語を入力するための設定手順

<目次> (1) CentOS7で日本語を入力するための設定手順  (1-1) STEP1:epelリポジトリの導入  (1-2) STEP2:パッケージのインストール  (1-3) STEP3:入力 …

パイプ通信とは?概要やサンプルプログラムをご紹介

  <目次> (1) パイプ通信とは?概要やサンプルプログラムをご紹介  (1-1) パイプ通信の概要  (1-2) パイプ通信の構文  (1-3) パイプ通信のサンプルプログラム①(単一プ …

  • English (United States)
  • 日本語
Top