rpmとyumのチートシート
[履歴] [最終更新] (2019/10/29 22:34:29)
最近の投稿
注目の記事

概要

rpm (RedHat Package Manager または RPM Package Manager) はRedHat系のパッケージ管理ツールで、yum (Yellowdog Updater Modified) は内部的にrpmを実行するメタパッケージ管理ツールです。rpmには柔軟性がありyumには利便性があります。

  • rpmは "rpmパッケージファイル" があれば何でもインストールできますが、yumはレポジトリ内のパッケージしかインストールできません
  • yumは依存関係を自動で解決してくれますが、rpmは手動で解決しなければなりません

チートシート

yumコマンドによるrpmパッケージ検索

インストールされているかどうかによらず、yumが参照するすべてのレポジトリからrpmパッケージを検索します。

$ yum search perl
...
perl-AppConfig.noarch : Perl module for reading configuration files
perl-Archive-Tar.i686 : A module for Perl manipulation of .tar files
perl-Archive-Zip.noarch : Perl library for accessing Zip archives
perl-Authen-SASL.noarch : SASL Authentication framework for Perl
perl-Business-ISBN.noarch : Perl module to work with International Standard Book
                          : Numbers
perl-CPAN.i686 : Query, download and build perl modules from CPAN sites
perl-Cache-Memcached.noarch : Perl client for memcached
perl-Carp-Clan.noarch : Perl module to print improved warning messages
perl-Clone.i686 : Recursively copy perl datatypes
...

概要などの情報に文字列が含まれている場合にも search は該当してしまいます。パッケージ名のみを検索対象としたい場合は list を使用します。

$ yum list perl

Installed Packages
perl.x86_64        4:5.10.1-131.el6_4    @updates
Available Packages
perl.x86_64        4:5.10.1-136.el6_6.1  updates

ワイルドカードも使用できます。いずれの場合にも「パッケージ名.アーキテクチャ、バージョン-リリース番号、インストール状態または yum レポジトリ名」が表示されます。

$ yum list perl*

Installed Packages
...
Available Packages
...
perl-parent.x86_64        1:0.221-136.el6_6.1                updates
perl-pmtools.noarch       1.10-3.el6                         epel
perl-prefork.noarch       1.04-2.el6                         base
perl-redland.x86_64       1.0.7.1-1.el6                      epel

更に詳細な情報を検索するためには「パッケージ名.アーキテクチャ」で info 検索します。

$ yum info perl-parent.x86_64

Installed Packages

Available Packages
Name        : perl-parent
Arch        : x86_64
Epoch       : 1
Version     : 0.221
Release     : 136.el6_6.1
Size        : 27 k
Repo        : updates
Summary     : Establish an ISA relationship with base classes at compile time
URL         : http://www.perl.org/
License     : GPL+ or Artistic
Description : parent allows you to both load one or more modules, while setting up
            : inheritance from those modules at the same time. Mostly similar in
            : effect to:
            : 
            :     package Baz;
            : 
            :     BEGIN {
            :         require Foo;
            :         require Bar;
            : 
            :         push @ISA, qw(Foo Bar);
            :     }

rpmコマンドによるrpmパッケージ検索

rpmにはレポジトリという概念がないため、インストールされているrpmパッケージ一覧から検索します。

インストール済みの場合

$ rpm -q perl
(or $ rpm --query perl)
perl-5.10.1-136.el6.i686
↑ perl:パッケージ名, 5.10.1:バージョン, 136.el6:リリース番号, i686:アーキテクチャ(動作可能なCPU情報)

インストールされていない場合

$ rpm -q hoge
パッケージ hoge はインストールされていません。

インストール済みrpmパッケージ一覧の表示 (grepと併用すると便利)

$ rpm -qa | grep mysql
(or $ rpm --query --all | grep mysql)
mysql-5.1.73-3.el6_5.i686
mysql-libs-5.1.73-3.el6_5.i686
mysql-server-5.1.73-3.el6_5.i686

パッケージインストール時に設置されたファイル一覧の表示

configファイルなどの場所探しに重宝します。

$ rpm -ql mysql-libs
(or $ rpm --query --list mysql-libs)
/etc/ld.so.conf.d/mysql-i386.conf
/etc/my.cnf
...

あるファイルを設置したrpmパッケージを特定

$ rpm -qf /etc/my.cnf
(or $ rpm --query --file /etc/my.cnf)
mysql-libs-5.1.73-3.el6_5.i686

rpmパッケージファイル (*.rpmというファイル) 内のファイル一覧を表示

ある "rpmパッケージファイル" に含まれるファイル一覧を表示します。実際にインストールすると、それらのファイルが設置されます。

ローカルに保存したrpmファイルを参照する場合

$ rpm -qpl /path/to/sample.rpm
(or $ rpm --query --package --list /path/to/sample.rpm)
...
/usr/src/debug/x264-20090319/simd/encoder/ratecontrol.c
/usr/src/debug/x264-20090319/simd/encoder/rdo.c
/usr/src/debug/x264-20090319/simd/encoder/set.c
/usr/src/debug/x264-20090319/simd/encoder/slicetype.c
...

インターネット上のrpmファイルを参照する場合

$ rpm -qpl http://www.example.com/path/to/sample.rpm
(or $ rpm --query --package --list http://www.example.com/path/to/sample.rpm)
...
/usr/src/debug/x264-20090319/simd/encoder/ratecontrol.c
/usr/src/debug/x264-20090319/simd/encoder/rdo.c
/usr/src/debug/x264-20090319/simd/encoder/set.c
/usr/src/debug/x264-20090319/simd/encoder/slicetype.c
...

yumコマンドでrpmパッケージをインストール

$ yum install perl

rpmコマンドでrpmパッケージをインストール

$ rpm -ivh /path/to/sample.rpm
(or $ rpm --install --verbose --hash /path/to/sample.rpm)
↑ 'hash' は '#' をプログレスバーのように表示するオプション

yumコマンドでrpmパッケージをアンインストール

指定したrpmパッケージに依存しているrpmパッケージもアンインストールされます。

$ yum remove perl

rpmコマンドでrpmパッケージをアンインストール

指定したrpmパッケージに依存しているrpmパッケージがある場合はエラーが表示されます。

$ rpm -e perl
(or $ rpm --erase perl)

yum コマンドで rpm が依存する rpm 一覧を表示

yum deplist gcc-c++

yum コマンドでキャッシュを削除

インストール中にプロセスを kill したこと等が原因で管理情報が壊れてしまった場合は、以下のコマンドでキャッシュを削除します。

削除前

$ du -hs /var/cache/yum/
82M     /var/cache/yum/

削除

$ sudo yum clean all
$ du -hs /var/cache/yum/
35M     /var/cache/yum/

yum レポジトリを追加

上述の通り yum コマンドはパッケージをレポジトリから検索およびインストールします。OS に標準で設定されているものは base レポジトリとよばれます。base レポジトリに登録されているパッケージは比較的古いものが多く、最新のバージョンをインストールしたい場合には追加でレポジトリを登録する必要があります。ここでは、有名な epel, remi, repoforge レポジトリの三つを追加します。

  • epel: Extra Packages for Enterprise Linux
  • remi: Les RPM de Remi
  • repoforge: RPMforge

具体的には base レポジトリが格納されている以下のディレクトリに epel.repo, remi.repo, rpm.repo の三つを設置します。

$ ls /etc/yum.repos.d/
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo  CentOS-Vault.repo

RPM パッケージのダウンロード

深く考えると混乱しそうですが、RPM レポジトリ epel, remi, repoforge の RPM パッケージをダウンロードします。

epel

こちらのダウンロードリンク集から目的のものを探します。ここでは CentOS 6 を想定して 6/ をクリックします。次に、マシンの CPU が 32bit の場合は i386, 64bit の場合は x86_64 をクリックします。最後に「epel-release」という名称のファイルを探して wget などでダウンロードします。

remi

こちらの公式サイトトップページにアクセスします。CentOS 6 を想定して、ページ内にある「remi-release-6.rpm」を wget などでダウンロードします。

repoforge

こちらのダウンロードリンク集から目的のものを探します。ここでは CentOS 6 を想定して EL 6 を対象とします。そのうち、マシンの CPU が 32bit であれば i386, 64bit であれば x86_64 を wget などでダウンロードします。

RPM パッケージに格納されているファイルの確認

本ページの上部に記載してあるように、インストールする前に RPM パッケージ内に格納されている設置予定のファイル一覧を閲覧できます。

$ rpm -qpl epel-release-6-8.noarch.rpm
/etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6
/etc/rpm/macros.ghc-srpm
/etc/yum.repos.d/epel-testing.repo
/etc/yum.repos.d/epel.repo
/usr/share/doc/epel-release-6
/usr/share/doc/epel-release-6/GPL

$ rpm -qpl remi-release-6.rpm
/etc/pki/rpm-gpg/RPM-GPG-KEY-remi
/etc/yum.repos.d/remi.repo

$ rpm -qpl rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm
/etc/apt
/etc/apt/sources.list.d
/etc/apt/sources.list.d/rpmforge-extras.list
/etc/apt/sources.list.d/rpmforge-testing.list
/etc/apt/sources.list.d/rpmforge.list
/etc/pki/rpm-gpg
/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
/etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-fabian
/etc/smart
/etc/smart/channels
/etc/smart/channels/rpmforge.channel
/etc/sysconfig/rhn
/etc/sysconfig/rhn/sources.rpmforge.txt
/etc/yum.repos.d
/etc/yum.repos.d/mirrors-rpmforge
/etc/yum.repos.d/mirrors-rpmforge-extras
/etc/yum.repos.d/mirrors-rpmforge-testing
/etc/yum.repos.d/rpmforge.repo
/usr/share/doc/rpmforge-release-0.5.3
/usr/share/doc/rpmforge-release-0.5.3/RPM-GPG-KEY-rpmforge-dag
/usr/share/doc/rpmforge-release-0.5.3/RPM-GPG-KEY-rpmforge-fabian
/usr/share/doc/rpmforge-release-0.5.3/mirrors-rpmforge.yum
/usr/share/doc/rpmforge-release-0.5.3/rpmforge.apt
/usr/share/doc/rpmforge-release-0.5.3/rpmforge.smart
/usr/share/doc/rpmforge-release-0.5.3/rpmforge.up2date
/usr/share/doc/rpmforge-release-0.5.3/rpmforge.yum

インストールの実行

$ sudo rpm -ivh epel-release-6-8.noarch.rpm
$ sudo rpm -ivh remi-release-6.rpm
$ sudo rpm -ivh rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

初期設定

base レポジトリ以外は明示的に指定しない場合は有効化されない設定にしておくとよいとされます。

$ sudo vi /etc/yum.repos.d/epel.repo
$ sudo vi /etc/yum.repos.d/remi.repo
$ sudo vi /etc/yum.repos.d/rpmforge.repo

によって

enabled=1

となっている箇所をすべて

enabled=0

に変更して保存します。remi.repo については既定で =0 になっているはずです。

remi を使用して MySQL 5.5 をインストールする例

$ yum --enablerepo=epel,remi,rpmforge list mysql

実行結果例

Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: ftp.nara.wide.ad.jp    ← base, epel, remi, rpmforge すべてが有効になっていることが分かります。
 * epel: ftp.kddilabs.jp        (extras, updates についても CentOS-Base.repo で enabled=1 されています)
 * extras: ftp.nara.wide.ad.jp
 * remi: remi.kazukioishi.net
 * rpmforge: ftp.kddilabs.jp
 * updates: ftp.nara.wide.ad.jp
Available Packages
mysql.x86_64                          5.5.41-1.el6.remi               remi

remi レポジトリに MySQL 5.5 が存在することが分かりました。例えば下記コマンドでインストールしましょう。

$ sudo yum --enablerepo=remi install mysql
($ sudo yum --enablerepo=remi install mysql-server)
($ sudo yum --enablerepo=remi install mysql-devel)

無事インストールされました。

$ sudo service mysqld start
Starting mysqld:                     [  OK  ]

$ mysql -uroot -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.5.41 MySQL Community Server (GPL) by Remi

Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

epel-release について

epel, remi, repoforge のうち epel レポジトリについては RPM を手動でダウンロードおよびインストールしなくても、 base レポジトリ内に含まれる epel-release RPM を yum install すればレポジトリが使用可能になります。

$ sudo yum install epel-release

Debian 系の場合 (参考)

apt コマンド (あるいは apt-cache, apt-get) と以下の dpkg コマンドで操作します。Albert ランチャーの場合は以下のようになります。

インストール

dpkg -i albert_0.14.19_amd64.deb

インストールされているパッケージの表示

dpkg -l | grep albert
apt list --installed

パッケージによって設置されたファイルの確認

dpkg -L albert

パッケージのアンインストール

dpkg -r albert

あるファイルをインストールしたパッケージを特定

dpkg -S /usr/bin/supervisorctl

設定ファイルを含めて remove する

apt remove しただけでは以下のように rc 状態になることがあります。

$ dpkg -l | grep mysql
rc  mysql-apt-config                         0.8.10-1                                    all          Auto configuration for MySQL APT Repo.
rc  mysql-common                             5.8+1.0.2                                   all          MySQL database common files, e.g. /etc/mysql/my.cnf
rc  mysql-community-client                   5.7.23-1debian9                             amd64        MySQL Client
rc  mysql-community-server                   5.7.23-1debian9                             amd64        MySQL Server

これは設定ファイル等が残っている状態です。以下のようにして設定ファイルを削除できます。

$ sudo apt purge mysql-apt-config
$ sudo apt purge mysql-common
$ sudo apt purge mysql-community-client
$ sudo apt purge mysql-community-server
$ dpkg -l | grep mysql | wc -l
0

古い deb パッケージをインストールする

古いパッケージは https://snapshot.debian.org を利用してインストールできます。例えば linux-headers-4.9.0-9-amd64 を debian9 (stretch) にインストールしたい場合を考えます。

# apt install linux-headers-`uname -r`
Reading package lists... Done
Building dependency tree       
Reading state information... Done
E: Unable to locate package linux-headers-4.9.0-9-amd64
E: Couldn't find any package by glob 'linux-headers-4.9.0-9-amd64'
E: Couldn't find any package by regex 'linux-headers-4.9.0-9-amd64'

こちらのページ の source packages または binary packages から検索すると以下の候補が見つかります。

Uploaded Image

最新バージョンの 4.9.168-1+deb9u5 をクリックすると debian-security on 2019-08-13 05:32:01見つかります

Uploaded Image

apt の設定を追加します。

sudo vi /etc/apt/sources.list

deb     https://snapshot.debian.org/archive/debian/20190813T053201Z/ stretch main
deb-src https://snapshot.debian.org/archive/debian/20190813T053201Z/ stretch main
deb     https://snapshot.debian.org/archive/debian-security/20190813T053201Z/ stretch/updates main
deb-src https://snapshot.debian.org/archive/debian-security/20190813T053201Z/ stretch/updates main

パッケージリストを更新します。

sudo apt install apt-transport-https
sudo apt update -o Acquire::Check-Valid-Until=false

以下のようにインストールできるようになっています。

sudo apt install linux-headers-4.9.0-9-amd64
sudo apt list --installed | grep linux-headers

linux-headers-4.9.0-9-amd64/oldstable,now 4.9.168-1+deb9u5 amd64 [installed]
linux-headers-4.9.0-9-common/oldstable,now 4.9.168-1+deb9u5 all [installed,automatic]
関連ページ
    概要 こちらのページで基本的な使用方法をまとめた rpm コマンドや yum コマンドで扱う RPM パッケージファイルをビルドして作成するためのコマンドとしては rpmbuild が有名ですが、ここではより簡単な方法として、こちらのページで使用方法を把握した Gradle のタスクとして作成する方法をまとめます。
    概要 2016/11/07 時点、多くの環境では yum レポジトリ等に mysql 5.7 が含まれていません。公式ページからダウンロードしてインストールする手順を二つまとめます。 yum レポジトリを追加する手順 Installing MySQL on Linux Using the MySQL Yum Repository (mysql 5.7)
    概要 データ可視化ツールの一つ Grafana の簡単な使い方を把握します。 Grafana Documentation インストール APT APT レポジトリを追加します。 sudo vim /etc/apt/sources.list.d/grafana.list deb https://packagecloud.io/grafana/stable/debian/ stretch
    概要 プロセスの死活監視等を行うためのデーモン化ツールの一つ supervisor の簡単な使い方を記載します。 インストール apt や yum によってインストールする場合は以下のようになります。 sudo apt install supervisor sudo yum install supervisor
    概要 Git を用いたプロジェクト開発を複数人で行う場合、サーバーでレポジトリ管理を行えると便利です。何らかの事情で GitHub や Bitbucket を利用できない場合は、サーバーを構築して GitLab をインストールします。ここでは特に CentOS 6 の場合についてインストール手順をまとめます。 コマンドを実行するサーバーの用意
    概要 MySQL DB サーバは自身へのクエリをバイナリログとして書き出すことができます。レプリケーションとは、追加の MySQL DB サーバが、別の MySQL DB サーバが出力したバイナリログを自分のリレーログとよばれるログにコピーして、更にリレーログに記載されたクエリを自分自身のテーブルに実行する機能です。バイナリログを出力する DB をマスターとよび、自分のリレーログにコピーする D
    概要 SmokePing はネットワーク遅延を可視化する Web ツールです。インストール手順と基本設定をまとめます。特に CentOS 6 を使用する場合について記述していますが、基本的な流れや考え方は他の OS でも同じです。 インストール手順 plenv 関連のインストール こちらで紹介した plenv を利用すると perl およびモジュールのバージョンをプロジェクト内で固定できま
    概要 sysstatというパッケージに含まれる "sar" (System Admin Reporter) コマンドを利用すると、PCの各リソースの使用状況を表示することができます。これは、負荷試験などでボトルネックを特定するために役立ちます。 使い方 インストール例 yum install sysstat
    履歴にタグを付与する (git tag) 一覧表示 タグだけを一覧表示 git tag ログにタグ情報を付与して表示 git log --decorate=full 直近のコミットにタグを付与 コメントあり git tag -a v1.0 -m 'コメント' コメントなし git tag v1.0
    概要 『グローバルIP を持たない GCP VM への SSH 接続方法』で記載した IAP tunnel は、HTTPS トンネル内で TCP パケットを forward するための技術です。 この HTTPS トンネルは、ユーザと tunnel.cloudproxy.app の間で確立される WebSocket です。