上の抜粋にあるカーネルなどは3世代分保存されます。このようにすることでカーネルアップデート時に問題が出た場合でも2世代分、戻ることができます。上記の設定ファイルにはないが重要な項目assumeyes=value0の場合、インストールやアンインストール時など重要な実行の前に確認をする。1の場合、全ての実行時に確認を行わない。「-y」オプションを付けた場合と同じ。[more_package_names]指定したパッケージを除外する。updateでのアップデートを無効にすることができる。指定にはワイルドカードを使える。「?」は任意の1文字、「*」は0文字以上の任意の文字列に一致する。複数指定する場合は半角スペースで区切る。セクションで指定をするとyum全体に影響をします。例)カーネルの更新を無効にする。exclude=kernel*例)PHPとMySQLの更新を無効にする。[more_package_names]excludeの逆で有効にするパッケージを指定します。注意が必要なのが、この項目を追加したリポジトリは、指定したパッケージのみ有効になります。その他一切のパッケージは更新できなくなるので注意してください。特定のパッケージを更新するためだけに追加した外部リポジトリなどの場合に利用します。groupremove_leaf_only=value0の場合、パッケージグループの削除時に依存関係を確認しない。1の場合、パッケージグループの削除時に依存関係を確認して、他のパッケージやグループに必要とされていないものだけ削除する。multilib_policy=valuevalueにはbestとallがあります。bestは現在のシステムに最適なアーキテクチャを常に選択する。allはx86_64であってもi386のパッケージも利用可能であればインストールする。その他mainセクションに関するオプション(ディレクティブ)については「yum.conf(5)」をご覧ください。以下のコマンドで閲覧することができます。yum.confリポジトリ個別の設定ファイル上記全体の設定ファイルにコメントで解説がありましたが、個別のリポジトリの設定ファイルは「/etc/yum.repos.d」に「ファイルネーム.repo」という名前で保存されています。新しく外部リポジトリ(サードパティリポジトリ)を追加した場合の設定ファイルは全て「/etc/yum.repos.d」に保存されます。ここでは個別の設定ファイルで気をつけることを公式リポジトリの設定ファイルである「/etc/yum.repos.d/CentOS-Base.repo」を例に解説します。Baseリポジトリの名前を指定します。repolist」とコマンドを打てば利用可能なリポジトリと名前の一覧が表示されます。name」に該当する部分がこの項目です。350Yum変数についてnameの設定で出てきた「$releasever」は「Yum変数」という特別な変数で、それぞれ以下の変数が定義されています。Hatの解説が詳しかったので引用します。リリースバージョンを参照することができます。パッケージよりバージョン番号を取得することで、正しい値を導きます。アーキテクチャーを参照できます。使用すると、システムのベースアーキテクチャーを参照できます。ベースアーキテクチャーを持っています。個の変数は、同じ名前を持つシェル環境変数の値とそれぞれ置換されます。参照され、同じ名前を持つシェル環境変数が存在しない場合は、設定ファイルの変数は置換されません。変数の使用より3行目、mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os後述する「baseurl」が応答しなかった場合に代理でダウンロードするサーバを返すURL。4行目、baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/通常ダウンロードするリポジトリのURL。URLだけでなく、サーバ内部に作ったオリジナルのリポジトリなども参照することができる例)baseのリポジトリを理化学研究所のものに変更する。baseurl=http://ftp.riken.jp/Linux/centos/$releasever/os/$basearch/例)baseのリポジトリをDVDのものに変更する。baseurl=file:///mnt/dvdrom/5行目、gpgcheck=1「/etc/yum.conf」にもあったGPG鍵認証を有効にする設定。6行目、gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-5GPG鍵の保存場所。指定したディレクトリにない場合は、正しいものか確認後、指定されたディレクトリへ保存される。上記の例には無いが個別リポジトリの設定ファイルで重要な項目enabled=value0の場合、当該するセクションのリポジトリが無効になります。1の場合、リポジトリが有効になります。通常、外部リポジリを追加した場合は公式のパッケージを更新しないように「enabled」を「0」にして無効にするのが一般的です。必要なときだけコマンドで「–enablerepo」オプションを付けることで有効にします。例)remiリポジトリを有効にしてphpに関するパッケージをインストールする。php*priority=valueprioritiesプラグインをインストールすることで使えるパラメータ。valueには1から100の数字を指定する。数字が低いほど優先順位は高い。個別のリポジトリ同士の優先順位を指定することで、外部リポジトリのパッケージが公式のパッケージを上書きするのを防ぐことができる。(もちろんその逆も可能)Prioritiesプラグイン導入方法は「過去の投稿」をどうぞ。[more_package_names]このオプションで指定したパッケージだけを有効にする。特定のパッケージのインストール・更新時にだけ、リポジトリを利用するときに指定する。指定の仕方はexcludeと同じ。/etc/yum.repos.d/remi.repo[remi]enabled=1includepkgs=php*このようにremiセクションで「enabled=1」としてリポジトリを有効にして、「includepkgs=php*」とすることで「phpという文字列からはじまる」パッケージだけを有効にすることができます。この設定だとremiリポジトリにある「phpという文字列からはじまるパッケージ」以外のものはインストールできません。enabledが「0」だとincludepkgsでパッケージを指定しても有効にならないので注意してください。yumコマンドの基本的な使い方yumの基本的な使い方についても目を通して起きましょう。マニュアルを読み返すと、まだ知らない便利なコマンドを見つけるのはよくあることです。パッケージを個別にインストールまずは基本の基本インストールする方法。複数パッケージを指定する場合はスペースで区切る。mysql*システム全体のパッケージをアップデートパッケージを指定しないと、システム全体のアップデートを行います。php*パッケージのアンインストールアンインストールにはremoveとeraseと2種類ありますが、どちらでも同じです。php*依存関係にあるパッケージを検索するprovidesとwhatprovidesどちらでもおなじです。使い方については後述します。ファイル名リポジトリ内のパッケージ情報を検索パッケージ名だけでなく、RPMファイルの「Name」「Packager」「Dummary」「Description」の各フィールドも検索できます。パッケージ名(検索ワード)パッケージの詳細情報を表示パッケージに関する詳細な情報が表示されます。設定ファイルの「cachedir」項目で指定したキャッシュデータを削除します。デフォルトは「/var/cache/yum」です。メタデータの取得時に何らかの状態で停止して不完全になった場合など、キャッシュに起因する不具合の解消に役立ちます。allだけでなくメタデータやパッケージファイル限定で削除もできます。詳しくはマニュアル参照。all※無効にしているリポジトリがある場合は「–enablerepo」オプションで有効にすることで削除できます。通常パッケージ情報は、インストール時やアップデート時に設定ファイルの「metadata_expire」で指定した間隔で更新されます。今すぐ更新したい場合は以下のコマンドを実行します。makecacheパッケージグループのインストール指定したパッケージグループをインストールします。パッケージグループとは特定の用途で利用するパッケージをまとめたものです。Groups:」として表示されます。日本語環境だと日本語名で表示されますが、そのまま後述するgroupinstallでインストールすることができます。パッケージグループ名パッケージグループの詳細を表示パッケージグループに含まれるパッケージの詳細を表示します。shellローカルに保存されたrpmパッケージをyumでインストール通常リポジトリで提供されていないパッケージをwgetでダウンロードした場合、rpmコマンドでインストールを行います。依存関係で別のパッケージをインストールする必要がある場合、その依存関係にあるパッケージもweb上で探してwgetでダウンロード、インストールする必要があります。このオプションでrpmパッケージをインストールすると、依存関係にあるパッケージが登録されているリポジトリにある場合、自動でダウンロード、インストールしてくれます。rpm形式のパッケージローカルに保存されたrpmパッケージでアップデートをするネットに繋がっていない、または繋げないで、ローカルに保存されたパッケージを使ってアップデート作業を行う。パッケージ名インストールしたパッケージのダウングレードパッケージ名にバージョンも指定することで意図したバージョンにダウングレードすることができます。有効なリポジトリのリストを表示する表示されるリストは通常の状態で有効なリポジトリ。設定ファイルで無効になっている場合は表示されない。「–enablerepo」オプションを使えば通常無効なリポジトリの情報も表示することができる。--help重要な実行の前に確認をしない設定ファイルの「assumeyes」を有効にした場合と同じ動作。php*設定ファイルの指定このオプションで指定されない場合「/etc/yum.conf」が適用される。一切の出力をなくす場合は確認を無効にする「-y」オプションも有効にする必要があります。--quiet例)一切の画面出力をせずインストールする。php*デバック用の出力このオプションを指定すると普段より多くの情報が出力されます。サーバの応答速度や依存関係の詳細な照合内容も出力されます。どのファイルが、どのファイルと依存関係にあるのか把握するのには役立ちますが、反面エラーを依存関係を正常に解決した場合でも出力されるので、重要な情報が埋もれやすくなります。u(省略)デバッグレベルを指定する上記デバックの出力レベルを指定することができます。numberには0から10の数字を入力し、0は出力なし、10は全てのログを出力します。10は「-v」オプションよりも詳細な出力になります。php*エラーの出力レベルを設定するここでいうエラーは依存性などのエラーではなく、yum自体の動作に関するエラー。numberには0から10の数字を入力し、0は出力なし、10は全てのエラーを出力します。設定ファイルでいう「errorlevel」の項目と同じ動作をします。Foundランダムに実行時間のセット最大の実行時間を分数でセットします。セットした時間内でランダムに実行します。10と指定した場合、実行時から10分までの間でランダムに実行。phpキャッシュを利用して実行リポジトリへの接続を行わず、新しいメタデータをダウンロードせずにキャッシュを利用してインストールします。メタデータ等がキャッシュディレクトリにない場合は実行されません。22:00重複したパッケージをリスト表示するインストール可能なパッケージのうち、複数のバージョンがある場合、全ての利用可能なパッケージを表示する。通常のlist表示では、利用可能なパッケージのうち最新のものだけが表示される。updatesインストールするディレクトリを指定する設定ファイルでいう「installroot」オプションと同じです。chroot環境を簡単に構築することができます。--installroot=root$releaseverが正しく取得できず、ミラーサーバのURLが得られない場合は以下のコマンドでバージョンを指定することができます。makecacheCentOS5.10、yum3.2.22の組み合わせでは、上記の方法でreleaseverオプションが使えず、$releaseverの値が正常に取得できずインストールできませんでした。その場合は「/etc/yum.repos.d」内の$releaseverをサーバのバージョンに変更します。1つ1つ編集するのが面倒な場合は以下のコマンドで置換処理をして、実行すると楽です。/tmp/testディレクトリへ「開発ツール」をインストールする一時的に特定のリポジトリを有効にする普段のアップデートは公式を利用し、外部リポジトリは無効にすることが多いと思います。このオプションを利用することで特定のパッケージをインストールするときだけリポジトリを有効にすることができます。設定ファイルを編集すること無く有効にすることができるので、特定の用途で外部リポジトリを利用する場合に便利です。設定ファイルでいうenabled=1を指定したのと同じです。--enablerepo=repoidglob例)remiリポジトリを有効にしてphpをインストールする。php例)複数指定する場合は「,(カンマ)」で区切ります。php一時的に特定のリポジトリを無効にする設定ファイルで有効になっているリポジトリを一時的に無効にして実行します。公式と外部両方のリポジトリでパッケージが提供されている場合、Prioritysプラグインで優先順位が高いリポジトリのものが優先されます。特定のパッケージはライブラリも含めて外部のものを利用したい、という場合に便利です。設定ファイルでいうenabled=0を指定したのと同じです。--disablerepo=repoidglob例)公式リポジトリを無効にしてphpをインストールする。php例)公式リポジトリを無効、外部リポジトリ(remi)を有効にしてphpをインストールする。phpobsoletes処理ロジックを有効にする設定ファイルでいうobsoletesと同じ。--obsoletes特定のパッケージを除外アップデートもしくはインストールする際に無視するパッケージを指定することができる。設定ファイルでいうexcludeと同じ。mysql*出力をカラー表示にする設定ファイルでいうcolorと同じ。list一時的に設定ファイルの除外項目を無効にするallは全ての除外項目を無効。mainはmainセクションで設定した除外項目を無効。repoidはリポジトリの除外項目を無効にする。php一時的に全てのプラグインを無効にするyumの基本動作にもプラグインは使われているため、デバック目的意外では推奨されません。依存関係でアップデートやインストールできないパッケージを無視して、インストール可能なパッケージは実行する。依存関係を無視してインストールするわけではなく、インストール可能なパッケージをインストールします。例)php*で依存関係でエラーなるパッケージを無視してインストール可能なものをインストールする。実際にパッケージをインストールする際、サーバの環境を把握する際、エラーが出た時の対処など、実際のサーバ管理に役立つ使い方を紹介します。個別パッケージのインストールを例に基本動作を確認まずは基本の基本、パッケージのインストールについてです。rsyslogをインストールする例を元に、yumの基本的な出力の意味について見ていきます。普段何気なく流しているログだと思いますが、yumの基本的な動作を把握することで、いざエラー表示が出た際に、エラー発生の原因が究明しやすくなります。pluginsで有効になっているプラグインを表示しています。2行目、保存されたキャッシュファイルを読み込んでいます。3~7行目、リポジトリ名と接続するftpサーバが表示されます。この時点で有効なリポジトリを判断できます。8行目、これはprioritiesプラグインの表示です。同じパッケージのバージョン違いが重複した際に、優先順位の高いリポジトリのものが優先されますが、いくつのパッケージが重複しているかを表示しています。重複したパッケージの全てを表示したい場合は「--showduplicates」オプションを付けてリスト表示すると見ることができます。9行目、インストールプロセスを開始。10行目、依存関係の解決を開始。11行目、トランザクション履歴の処理。/var/log/yum.log」とコマンド入力すれば表示できます。history」で表示することができます。~」でインストールまたはアップデートするパッケージを表示。13行目、依存関係の解決に関する処理が終了したことを示しています。依存関係に問題がある場合は問題の表示を開始します。無事依存関係が解決できると以下のような表示が続きます。Resolvedとあるので分かる通り依存関係が正しく解決できたことを示しています。4行目、パッケージに関する表示の見出しです。Packageはパッケージ名、Archは対応するアーキテクチャ、Versionはソフトのバージョンとリリース番号、Repositoryはそのままリポジトリ、Sizeはパッケージのサイズをそれぞれ示しています。Summaryで概要を表示。上の例では1つのパッケージをインストールすることを示しています。14行目、トータルのダウンロードサイズを表示。15行目、以上の内容で実行してよいか確認しています。そのまま実行して良い場合はYesである「y」と入力、拒否する場合はNoである「n」を入力してエンターを押します。16~21行目、ここでrpm_check_debugを実行します。トランザクションを書き出すファイルが無いなどエラーが出るとkilldという表示で停止します。Succeeded」と表示されます。Transactionで実際にインストールやアップデート、削除などを行い、トランザクション処理を実行します。25~26行目、Installedでインストールしたパッケージの表示28行目、コンプリート!インストールされている全パッケージを表示する方法サーバの環境を全体的に把握するのに役立ちます。実際のインストール作業の際に、パッケージの有無、バージョンの把握にはこの方法が適しています。installed(省略)yumでインストールすることのできるパッケージの検索と説明の表示いきなりinstallとする前に、簡単な解説を読むことでパッケージを動作させるために必要なソフトの全体像を把握できます。Preprocessor)(省略)パッケージの詳細について調べるバージョンの違いでパッケージが統廃合された際や、新しく必要なライブラリが増えるのはよくあることです。見たことのないファイルや、本当に必要かどうかわからない場合は詳細について調べます。Server.設定ファイルで無効になっているリポジトリを一時的に有効にする外部リポジトリを追加している場合、通常のアップデート作業で公式のパッケージが上書きされないように、外部リポジトリを無効にしている場合が多いと思います。以下のオプションで特定の用途だけ外部リポジトリを有効にすることができます。php*公式を一時的に無効にして外部リポジトリのパッケージをインストールするPrioritysプラグインで公式パッケージの優先順位が高い場合、パッケージが競合するとバージョンに関わらず公式のものが優先されます。それは正しい動作ですが、特定のパッケージだけ外部リポジトリのものをインストールしたい場合もあると思います。その場合は以下のようにenablerepoとdisablerepoを組み合わせてインストールします。php*設定ファイルで特定のパッケージだけ更新を無効にする公式だけが有効になっている場合、今度は逆に外部リポジトリのパッケージを公式のものが上書きするという自体も考えられます。そこで特定のパッケージだけ更新を無効にします。←[main]セクションに追加。複数パッケージを指定する場合は半角スペースで区切る試しに以下のコマンドで動作を確認してください。list」というメッセージのみ表示されて、更新用のパッケージがあったとしても表示されなくなります。Base」と表示されます。(Baseの場合)基本的に全体の設定ファイルで設定した項目でも、個別の設定ファイルで改めて設定し直すと上書きされますが、excludeは以下の様な扱いになります。全体の設定ファイルである「/etc/yum.conf」で除外すると、リポジトリ個別の設定ファイルで当該する項目を「exclude」に追加しなくても有効になります。個別の設定ファイルでは「mysql*」しか指定されていませんが、全体の設定ファイルで設定されているので「php*」と「mysql*」が無効になります。1度全体の設定ファイルで除外された項目は個別の設定ファイルで「includepkgs=php*」と指定しても有効にはなりません。公式を無効にして、外部リポジトリを有効にする場合は、個別設定ファイルで設定を指定ください。mysql-serverのインストール時に以下の様なエラーが出た場合。(remi)にはperl-DBD-MySQLが必要とされています。」という意味になります。mysql-serverをインストールする前に、perl-DBD-MySQLをインストールしてくださいという意味です。なると同じエラーメッセージへの対応をネットで検索する人が多いと思いますが、yumの機能で大抵のことがわかります。perl-DBD-MySQLについて調べる「info」オプションでパッケージの詳細についても調べておきます。Perl.以上の出力から以下のことがわかります。以上のことから、mysql-serverを正常に動作させるために必要なPerlのデータベースインターフェイスであるperl-DBD-MySQLをインストールする必要がある。いうことがわかります。perl-DBD-MySQLがインストール可能か調べる詳細を調べたパッケージがyumでインストール可能か調べます。basebaseで提供されていることがわかりました。そのままインストール作業を進めます。mysql-serverこのようにyumだけで依存関係のエラーを解決することができました。困るのはパッケージ名でなく、ライブラリ名やモジュール名で依存関係の不足を指摘された場合です。以下の様なエラーが出る場合があります。(base)上の例と同じようにyumでインストール可能か調べます。libmysqlclient.so.15しかし何も表示されません。list」で表示されるのはパッケージ名だけで、個別のファイル名では検索ができません。仕方なくネットで検索...。そんなときでもyumの「provides」コマンドを使えば、ファイルがどのパッケージ含まれるか調べることができます。libmysqlclient.so.15以上の情報から、baseというリポジトリにある「mysql-5.0.95-5.el5_9.i386」というパッケージの中に「libmysqlclient.so.15」が含まれている、ということがわかります。検索に使うファイル名ですが、単純にファイル名だけでなく、ディレクトリも含めてリスト化されている場合もあります。その場合はファイル名だと検索が失敗するので、ワイルドカードを使って検索します。/usr/lib64/mysql/libmysqlclient.so.15これで「mysqlclient15-5.0.67-1.el5.remi.x86_64」をインストールすれば「libmysqlclient.so.15」が必要という依存関係を解決することができる、ということがわかりました。依存関係でエラーが出た場合以下のようなメッセージが出力されます。このオプションをつけると解決しそうに見えます。ネット上でも「表示されたオプションを付けることで目的のパッケージがインストールできた」と解説されていることがありますが、注意が必要です。package.まず「--skip-broken」オプションですが、これは依存関係でエラーの出ているパッケージを無視して、インストールまたはアップデート可能なパッケージだけ実行するというオプションです。そのため、このオプションを付けて「Complete!」と出力されても、エラーの出ているパッケージは依存関係が解決していません。その後に「package-cleanup」を使った解決法も提示されていますが、そもそもyum-utilsがインストールされていないと利用することができません。インストールされていない場合は以下のコマンドでインストールしておきましょう。yum-utils使えるようになったところで、紹介されているコマンドについて解説します。--problemsこれはRPMの依存関係に関するデータベースに問題がある場合に正常に戻してくれるオプションです。--dupesこちらは上記データベースの重複項目を調べるオプションです。重複項目が見つかった場合は「--cleandupes」オプションで削除します。--nodigestそれぞれのオプションは以下の意味があります。-Vパッケージを検査する。-aインストールされているすべてのパッケージを選択する。--nodigestパッケージのヘッダーやダイジェスト値を検査しない。--nofilesパッケージ内のファイル属性を検査しない。要約すると、インストールしたパッケージのメタデータと、rpmデータベースの内容を比較して検査する。いうコマンドになります。以上のことから分かるように「1つ目は依存関係が解決できないものをスキップする方法」。それ以降は「正しい依存関係であるにもかかわらずメタデータやデータベースが壊れている場合に修正する方法」です。実際に依存関係でお互いのパッケージが必要な場合、これらのコマンドでは何も解決しません。手間がかかりますが、上記の検索等を利用して依存関係を解決するのが正攻法です。yum自体がエラーで正しく動作しない時に試すコマンド最後にyum自体がエラーで動作しない場合の対象法を紹介します。全てのキャッシュを削除するコマンド。リポジトリのURLや、ファイルのメタデータ、リスト等のデータベース全てが削除されます。通信障害などの理由でキャッシュファイルが正しく構成できなかった時などに使います。all何らかの理由でトランザクション処理が正しく終了しなかった場合は以下のコマンドで治る場合があります。利用するには「package-cleanup」がインストールされている必要があります。yum-complete-transaction以上でyumのまとめは終了です。?意外に知らない機能が多かったのではないでしょうか?私自身、まとめを作成していて多くの新しい発見がありました。賢く利用してLinuxの環境構築に役立ててください。PMなぜかページ後半になると背景が黒くなってまともに読めない。PMコメントありがとうございます。ご指摘の件ですが、恐らくブラウザの高さを揃えるために使っているJavaScriptが動作していないためと思われます。JavaScriptが正しく解釈されない場合でも文字が読めなくなることは無いようにCSSを変更しました。よろしければ再現して修正するためにOSとブラウザなど閲覧環境を教えてください。PM分かり易く、大変参考になりました。AMコメントありがとうございます。お役に立てたようで何よりです。AMパッケージをソースからインストールするときは、./configureでいろんなオプションをつけてたと思います。そのオプションは、Yumでインストールするとき、どのように指定するのでしょうか?ご教示、よろしくお願いします。AMこのブログのコメントは承認制なので、すぐには反映されません。わかりにくくて失礼しました。ご質問の件ですが、浅学のため正確な答えはできません。ここからは推測ですが、yumはパッケージの依存関係をチェックしてインストールするコマンドです。独自のオプションを付けてソースからコンパイルするような機能はありません。そのため、独自の設定でインストールする場合は、旧来の方法であるソースからコンパイルしてインストールという手順を踏むしかないと思います。コメントをキャンセルコメントは認証制のため、すぐには反映されません。sukegra」をご利用ください。Share)Linuxの基本の基本。Share)他に運営しているサイトGOいけん世間を騒がせている、あの話題について言いたい。そんなあなたの「ご意見」を世に問うサイト。SUKEGRA「スケグラ」は日本語でプログラミングの悩みを解決するQ&Aサイトです。アクアリウムWikiアクアリウムに関することをみんなでまとめるWikiです。