月額9,800円から通えるプログラミングスクール

yumリポジトリの追加方法を解説!rpmとyumの違いを確認しよう!

この記事ではrpmとyumについて解説しています

対象の読者
  • rpmとyumについてザックリ理解したい人
  • rpmとyumの違いがいまいち分からない人
  • yumリポジトリの追加方法が分からない人

“最近プログラミングの勉強を始めたけどrpmとかyumとかイマイチよく分からない…”

そんなプログラミング初学者におすすめの記事です

rpmやyumに自信がないプログラミング初学者の方は是非読んでみてください!

rpmとは?

rpmは RedHatLinux, CentOS系のOSで使われているソフトウェアで、rpm形式のパッケージを扱うパッケージ管理ツールです。

rpmパッケージをインストールしたり、アップデートしたり、アンインストールする時に使います。

rpm形式のパッケージ管理ツールなので拡張子がrpm形式のパッケージにのみ使うことができます。rpm意外のパッケージには使えません。

パッケージ管理ツールの種類

Linux系OSは色々種類がありますが、OS毎にパッケージ管理ツールがあります。

  • RedHatLinux, CentOS は rpm,yum
  • Debian, Ubuntu は apt-get
  • Windows は chocolatey
  • macOS は homebrew

macを使っている初学者でyumコマンドが使えない…という経験はありませんか?これはOS毎に管理ツールが異なるためです。

ほろよい

OS毎にパッケージ管理ツールは異なるということを抑えておこう!
  • rpmコマンドはrpm形式のパッケージを扱うパッケージ管理ツール
  • OS毎にパッケージ管理ツールは異なる

yumとは?

yumはrpmの機能を補うためのメタパッケージ管理ツールです。

メタパッケージ管理ツールって?

“メタパッケージそのものは何かのソフトウェアではありません。他のパッケージに依存することで、インストールすべきものを指示します。”
引用元:https://wiki.ubuntulinux.jp/MetaPackages

つまりyumは内部的にrpmを実行しているということになります。

yumはrpmにあれとあれとあれをインストールしてねと指示しているだけで、パッケージのインストールには内部でrpmが実行されています。

rpmとの違いは?

rpmとの違いは依存関係にあるパッケージをインストールするかどうかです。

rpmは指定したパッケージのみしかインストールしませんが、yumは依存関係にあるパッケージも一緒にインストールしてくれます。

ほろよい

yumはrpmを補助するものなんだね!
  • yumはrpmの機能を補うメタパッケージ管理ツール
  • yumは依存関係にあるパッケージも一緒にインストールしてくれる

yumリポジトリとは?

yumリポジトリとは、rpmパッケージがたくさん入ってる倉庫のようなもの。

具体的に言うと、どこかしらのサーバのrpmパッケージがたくさん入ってるディレクトリ です。

mysqlの導入記事などで “リポジトリを追加します” と書かれてることがありますが、この場合のリポジトリ は yumリポジトリ のことを指しています。

そしてyumリポジトリを追加するというのは、 “yumリポジトリ設定用のrpmパッケージをインストールして /etc/yum.repos.d/ 配下に .repo形式のファイルを追加する” ということになります。

.repo形式のファイルにはリポジトリの置き場が記されており、yumコマンドはそこからrpmパッケージを探してインストールしたりする訳です。

ほろよい

分かりにくいと思うので実際にyumリポジトリを追加してみよう!

yumリポジトリを追加する方法

centOSの仮想マシンを用意して実際にmysqlのyumリポジトリを追加してみます。(仮想マシンの構築手順は省略します)

mysql公式に従ってコマンドを実行していきます。

1.リポジトリ設定用のrpmファイルをwgetコマンドでダウンロード

wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm

2. ダウンロードしてきたパッケージをyum localinstall でシステムにインストール

$ sudo yum localinstall mysql80-community-release-el7-3.noarch.rpm

mysqlの公式サイトでは yum localinstall コマンドでインストールしていますが、内部的にはrpmを使っているので以下のようにrpmコマンドでインストールしても同じことです。

$ rpm -ivh mysql80-community-release-el7-3.noarch.rpm 

実際にインストールしたrpmパッケージの情報を見てみましょう。

$ rpm -qi mysql80-community-release-el7-3.noarch
Name        : mysql80-community-release
Version     : el7
Release     : 3
Architecture: noarch
Install Date: 2020年02月22日 00時00分58秒
Group       : System Environment/Base
Size        : 32008
License     : GPLv2
Signature   : DSA/SHA1, 2019年04月24日 18時27分45秒, Key ID 8c718d3b5072e1f5
Source RPM  : mysql80-community-release-el7-3.src.rpm
Build Date  : 2019年04月24日 17時35分32秒
Build Host  : siv27.no.oracle.com
Relocations : (not relocatable)
Packager    : MySQL Release Engineering <mysql-build@oss.oracle.com>
Vendor      : MySQL
URL         : http://dev.mysql.com
Summary     : MySQL repository configuration for yum
Description :
Package for installation of setup/configuration files required for
installation of MySQL packages by yum.

Descriptionを訳すと”yumによるMySQLパッケージのインストールに必要な構成ファイルのインストール用パッケージ”と書いてあります。

ほろよい

yumリポジトリを追加するためのrpmパッケージがあるんだね!

このrpmパッケージをインストールすることで /etc/yum.repos.d/ 配下に2つの.repoファイルが作成されます。

$ ls -al /etc/yum.repos.d/
-rw-r--r--.  1 root root 2108  4月 24  2019 mysql-community-source.repo
-rw-r--r--.  1 root root 2076  4月 24  2019 mysql-community.repo

.repoファイルの中身

.repoファイルはリポジトリの置き場を記した帳簿のようなファイルです。

実際に.repoファイルの中身を見てみましょう。

$ cat /etc/yum.repos.d/mysql-community.repo
# Enable to use MySQL 5.5
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# Enable to use MySQL 5.6
[mysql56-community]
name=MySQL 5.6 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.6-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

# Enable to use MySQL 5.7
[mysql57-community]
name=MySQL 5.7 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.7-community/el/7/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql80-community]
name=MySQL 8.0 Community Server
baseurl=http://repo.mysql.com/yum/mysql-8.0-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

[mysql-connectors-community]
name=MySQL Connectors Community
baseurl=http://repo.mysql.com/yum/mysql-connectors-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql

・・・

見て分かるように.repoファイルは複数のブロックで構成されており、1つ1つのブロックをサブリポジトリと呼びます。

base_url にURLが書いてありますが、これはサブリポジトリの場所を示しており、$basearchにはシステムのアーキテクチャが自動で入ります 例) x84_64など

実際にbase_urlに書いてあるurlにアクセスするとrpmファイルがたくさん置かれていることを確認できます。=> http://repo.mysql.com/yum/mysql-5.7-community/el/7/x86_64/

yum install コマンドで”パッケージ名”を指定してインストールする時は有効になっているサブリポジトリ全体からパッケージを探してインストールしています。

つまりyumリポジトリというのは複数のサブリポジトリのことを表しています。

  • yumリポジトリは複数のサブリポジトリで構成されている
  • サブリポジトリ毎に有効、無効を設定できる

サブリポジトリの構成要素

サブリポジトリの項目を1つずつ見ていきましょう。

[リポジトリid]
name=リポジトリ名
baseurl=リポジトリの保管場所
enabled=有効、無効の設定

リポジトリid

リポジトリ固有のidが書いてあります。

name

yum repolist で表示される時の名前が書いてあります。

base_url

リポジトリのパスが書いてあります。ここに書いてあるパスをブラウザから見に行くとrpmパッケージの一覧を確認できます。

enabled

リポジトリの有効、無効を決めるものです。1なら有効、0なら無効です。

手動で変更することもできますが、以下のコマンドでも変更できます。

sudo yum-config-manager --disable [リポジトリid]
sudo yum-config-manager --enable [リポジトリid]

よく使われるyumコマンド

最後によく使われるyumコマンドを紹介しておきます。

ほろよい

ここにあるコマンドはよく使うので覚えておきましょう!

$ yum install パッケージ名

yumリポジトリの中にパッケージがある場合、yum install パッケージ名 でインストールできます。

また、リポジトリに存在しない場合でもパッケージをダウンロードすれば yum install [ダウンロードしたrpmパッケージ(urlでもok)] でインストールできます。

$ yum remove パッケージ名

パッケージをアンインストールする時に使います。

$ yum list installed

インストールされているrpmパッケージを表示します。

$ yum repolist

yumリポジトリの一覧を表示します。

yum repolist disabled とすれば無効なリポジトリを表示します。

$ yum search パッケージ名

yumリポジトリからパッケージを探して表示します。

$ yum info パッケージ名

yumリポジトリからパッケージを探して詳細情報を表示します。

まとめ:初学者の内にrpmとyumを押さえよう!

初学者のうちにrpmやyumについて理解しておくとパッケージの導入が楽になりますし、技術系記事を読む時にも理解しやすくなると思います。

OS毎にパッケージ管理ツールが違うことを知っているだけでもかなり違うと思います。

初学者の内からrpmとyumの基本を抑えて効率良く学習を進めましょう!

最後まで読んで頂きありがとうございましたm(_ _)m

コメントを残す

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