【Linux 入門】パッケージ管理システム (パッケージマネージャー)

スポンサーリンク

パッケージとは

パッケージとは、ソフトウェアの実行に必要なファイルをまとめたものです。
具体的には、以下のようなものが含まれます。
・「実行ファイル
・「ライブラリ
・「モジュール
・「設定ファイル
・「リソース (画像・音楽ファイルなど) 」

スポンサーリンク

パッケージ管理システムとは

パッケージ管理システムとは、パッケージをインストール・アンインストールするシステムです。

Windows や Mac でいうインストーラのことです。

リポジトリ (レポジトリ) とは

リポジトリとは、パッケージの保管場所 (配布サイト) のことです。

「iOS でいう App Store」とか、「Windows でいう窓の社・Vector」みたいなものです。

依存関係とは

依存関係とは、パッケージ A を利用するために、パッケージ B をインストールする必要がある状態のことです。

パッケージ管理システムの一覧

パッケージ管理システムには、以下の種類が存在します。

パッケージ管理システムディストリビューション依存関係が存在する時
rpmRHELインストール・アンインストールを中断
yumRHEL自動で依存関係を解決
dpkgUbuntu/Debianインストール・アンインストールを中断
aptUbuntu/Debian自動で依存関係を解決
「yum は rpm」、「apt は dpkg」を利用してパッケージをインストールします。
yum や apt はパッケージ管理システム (rpm, dpkg) を管理するので、メタパッケージ管理システムと呼ばれることもあります。

リポジトリにパッケージが存在する場合は、メタパッケージ管理システム (yum/apt) を使えば ok です。

なお、メタパッケージ管理システムは以下のように依存関係を解決します。

  • インストール時:依存関係のあるパッケージをリポジトリから自動でインストール
  • アンインストール時:依存関係のあるパッケージを自動でアンインストール

Linux のブート、階層構造、コマンド、パッケージ管理など

個人的には、こちらで実践を通じて学ぶ方が好きです

スポンサーリンク

yum コマンドの使い方

install パッケージをインストール

「yum install <パッケージ名>」 or 「yum install <rpm パッケージの URL>」

sudo yum install httpd
=================================================================================================================================================
 Package                                 アーキテクチャー           バージョン                              リポジトリー                    容量
=================================================================================================================================================
インストール中:
 httpd                                   x86_64                     2.4.52-1.amzn2                          amzn2-core                     1.3 M
依存性関連でのインストールをします:
 apr                                     x86_64                     1.7.0-9.amzn2                           amzn2-core                     122 k
 apr-util                                x86_64                     1.6.1-5.amzn2.0.2                       amzn2-core                      99 k
 apr-util-bdb                            x86_64                     1.6.1-5.amzn2.0.2                       amzn2-core                      19 k
 generic-logos-httpd                     noarch                     18.0.0-4.amzn2                          amzn2-core                      19 k
 httpd-filesystem                        noarch                     2.4.52-1.amzn2                          amzn2-core                      24 k
 httpd-tools                             x86_64                     2.4.52-1.amzn2                          amzn2-core                      88 k
 mailcap                                 noarch                     2.1.41-2.amzn2                          amzn2-core                      31 k
 mod_http2                               x86_64                     1.15.19-1.amzn2.0.1                     amzn2-core                     149 k

トランザクションの要約
=================================================================================================================================================
インストール  1 パッケージ (+8 個の依存関係のパッケージ)

総ダウンロード容量: 1.9 M
インストール容量: 5.2 M
Is this ok [y/d/N]:

「y」を押して「Enter」を押すとパッケージをインストールします。

なお、httpd パッケージと依存関係のあるパッケージは以下の8つであることがわかります。

  • apr
  • apr-util
  • apr-util-bdb
  • generic-logos-httpd
  • httpd-filesystem
  • httpd-tools
  • mailcap
  • mod_http2

update パッケージをアップデート

yum update <パッケージ>

sudo yum update httpd

なお、「yum update --obsoletes」=「yum upgrade」です。
(不要になったパッケージの削除を自動で行う)

info パッケージの詳細情報

sudo yum info httpd
インストール済みパッケージ
名前                : httpd
アーキテクチャー    : x86_64
バージョン          : 2.4.52
リリース            : 1.amzn2
容量                : 4.1 M
リポジトリー        : installed
提供元リポジトリー  : amzn2-core
要約                : Apache HTTP Server
URL                 : https://httpd.apache.org/
ライセンス          : ASL 2.0
説明                : The Apache HTTP Server is a powerful, efficient, and extensible
                    : web server.
  • 「インストール済みのパッケージ」と表示される場合は、インストール済みのパッケージです
  • 「利用可能なパッケージ」と表示される場合は、まだインストールしてないパッケージです

list 利用可能なパッケージ

利用可能な (設定済みのリポジトリにある) パッケージの一覧を表示します。

sudo yum list

list installed インストール済みのパッケージ一覧

sudo yum list installed

「sudo yum list installed|grep <パッケージ名>」で絞るといい感じですが、「sudo yum info <パッケージ名>」のほうがスマートです。

remove パッケージを削除

sudo yum remove httpd
======================================================================================================================================================
 Package                          アーキテクチャー              バージョン                                   リポジトリー                        容量
======================================================================================================================================================
削除中:
 httpd                            x86_64                        2.4.52-1.amzn2                               @amzn2-core                        4.1 M
依存性関連での削除をします:
 mod_http2                        x86_64                        1.15.19-1.amzn2.0.1                          @amzn2-core                        382 k

トランザクションの要約
======================================================================================================================================================
削除  1 パッケージ (+1 個の依存関係のパッケージ)

インストール容量: 4.5 M
上記の処理を行います。よろしいでしょうか? [y/N]y

「y」を入力し、Enter を押すとパッケージがアンインストールされます。

yum のリポジトリの管理・確認

パッケージ管理システムでは、デフォルトとは別のリポジトリからパッケージをインストールするすることも可能です。

Extra Packages for Enterprise Linux (EPEL) - (See http://fedoraproject.org/wiki/EPEL) provides rebuilds of Fedora packages for EL6 and EL7.

Remi Repository - (See http://rpms.remirepo.net/) Remi Collet maintains a large collection of RPMS, including latest versions of PHP etc.

https://wiki.centos.org/AdditionalResources/Repositories

repolist 設定済みリポジトリ一覧

sudo yum repolist
リポジトリー ID                                                       リポジトリー名                                                            状態
!amzn2-core/2/x86_64                                                  Amazon Linux 2 core repository                                            
amzn2extra-docker/2/x86_64                                            Amazon Extras repo for docker                                                 
amzn2extra-kernel-5.10/2/x86_64                                       Amazon Extras repo for kernel-5.10                                          

現在無効になっている、 設定済みリポジトリ一覧を含める場合は all をつけます。

sudo yum repolist all
リポジトリー ID                                                 リポジトリー名                                                            状態
!amzn2-core/2/x86_64                                            Amazon Linux 2 core repository                                            有効
amzn2-core-debuginfo/2/x86_64                                   Amazon Linux 2 core repository - debuginfo packages                       無効
amzn2-core-source/2                                             Amazon Linux 2 core repository - source packages                          無効
amzn2extra-docker/2/x86_64                                      Amazon Extras repo for docker                                             有効
amzn2extra-docker-debuginfo/2/x86_64                            Amazon Extras debuginfo repo for docker                                   無効
amzn2extra-docker-source/2                                      Amazon Extras source repo for docker                                      無効
amzn2extra-kernel-5.10/2/x86_64                                 Amazon Extras repo for kernel-5.10                                        有効
amzn2extra-kernel-5.10-debuginfo/2/x86_64                       Amazon Extras debuginfo repo for kernel-5.10                              無効
amzn2extra-kernel-5.10-source/2                                 Amazon Extras source repo for kernel-5.10                                 無効

EPEL (リポジトリ) を追加

EPEL を設定済みリポジトリに追加するには、以下のコマンドとなります。

sudo amazon-linux-extras install epel -y
sudo yum install epel-release -y
sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm -y

「EPEL リポジトリを追加するパッケージを yum install でインストールする」と考えていただければ OK です。

/etc/yum.repos.d/ リポジトリの設定ファイル

リポジトリの設定ファイルは /etc/yum.repos.d/ 配下にあります。

ls /etc/yum.repos.d/
amzn2-core.repo  amzn2-extras.repo  epel-testing.repo  epel.repo

先程インストールした EPEL リポジトリが存在することを確認できます。

/etc/yum.repos.d/ の確認

less /etc/yum.repos.d/epel.repo
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
フィールド意味
[epel]リポジトリ ID
nameリポジトリ名
metalinkメタリンク
enabled1ならリポジトリが有効
gpgcheck1なら GPG 署名確認
rpm ファイルの信頼性を確保するため
gpgkeyGPG キーのパス

GnuPG(GPG)は、ファイルまたは電子メールメッセージの署名および暗号化を可能にする PGP のオープンソースバージョンです。

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/6/html/security_guide/sect-security_guide-encryption-gpg

関連する記事

Linux の基本に関する記事一覧

Linux のカーネルに関する記事一覧

参考書籍一覧

Linux のブート、階層構造、コマンドなど

個人的には、こちらで実践を通じて学ぶ方が好きです

参考資料

第9章 Yum Red Hat Enterprise Linux 7 | Red Hat Customer Portal
The Red Hat Customer Portal delivers the knowledge, expertise, and guidance available through your Red Hat subscription.
AdditionalResources/Repositories - CentOS Wiki