'yum-utils'をインストールして使用し、Yumを維持してパフォーマンスを向上させる方法


Fedoraが新しいパッケージマネージャーおよびデフォルトのパッケージ管理ライブラリとしてdnfを採用し始めたとしても、それが証明されるまで、他のスピンオフディストリビューション(Red Hat Enterprise Linux(RHEL)やCentOSなど)で古き良きyumパッケージマネージャーに取って代わることはありません。 yumと同じくらい信頼性が高く、より堅牢であるため(Fedora Project wikiによると、2015年11月15日の時点で、dnfはまだテスト可能な状態です)。したがって、あなたのyum管理スキルは、まだかなり長い間あなたに役立つでしょう。

そのため、このガイドでは、yumと統合してネイティブ機能をいくつかの方法で拡張し、より強力で使いやすくするユーティリティのコレクションであるyum-utilsを紹介します。

RHEL / CentOSへのyum-utilsのインストール

Yum-utilsはベースリポジトリ(デフォルトで有効になっています)に含まれているため、Fedoraベースのディストリビューションにインストールするのは次のように簡単です。

# yum update && yum install yum-utils

yum-utilsが提供するすべてのユーティリティは、メインパッケージとともに自動的にインストールされます。これについては、次のセクションで説明します。

yum-utilsパッケージが提供するユーティリティを調べる

yum-utilsが提供するツールは、そのマニュアルページにリストされています。

# man yum-utils

これが私たちがあなたが興味を持っていると思ったそれらのyumユーティリティの10です:

debuginfo-install は、クラッシュした場合、または特定のパッケージを使用するアプリケーションの開発中に をデバッグするために必要なdebuginfoパッケージ(およびその依存関係)をインストールします。

パッケージ(またはその他の実行可能ファイル)をデバッグするには、gdb(GNUデバッガー)をインストールし、それを使用してプログラムをデバッグモードで起動する必要があります。

例えば:

# gdb $(which postfix)

上記のコマンドは、実行するアクションを入力できるgdbシェルを起動します。たとえば、run(下の画像に示す)はプログラムを開始しますが、bt(図には示されていません)はプログラムのスタックトレース(バックトレースとも呼ばれます)を表示します。これにより、プログラム実行の特定のポイント(この情報を使用して、開発者とシステム管理者の両方が、クラッシュの場合に何がうまくいかなかったかを把握できます)。

その他の利用可能なアクションとそれらの期待される結果は、mangdbにリストされています。

次のコマンドは、現在インストールされているパッケージ がインストールされたリポジトリを示しています。

# find-repos-of-install httpd postfix dovecot

引数なしで実行すると、find-repos-of-installは現在インストールされているパッケージの全リストを返します。

package-cleanupは、パッケージのクリーンアップ、重複、孤立したパッケージ(現在構成されているリポジトリ以外のソースからインストールされたプログラム)、および次の例に示すように古いカーネルの削除を含むその他の依存関係の不整合を管理します。

# package-cleanup --orphans
# package-cleanup --oldkernels

最後のコマンドがカーネルに損傷を与えることを心配する必要はありません。不要になった古いカーネルパッケージ(現在実行中のバージョンよりも古いバージョン)にのみ影響します。

repo-graphは、構成されたリポジトリーから利用可能なすべてのパッケージの完全なパッケージ依存関係リストをドット形式で返します。または、 --repoid u003d オプションと一緒に使用すると、 repo-graph はリポジトリごとに同じ情報を返すことができます。

たとえば、更新リポジトリ内の各パッケージの依存関係を表示してみましょう。

# repo-graph --repoid=updates | less

上記のコマンドでは、視覚化を容易にするためにrepo-graphの出力をlessに送信していますが、後で検査するためにローカルファイルにリダイレクトすることもできます。

# repo-graph --repoid=updates > updates-dependencies.txt

いずれの場合も、iputilsパッケージがsystemdとopenssl-libsに依存していることがわかります。

repoclosureは、構成されたリポジトリーのメタデータを読み取り、それらに含まれるパッケージの依存関係をチェックし、各パッケージの未解決の依存関係のリストを表示します。

# repoclosure

repomanageは、rpmパッケージを使用してディレクトリにクエリを実行し、ディレクトリ内の最新または最も古いパッケージのリストを返します。このツールは、さまざまなプログラムの複数の.rpmパッケージを格納するディレクトリがある場合に便利です。

引数なしで実行すると、repomanageは最新のパッケージを返します。 -old フラグを指定して実行すると、最も古いパッケージが返されます。

# ls -l
# cd rpms
# ls -l rpms
# repomanage rpms

rpmパッケージの名前を変更しても、repomanageの動作には影響しないことに注意してください。

repoqueryはyumリポジトリーにクエリを実行し、パッケージがインストールされているかどうかに関係なく、パッケージに関する追加情報(依存関係、パッケージに含まれているファイルなど)を取得します。

たとえば、以下に示すように、htop(Linux Process Monitoring)は現在このシステムにインストールされていません。

# which htop
# rpm -qa | grep htop

ここで、デフォルトのインストールに含まれているファイルとともに、htopの依存関係を一覧表示するとします。これを行うには、次の2つのコマンドをそれぞれ実行します。

# repoquery --requires htop
# repoquery --list htop

yum-debug-dumpを使用すると、インストールしたすべてのパッケージ、任意のリポジトリで使用可能なすべてのパッケージ、重要な構成、およびシステム情報の完全なリストをzipファイルにダンプできます。

これは、発生した問題をデバッグする場合に役立ちます。便宜上、yum-debug-dumpはファイルにyum_debug_dump- -

# yum-debug-dump

他の圧縮テキストファイルと同様に、zlessコマンドを使用してその内容を表示できます。

# zless yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

yum-debug-dumpによって提供される構成情報を復元する必要がある場合は、yum-debug-restoreを使用して復元できます。

# yum-debug-restore yum_debug_dump-mail.linuxnewz.com-2015-11-27_08:34:01.txt.gz

yumdownloaderは、依存関係を含め、リポジトリからソースRPMファイルをダウンロードします。インターネットアクセスが制限されている他のマシンからアクセスするネットワークリポジトリを作成するのに便利です。

Yumdownloaderを使用すると、バイナリRPMだけでなく、ソースRPMもダウンロードできます( -source オプションとともに使用する場合)。

たとえば、rpmを使用してプログラムをインストールするために必要なRPMを格納するhtop-filesという名前のディレクトリを作成しましょう。これを行うには、yumdownloaderと一緒に -resolve スイッチを使用する必要があります。

# mkdir htop-files
# cd htop-files
# yumdownloader --resolve htop
# rpm -Uvh 

reposyncはyumdownloaderと密接に関連しています(実際、ほとんど同じオプションをサポートしています)が、かなりの利点があります。バイナリまたはソースRPMファイルをダウンロードする代わりに、リモートリポジトリをローカルディレクトリに同期します。

よく知られているEPELリポジトリを、現在の作業ディレクトリ内のepel-localというサブディレクトリに同期させましょう。

# man reposync
# mkdir epel-local
# reposync --repoid=epel --download_path=epel-local

このプロセスは8867パッケージをダウンロードしているため、かなり時間がかかることに注意してください。

同期が完了したら、duコマンドを使用して、EPELリポジトリの新しく作成されたミラーによって使用されているディスク容量を確認しましょう。

# du -sch epel-local/*

リモートミラーを使用する代わりに、このEPELミラーを保持するか、パッケージのインストールに使用するかは、あなた次第です。最初のケースでは、それに応じて/etc/yum.repos.d/epel.repoを変更する必要があることに注意してください。

yum-complete-transactionは、yum-utilsプログラムの一部であり、システム上の未完了または中止されたyumトランザクションをキャッチし、それらを完了しようとします。

たとえば、yumパッケージマネージャーを介してLinuxサーバーを更新すると、次のような警告メッセージがスローされることがあります。

未完了のトランザクションが残っています。最初にyum-complete-transactionを実行して、それらを終了することを検討してください。

このような警告メッセージを修正して問題を解決するために、yum-complete-transactionコマンドが表示され、未完了のトランザクションが完了します。/にあるtransaction-all *ファイルとtransaction-done *ファイルで不完全または中止されたyumトランザクションが検出されます。 var/lib/yumディレクトリ。

yum-complete-transactionコマンドを実行して、不完全なyumトランザクションを終了します。

# yum-complete-transaction --cleanup-only

これで、yumコマンドは不完全なトランザクションの警告なしで実行されます。

# yum update

注:このヒントは、定期的な読者の1人であるTomas氏がここのコメントセクションで提案しています。

概要

この記事では、yum-utilsを介して提供される最も便利なユーティリティのいくつかについて説明しました。完全なリストについては、manページ( man yum-utils )を参照してください。

さらに、これらの各ツールには個別のmanページがあり(たとえば、man reposyncを参照)、これらのツールについて詳しく知りたい場合に参照する必要のあるドキュメントの主要なソースです。

yum-utilsのmanページを確認するのに少し時間がかかる場合は、別の記事でさらに詳しく説明したい別のツールが見つかるかもしれません。もしそうなら、またはこの記事に関する質問、コメント、または提案がある場合は、下のコメントフォームを使用して私たちにメモをドロップして、どれを私たちに知らせてください。