Linuxのパッケージシステムを知ろう第1回(宮﨑悟氏)
今回から、Linuxのパッケージシステムについて説明します。
Linuxのパッケージシステムとは
いわゆるLinuxのディストリビューションにはいくつか種類があります。Red Hat Enterprise Linux(以下RHEL)とその派生ディストリビューション。Debianとその派生ディストリビューション(Ubuntuが有名)。Alpine Linuxなどです。これらはソフトウェアパッケージを使用して、必要なソフトウェアをインストールします。
RHELにおけるパッケージシステム
まずは、RHELのパッケージシステムを紹介します。ソフトウェアパッケージ自体はRPM(RPM Package Manager)で行われています。しかし、普段使用するのはyum(Yellowdog Updater Modified) です。これらがどのように違うのかを説明します。
RPM
RPMはRed Hat社が開発したパッケージです。サフィクスが.rpmのファイルがRPMファイルと呼ばれるものです。この中に、パッケージに含まれるファイルや情報が含まれています。
インストール済みのRPMファイル情報を見る
RHEL系ディストリビューションの場合、既にRPMで色々なファイルがインストールされています。rpmコマンドを使用して、既にインストールされたRPMファイルの情報を得ることが出来ます。
- rpm -qa
インストールされたRPMパッケージのすべてのRPM名が表示されます
$ rpm -qa
filesystem-3.2-25.el7.x86_64
basesystem-10.0-7.el7.noarch
(以下略)
- rpm -q RPM名
指定したRPMのバージョンを表示します
$ rpm -q rpm
rpm-4.11.3-35.el7.x86_64
- rpm -qi RPM名
指定したRPMの情報を表示します
$ rpm -qi rpm
Name : rpm
Version : 4.11.3
Release : 35.el7
Architecture: x86_64
Install Date: Tue 04 Dec 2018 02:10:38 AM JST
Group : System Environment/Base
Size : 2622274
License : GPLv2+
Signature : DSA/SHA1, Tue 06 Nov 2018 01:39:49 AM JST, Key ID b0b4183f192a7d7d
Source RPM : rpm-4.11.3-35.el7.src.rpm
Build Date : Tue 30 Oct 2018 11:20:09 PM JST
Build Host : sl7.fnal.gov
Relocations : (not relocatable)
Packager : Scientific Linux
Vendor : Scientific Linux
URL : http://www.rpm.org/
Summary : The RPM package management system
Description :
The RPM Package Manager (RPM) is a powerful command line driven
package management system capable of installing, uninstalling,
verifying, querying, and updating software packages. Each software
package consists of an archive of files along with information about
the package like its version, a description, etc.
- rpm -ql RPM名
指定したRPMに含まれるファイル一覧を表示します
$ rpm -ql rpm
/bin/rpm
/etc/rpm
/usr/bin/rpm2cpio
/usr/bin/rpmdb
/usr/bin/rpmkeys
/usr/bin/rpmquery
/usr/bin/rpmverify
(以下略)
- rpm -q –changelog RPM名
指定したRPMのチェンジログを表示します
$ rpm -q --changelog rpm |head -20
* Tue Jun 19 2018 Pavlina Moravcova Varekova <pmoravco@redhat.com> - 4.11.3-35
- Correct "root_dir" output in audit event (#1555326)
* Fri May 25 2018 Pavlina Moravcova Varekova <pmoravco@redhat.com> - 4.11.3-34
(以下略)
- rpm -q –provides RPM名
RPMには、依存関係があります。指定したRPMが提供するソフトウェア・パッケージ等を表示します
$ rpm -q --provides rpm
config(rpm) = 4.11.3-35.el7
rpm = 4.11.3-35.el7
rpm(x86-64) = 4.11.3-35.el7
- rpm -q –requires PRM名
指定したRPMが必要とするソフトウェアパッケージを表示します
$ rpm -q --requires rpm
/bin/bash
/bin/sh
/bin/sh
/usr/bin/db_stat
config(rpm) = 4.11.3-35.el7
coreutils
curl
libacl.so.1()(64bit)
libaudit.so.1()(64bit)
(略)
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)
rpmlib(PayloadIsXz) <= 5.2-1
- rpm -qf ファイル名
ファイル名が含まれるRPM名を表示する
$ rpm -qf /usr/bin/rpm
rpm-4.11.3-35.el7.x86_64
RPMファイルの情報を見る
ホスト上にRPMファイルが有る場合、その情報を見ることが出来ます。情報を見るためには、以下のように-q
を--qp
にします。-qp
以降のオプションは上記と同じです。ただし、-qa
/-qf
は使用できません
$ rpm -qp RPMファイル名
RPMの追加・更新・削除
RPMを追加するにはRPMファイルが必要です。
$ rpm -i RPMファイル
RPMを更新するにはRPMファイルが必要です。アップグレードするRPMがインストールさ例ない場合でも、指定したRPMファイルがインストールされます。
$ rpm -U RPMファイル
RPMを削除するには、RPM名を指定します。
$ rpm -e RPM名
ここで注意しなければいけないのは、rpmの追加・削除・更新時には、その依存関係の解決をしないと言うことです。RPMには依存関係がありため、依存するパッケージが追加されていないときはRPMファイルを追加できません。また、依存するパッケージがあるときはRPMを削除できません。
ここで、yumの出番となります。
YUM
yumはRed Hat製ではなく、Yellowdog Linuxというディストリビューションが使用したネットワーク経由でRPMをインストールする仕組みです。後にRHELでも使用されるようになりました。yum を使うことの大きなメリットは、RPMの依存性の問題が解決です。
yumを使うためには、yum リポジトリを設定する必要があります。ディストリビューションをインストールすると、必ずそのディストリビューション用のyum リポジトリが追加されます。また、サードパーティのyum リポジトリも追加できます。yum リポジトリにRPM情報がまとまっているため、yum による依存性の解決や検索が可能になります。
yum コマンドのオプションをかんたんに説明します。
コマンド | 説明 |
---|---|
yum install RPM名 | 指定されたRPMと、それに依存するRPMが追加されます |
yum erase RPM名 | 指定されたRPMが削除されます |
yum update | 更新可能なすべてのRPMが更新されます |
yum update RPM名 | 指定されたRPMとそれに依存するRPMが更新されます |
yum list | yum リポジトリ上のRPM一覧を表示する |
yum search キーワード | キーワードによりyumリポジトリのRPMを検索します |
yum コマンドは--enablerepo=リポジトリ名
や--disablerepo=リポジトリ名
を指定することで、対象となるyumリポジトリを変更することが可能です。
yum コマンドは、RPM名の代わりにRPMファイルやネットワーク上のRPMファイル(URLを指定)を直接指定してインストールすることが可能です。このときRPMの依存性を解決し、依存するパッケージを同時にインストールすることが出来ます。
終わりに
今回は、LinuxにおけるソフトウェアパッケージとRHEL系ディストリビューションで使用されるRPM/yumについて説明しました。次回は、Debian/Ubuntuなどで使用されるパッケージについて説明しようと思います。次回をお楽しみに
さて、このコラムを掲載いただいているデジタル・ヒュージ・テクノロジー社は老舗のOSSインテグレーターです。特にLinuxは強く、OSSを活用した業務システムの実績も多いです。興味がある方は以下のページもご覧ください。