SEワンタンの独学備忘録

IT関連の独学した内容や資格試験に対する取り組みの備忘録

【LPIC101】LinuxにおけるRPM系パッケージ管理 LPICで学ぶLinux⑧


今回はRPMパッケージについて。
Red Hat系のディストリビューションを扱うことが多い私にとってはこちらの方がまだなじみがあります。

RPMパッケージ

RPMはRed Hat社が開発したパッケージ管理システムであり、RPMパッケージは以下のような形式となっています。

VirtualBox-5.2-5.2.42_137960_el7-1.x86_64.rpm
rpmコマンド

RPMパッケージのインストールや参照などの操作はrpmコマンドにより実行します。

■インストールアップグレード系のオプション

オプション 説明
-i (--install) パッケージをインストール
-U (--upgrade) パッケージをアップグレード(ない場合インストール)
-F (--freshen) パッケージをアップグレード(インストールはしない)

・併用オプション
以下のオプションは上記のインストールやアップデートに併用して使用される。

オプション 説明
-v 詳細情報の表示
-h 進行状況を「#」で表示
--nodeps 依存関係無視でインストール
--force 既存のファイルを新しいものに置き換える
--test 実際にはインストールせず検証する


・よく使うインストールコマンド
検索したりするとよくでてくるインストールコマンド(組み合わせ)。
進行状況を「#」表示しながらインストールを行う。
ハッシュの「h」は覚えやすい。

rpm -ihv VirtualBox-5.2-5.2.42_137960_el7-1.x86_64.rpm

ハッシュ表示の例。

準備しています...              ################################# [100%]

「-U」や「-F」はアップグレードオプションだがdpkgとは範囲もオプションも異なるため覚えにくい。
「-U」は新規インストールも行う、「-F」は純粋なアップグレード。

■アンインストールのオプション

オプション 説明
-e (--erace) パッケージをアンインストール

・併用オプション

オプション 説明
--nodeps 依存関係無視でアンインストール

■パッケージの参照オプション

オプション 説明
-q 指定したパッケージがインストールされているか参照する

・併用オプション

オプション 説明
-a (--all) インストール済みのパッケージをすべて表示
-f 指定したファイルを含むパッケージ名を表示
-p パッケージファイルを指定する
-c (--configfiles) 設定ファイルのみを表示
-d (--docfiles) ドキュメントのみを表示
-i (--info) パッケージの情報を表示
-l (--list) パッケージに含まれるファイルを表示
-R (--requires) パッケージが依存しているファイルを表示
--changelog 変更履歴を表示

主要コマンドの実行例

実際に実行してみた方が定着がよい気がする。
一度困る経験があるとだいぶ覚える。

「-q」はクエリーのQ???

・全てのインストール済みパッケージを表示する
インストールされている全パッケージを表示する。 

rpm -qa

・ファイルを含むパッケージを表示する
他のコマンドと違いファイルを指定してパッケージ名を表示する

[root@localhost wantan]# rpm -qf /usr/share/doc/tmux-1.8/examples/bash_completion_tmux.sh
tmux-1.8-4.el7.x86_64

・パッケージに含まれるファイルを表示
「-f」との対比。

[root@localhost wantan]# rpm -ql tmux
/usr/bin/tmux
/usr/share/doc/tmux-1.8
/usr/share/doc/tmux-1.8/CHANGES
/usr/share/doc/tmux-1.8/FAQ
/usr/share/doc/tmux-1.8/TODO
/usr/share/doc/tmux-1.8/examples
/usr/share/doc/tmux-1.8/examples/bash_completion_tmux.sh
/usr/share/doc/tmux-1.8/examples/h-boetes.conf
/usr/share/doc/tmux-1.8/examples/n-marriott.conf
/usr/share/doc/tmux-1.8/examples/screen-keys.conf
/usr/share/doc/tmux-1.8/examples/t-williams.conf
/usr/share/doc/tmux-1.8/examples/tmux.vim
/usr/share/doc/tmux-1.8/examples/tmux_backup.sh
/usr/share/doc/tmux-1.8/examples/vim-keys.conf
/usr/share/man/man1/tmux.1.gz

・パッケージファイル名からパッケージ名を出力

パッケージファイル(.rpm)を指定する。
実用的に使うときがあまり想定できない、どのようなときに使用するんだろう?

[root@localhost wantan]# rpm -qp libvpx-1.3.0-5.el7_0.x86_64.rpm
libvpx-1.3.0-5.el7_0.x86_64


・パッケージの詳細情報を表示する

[root@localhost wantan]# rpm -qi tmux
Name        : tmux
Version     : 1.8
Release     : 4.el7
Architecture: x86_64
Install Date: 20200706234502秒
Group       : Applications/System
Size        : 571847
License     : ISC and BSD
Signature   : RSA/SHA256, 20140704143417秒, Key ID 24c6a8a7f4a80eb5
Source RPM  : tmux-1.8-4.el7.src.rpm
Build Date  : 20140610114036秒
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://sourceforge.net/projects/tmux
Summary     : A terminal multiplexer
Description :
tmux is a "terminal multiplexer."  It enables a number of terminals (or
windows) to be accessed and controlled from a single terminal.  tmux is
intended to be a simple, modern, BSD-licensed alternative to programs such
as GNU Screen.

・パッケージの依存関係を表示する

[root@localhost wantan]# rpm -qR tmux
/bin/sh
/bin/sh
libc.so.6()(64bit)
libc.so.6(GLIBC_2.14)(64bit)
libc.so.6(GLIBC_2.2.5)(64bit)
(・・省略・・)

・変更履歴を表示する

[root@localhost wantan]# rpm -q --changelog tmux
* 金  124 2014 Daniel Mach <dmach@redhat.com> - 1.8-4
- Mass rebuild 2014-01-24

* 金 1227 2013 Daniel Mach <dmach@redhat.com> - 1.8-3
- Mass rebuild 2013-12-27
(・・省略・・)

YUMパッケージ

yum設定の基本

yumはrpm系パッケージにおけるAPTツールと同等のもので、インターネット経由で最新パッケージを依存性を考慮して取得、インストールする。

yumの設定ファイルは「/etc/」配下の以下の2種が存在する。

-rw-r--r--.  1 root root      970  43 00:56 yum.conf
drwxr-xr-x.  2 root root      220  43 00:56 yum.repos.d


・yum.conf

ログファイルの配置場所や取得元のURLなどが記述されるファイル

[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release

・yum.repos.d

パッケージの入手先を追加する設定ファイルを格納するディレクトリ
リポジトリに存在しないパッケージや最新版を取得したい場合などにも使用する。

例えばdocker CEの例を抜粋。

[root@localhost yum.repos.d]# cat docker-ce.repo
[docker-ce-stable]
name=Docker CE Stable - $basearch
baseurl=https://download.docker.com/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg
yumコマンド

■サブコマンド

サブコマンド 説明
check-update アップデート対象のパッケージを表示
update パッケージのアップデート
install パッケージをインストール
remove パッケージをアンインストール
info パッケージ情報を表示
list 全パッケージをリスト表示
repolist リポジトリ一覧を表示
search パッケージを検索
search all パッケージを検索(説明分含む)
groups list パッケージグループを表示
group install パッケージグループをインストール

主要コマンドの実行例

・全てYesでパッケージをインストール

よく使うやつ。「-y」オプションを添えて。

[root@localhost wantan]# yum install -y mlocate
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mlocate.x86_64 0:0.26-8.el7 を インストール
--> 依存性解決を終了しました。
(・・省略・・)

・全てYesでパッケージをアンインストール

[root@localhost wantan]# yum remove -y tree
読み込んだプラグイン:fastestmirror
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ tree.x86_64 0:1.6.0-10.el7 を 削除
--> 依存性解決を終了しました。

依存性を解決しました


・パッケージのアップデート可否を確認

[root@localhost wantan]# yum check-update

dbus.x86_64                        1:1.10.24-14.el7_8                    updates
dbus-libs.x86_64                   1:1.10.24-14.el7_8                    updates

・パッケージのアップデート

パッケージ名を省略した場合は全パッケージを対象としてアップデートする。

[root@localhost wantan]# yum update dbus

・パッケージをリスト表示する

全て表示されると多いので実践的にはgrepで絞る方が多いのかな?
でもそれだと「search」とかぶるので、そのままの機能でインストール済みパッケージの記録ろかでしょうか。

yum list

・パッケージの検索

[root@localhost wantan]# yum search tmux
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
============================== N/S matched: tmux ===============================
tmux.x86_64 : A terminal multiplexer

・リポジトリ一覧を表示する

[root@localhost wantan]# yum repolist
読み込んだプラグイン:fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.tsukuba.wide.ad.jp
 * extras: ftp.tsukuba.wide.ad.jp
 * updates: ftp.tsukuba.wide.ad.jp
リポジトリー ID                     リポジトリー名                        状態
base/7/x86_64                       CentOS-7 - Base                       10,070
docker-ce-stable/x86_64             Docker CE Stable - x86_64                 79
extras/7/x86_64                     CentOS-7 - Extras                        412
updates/7/x86_64                    CentOS-7 - Updates                       898
repolist: 11,459


・パッケージの情報の表示

[root@localhost wantan]# yum info tmux
インストール済みパッケージ
名前                : tmux
アーキテクチャー    : x86_64
バージョン          : 1.8
リリース            : 4.el7
容量                : 558 k
リポジトリー        : installed
提供元リポジトリー  : base
要約                : A terminal multiplexer
URL                 : http://sourceforge.net/projects/tmux
ライセンス          : ISC and BSD
説明                : tmux is a "terminal multiplexer."  It enables a number of
                    : terminals (or windows) to be accessed and controlled from
                    : a single terminal.  tmux is intended to be a simple,
                    : modern, BSD-licensed alternative to programs such as GNU
                    : Screen.

Zypper

ZypperopenSUSEディストリビューションで使用されるパッケージマネージャ。
全く馴染みがなかったですが、試験的には他のパッケージマネージャと比べると優先度は落ちるものの出題はある模様。

内部的にはRPMが使用されているためこの位置。

zypper コマンド

zypperコマンドは以下の形式で実行する。
「-」はつかない。

zypper [サブコマンド]

■サブコマンド

特徴的なのは省略形式。原則は頭二文字で省略形式となる。

サブコマンド 説明
install (in) パッケージのインストール
update (up) パッケージのアップデート
remove (rm) パッケージのアンインストール
info パッケージの詳細情報表示
search (se) パッケージの検索
list-update (lu) アップデート可能なパッケージの表示
repos (lr) リポジトリの一覧表示
refresh リポジトリの更新

・前回(第七回)
www.wantanblog.com

・次回(第九回)
www.wantanblog.com