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

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

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

工作HardwareHub ロゴ画像 (Laptop端末利用時)
工作HardwareHub ロゴ画像 (Mobile端末利用時)

rpmとyumのチートシート

モーダルを閉じる

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

モーダルを閉じる

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

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

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

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

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

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

公開日公開日
2014/09/21
最終更新最終更新
2022/03/02
記事区分記事区分
一般公開

目次

    アカウント プロフィール画像 (サイドバー)

    marutantan

    0
    ステッカーを贈るとは?

    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]
    
    0
    詳細設定を開く/閉じる
    アカウント プロフィール画像 (本文下)

    marutantan

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

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

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

    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