この記事には広告を含む場合があります。
記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。
この記事では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毎に管理ツールが異なるためです。
ほろよい
- rpmコマンドはrpm形式のパッケージを扱うパッケージ管理ツール
- OS毎にパッケージ管理ツールは異なる
yumとは?
yumはrpmの機能を補うためのメタパッケージ管理ツールです。
“メタパッケージそのものは何かのソフトウェアではありません。他のパッケージに依存することで、インストールすべきものを指示します。”
引用元:https://wiki.ubuntulinux.jp/MetaPackages
つまりyumは内部的にrpmを実行しているということになります。
yumはrpmにあれとあれとあれをインストールしてねと指示しているだけで、パッケージのインストールには内部でrpmが実行されています。
rpmとの違いは?
rpmとの違いは依存関係にあるパッケージをインストールするかどうかです。
rpmは指定したパッケージのみしかインストールしませんが、yumは依存関係にあるパッケージも一緒にインストールしてくれます。
ほろよい
- yumはrpmの機能を補うメタパッケージ管理ツール
- yumは依存関係にあるパッケージも一緒にインストールしてくれる
yumリポジトリとは?
yumリポジトリとは、rpmパッケージがたくさん入ってる倉庫のようなもの。
具体的に言うと、どこかしらのサーバのrpmパッケージがたくさん入ってるディレクトリ です。
mysqlの導入記事などで “リポジトリを追加します” と書かれてることがありますが、この場合のリポジトリ は yumリポジトリ のことを指しています。
そしてyumリポジトリを追加するというのは、 “yumリポジトリ設定用のrpmパッケージをインストールして /etc/yum.repos.d/ 配下に .repo形式のファイルを追加する” ということになります。
.repo形式のファイルにはリポジトリの置き場が記されており、yumコマンドはそこからrpmパッケージを探してインストールしたりする訳です。
ほろよい
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パッケージのインストールに必要な構成ファイルのインストール用パッケージ”と書いてあります。
ほろよい
この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