LoginSignup
17
21

More than 5 years have passed since last update.

参考メモ/CentOS7でよく使うrpm, yumコマンドメモ

Last updated at Posted at 2016-03-19

CentOS7でよく使いそうなrpmやyumコマンドのメモです。

対象環境 :

$ cat /etc/centos-release
CentOS Linux release 7.2.1511 (Core)

rpmdevtools-8.3-5.el7.noarch
redhat-rpm-config-9.1.0-68.el7.centos.noarch
rpm-python-4.11.3-17.el7.x86_64
rpm-sign-4.11.3-17.el7.x86_64
rpm-build-libs-4.11.3-17.el7.x86_64
rpm-4.11.3-17.el7.x86_64
perl-srpm-macros-1-8.el7.noarch
rpm-libs-4.11.3-17.el7.x86_64
rpm-build-4.11.3-17.el7.x86_64

yum-metadata-parser-1.1.4-10.el7.x86_64
yum-utils-1.1.31-34.el7.noarch
yum-3.4.3-132.el7.centos.0.1.noarch
yum-cron-3.4.3-132.el7.centos.0.1.noarch
yum-plugin-fastestmirror-1.1.31-34.el7.noarch
yum-plugin-priorities-1.1.31-34.el7.noarch

Red Hat Enterprise Linux 7 からのドキュメント

RPMパッケージの情報取得系(rpm -q)

よく使うの:

  • -a : インストール済みパッケージ名とバージョンの一覧表示
  • -f : ファイル名を指定して、そのファイルをインストールしたパッケージ名を表示
  • -i : 名前やバージョンなど基本情報
  • -l : ファイル一覧
  • -R : 依存パッケージの一覧
  • --scripts : インストール・アンインストール・アップデート時に実行されるスクリプトを表示
  • --changelog : パッケージのchangelogを表示
  • -p (他と組み合わせて) : インストールされたパッケージ名ではなく、RPMファイル名を指定して情報を取得できる。

全部 : man 8 rpm の "query options" を参照。

場面別よく使う組み合わせ:

  • 「(パッケージ名)はインストールしてたっけ?」
    • rpm -qa | grep -i (パッケージ名)
  • 「(パッケージ名)の基本情報・ファイル一覧・インストール/アンインストール時のスクリプトを調べたい。」
    • rpm -qilR --scripts (パッケージ名)
  • 「このファイルはどのパッケージがインストールしたものか?」
    • rpm -qf /xxx/yyy/zzz (ファイル一覧ではなくインストール/アンインストールスクリプトで自動生成してる場合はこれでは引っかからない)
  • 「このRPMファイルをインストールすると何が起こる?」
    • rpm -qpilR --scripts (RPMファイル名)
  • 「セキュリティパッチでアップデートがかかったが、何が変更されたのか?」
    • rpm -q --changelog (パッケージ名)`
  • 「セキュリティパッチでアップデートされたRPMファイルをDLしたが、何が変更されたのか?」
    • rpm -qp --changelog (RPMファイル名)

yumの使い方全般

Qiitaより:

個人的によく使ったり使いそうなコマンド:

  • yum clean all : キャッシュなどすべて一旦全クリアしたい時に。
  • yum grouplist hidden : 環境の条件などにより、非表示になるグループもすべて表示する。
  • yum check-update : アップデート可能なパッケージを表示
  • yum provides (ファイル名) : まだインストールしてないパッケージについても検索できるので便利。
    • 例えばこれからインストールしたいパッケージの使い方を解説してる記事をみて、「ここで編集してるファイル名、本当にこのパッケージで提供してるファイルかな?」というのを確認するときに使う。
    • あるいは、Tipsレベルで調べ物してる時に、「いきなりこんなファイル名がでてきたけど、これどのパッケージが提供してるんだろう?」というのを確認するときに使う。
    • アスタリスクでのglobマッチも使えるため、コマンド名だけから、どのパッケージで提供しているのか調べられる : yum provides */dig など。
  • --enablerepo / --disablerepo : リポジトリをいろいろ追加しすぎた場合に、パッケージ名の衝突を避けたりでこのオプションを使う。

古いカーネルを削除

$ sudo yum install yum-utils
$ sudo package-cleanup --oldkernels
(確認あり)

参考:

定期的に自動でパッケージ更新したい

$ sudo yum install yum-cron

※CentOS6 <> 7 とで大幅に設定ファイルの内容が変わったりしてるので、必ず自分が使う環境での設定ファイルの説明を参照すること。

EPELリポジトリを追加したい

  • 公式 : EPEL/ja - FedoraProject
    • https://fedoraproject.org/wiki/EPEL/ja
    • アップデートによりバージョンが変わった時も、ここからたどり直せば大丈夫と思われます。
    • 基本的にはここから、使うCentOSのバージョンとアーキテクチャに対応したRPMファイルをダウンロードして、rpmコマンドでインストールすればEPLリポジトリを追加できます。
  • CentOS7だと
    • minimalインストールの状態から、 yum install epel-release でインストールできます。(CentOS7のExtraパッケージに存在)

EPELリポジトリなどをデフォルトで無効化したり、優先度を調整したい

  • デフォルトで無効化

    • /etc/yum.repos.d/epel.repo, epel-testing.repo の、各 [(セクション名)]enabled=enabled=0 にする。
    • 明示的にEPELを参照したいときは、yumコマンド実行時に --enablerepo=epel を指定する。
  • 優先度を調整したい

    • yum install yum-plugin-priorities
    • /etc/yum.repos.d/*.repo の各 [(セクション名)] で、優先度調整が必要なセクションについて priority=整数値 を追加。
    • 数字が小さいほうが優先度が高くなります。

コマンドラインからリポジトリのenable/disableを設定したい

$ sudo yum install yum-utils

例:/etc/yum.repos.d/epel.repo の [epel]セクションを有効化
$ sudo yum-config-manager --enable epel

例:/etc/yum.repos.d/epel.repo の [epel]セクションを無効化
$ sudo yum-config-manager --disable epel

有効な/無効なリポジトリの一覧を確認したい

$ sudo yum repolist enabled
$ sudo yum repolist disabled

RPMのダウンロードだけしたい

$ sudo yum install yum-utils

例 : kernelパッケージのRPMをカレントディレクトリにDL
$ yumdownloader kernel

詳しくは man 1 yumdownloader 参照。

  • --destdir : ダウンロード先ディレクトリを指定できる。省略時のデフォルトはカレントディレクトリ
  • --resolve : 依存関係で必要なパッケージについてもDL
  • --archlist=ARCH1[,ARCH2...] : アーキテクチャを指定可能
  • CentOS5/6では、yum-downloadonly というパッケージをインストールすることで、「インストールせずにダウンロードだけ」できた。
  • CentOS7では、インストールした/していない に関わらず、yum-utilsのyumdownloaderだけでダウンロードが可能になってる。
    • 逆に yum-downloadonly パッケージが無くなったっぽい。

※パッケージのダウンロードであれば yum install --downloadonly --downloaddir=xxxx (パッケージ名) でもできるが、yum操作のトランザクションに影響を与えます。そのため、より副作用が少なく直感的に扱える、yum-utilsのyumdownloaderの方を紹介してます。

SRPMをダウンロードして中身を確認したい

$ sudo yum install yum-utils

例 : kernelパッケージのSRPMをカレントディレクトリにDL
$ yumdownloader kernel --source
  • 昔のスタイル : SRPMをインストールする前に、初回だけ以下の設定作業が必要です。これをしておかないと、SRPMがどこにインストールされたのか、ソースはどこか、どこでビルドされたのか、というのが追いづらくなり、最悪、システムに破壊的な影響を与えてしまい、泣きます。
    1. $ sudo yum install rpm-build
    2. 作業ディレクトリの作成: $ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} (好きなところでOK)
    3. $ echo "%_topdir $HOME/rpmbuild" > ~/.rpmmacros
    4. $ rpmbuild --showrc | grep topdir で設定が有効なの確認
    5. $ rpm -i xxxx.src.rpm
    6. (もしかしたら cpio コマンドで展開すれば↓のrpmdev-extractと同じだったかも・・・)
  • モダンスタイル : rpmdevtools が提供している rpmdev-extract で展開すればOKです。SRPMのインストールが無くて純粋に展開してるだけなので、副作用が無くて安心です。
    1. $ sudo yum install rpm-build
    2. $ sudo yum install rpmdevtools
    3. $ rpmdev-extract xxxx.src.rpm
      • tarと同じ感じで現在ディレクトリにディレクトリ作成されてその中に展開されます。

SRPMのビルドも試してみたい場合

  1. $ rpmdev-setuptree
    • HOMEディレクトリの下に rpmbuild/{BUILD|BUILDROOT|RPMS|SOURCES|SPEC|SPECS|SRPMS} ディレクトリを作成します。
    • ~/.rpmmacros を調整します。
    • 詳細な処理は /usr/bin/rpmdev-setuptree を確認(シェルスクリプトです)。
  2. $ rpmbuild --recompile xxxx.src.rpm
    • rpmdev-setuptree を実行済みのユーザであれば、どこのディレクトリからでも実行可能です。
    • $HOME/rpmbuild の下に、ソースとspecファイルを展開し、コンパイルします。この後、$ rpmbuild -ba rpmbuild/SPECS/xxx.spec などでパッケージのビルド作業をを進められます。

SRPMの展開やビルドは、いろいろなバリエーションがありますので、以下の記事も参考にしてみてください。rpmdevtoolsが無かった時は結構泥臭い作業が必要でした。

17
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
21