モーダルを閉じる工作HardwareHub ロゴ画像

工作HardwareHubは、ロボット工作や電子工作に関する情報やモノが行き交うコミュニティサイトです。さらに詳しく

利用規約プライバシーポリシー に同意したうえでログインしてください。

rpmとyumのチートシート

モーダルを閉じる

ステッカーを選択してください

お支払い手続きへ
モーダルを閉じる

お支払い内容をご確認ください

購入商品
」ステッカーの表示権
メッセージ
料金
(税込)
決済方法
GooglePayマーク
決済プラットフォーム
確認事項

利用規約をご確認のうえお支払いください

※カード情報はGoogleアカウント内に保存されます。本サイトやStripeには保存されません

※記事の執筆者は購入者のユーザー名を知ることができます

※購入後のキャンセルはできません

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 から検索すると以下の候補が見つかります。

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

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]
Likeボタン(off)0
詳細設定を開く/閉じる

記事の執筆者にステッカーを贈る

有益な情報に対するお礼として、またはコメント欄における質問への返答に対するお礼として、 記事の読者は、執筆者に有料のステッカーを贈ることができます。

>>さらに詳しくステッカーを贈る
ステッカーを贈る コンセプト画像

Feedbacks

Feedbacks コンセプト画像

    ログインするとコメントを投稿できます。

    ログインする

    関連記事

    • Gradle による rpmbuild
      rpm コマンドや yum コマンドで扱う RPM パッケージファイルをビルドして作成するためのコマンドとしては rpmbuild が有名ですが、ここではより簡単な方法として Gradle のタスクとして作成する方法をまとめます。 build.gradle 設定 [タスク内で利用できる設定](https://github.com/nebula-plugins/gradle-osp
    • 使い所が難しいマイナーな運用コマンド
      コマンドのエイリアスを登録する (update-alternatives) mybin という名前のコマンドを登録 sudo update-alternatives --install /usr/local/bin/mybin mybin /usr/bin/echo 10 sudo update-alternatives --install /usr/local/bin/mybin mybin /...
      けんちゃんけんちゃん12/1/2022に更新
      いいねアイコン画像0
    • ipコマンドの基本的な使い方
      ネットワーク関連のコマンドはたくさんあります。しかしながら、その一部は ip コマンドに集約できます。 基本形 ("man ip" より抜粋) $ ip OBJECT COMMAND OBJECT: link, neigh, addr, route (等) COMMAND: show, add, delete (等) データリンク層のネットワークデバイス情報 (ifconfigコマンドの代用) M...
      こもれびさんこもれびさん3/8/2017に更新
      いいねアイコン画像0
    • プロセス関連のコマンド
      サムネイル画像-7b5901f600
      プロセスID関連 (ps, pgrep, pkill) 全プロセスを表示するためには $ ps ax とすればよく、その表示を見やすくするためには "u" と "w" を追加して $ ps auxw とすればよいです。表示件数自体は同じです。そのうち特定のコマンドのプロセスIDだけを表示したい場合は $ ps ax | grep 'my_script' | grep -v grep | awk '...
      kenken12/27/2021に更新
      いいねアイコン画像0
    • メモリおよびディスクリソースを調査するために便利なコマンドおよび周辺知識
      メモリ使用量を表示 (free) 既定ではキロバイト単位で表示されます。オプション "-b", "-k", "-m", "-g" を付与して実行するとそれぞれバイト、キロ、メガ、ギガで表示されます。 $ free total used free shared buffers cached Mem: 510824 ...
      しおまめしおまめ9/30/2017に更新
      いいねアイコン画像0