web-dev-qa-db-ja.com

サーバーは更新されていますが、yumクライアントは新しいパッケージを認識しません

いくつかのリポジトリ(RHELリポジトリのコピー、社内で作成されたプログラムなど)を含む内部yumサーバーがあります。社内システムはインターネットからファイアウォールで保護されているため、社内サーバーのみを使用できます。

パッチを運用環境にプッシュする前にテストするために、デフォルトで有効になっているstableリポジトリがあります。更新はすべて-latestリポジトリに置かれます。サーバーにパッチを適用するときは、-latest- repoを使用して新しいベースラインを構築し、いくつかのサーバーでテストします。テストしたら、そのベースラインを新しいstableにします。 -latestリポジトリはデフォルトで無効になっています。

リポジトリの1つは、epel、rpmforgeなどからフェッチするいくつかのパッケージに使用されます。必要な依存関係を持つ必要なパッケージのみを同期するスクリプトがあります。パッケージが同期された後、repoは毎晩createrepoで再構築されます。これらのパッケージはテストされていないため、通常は無効になっているint-optional-latestリポジトリに置かれます。サーバーがそのリポジトリからのパッケージを必要とする場合、enable-repo=int-optional-latestを使用してインストールします。

今日、同僚がサーバーにPerl-Excel-Writer-XLSXをインストールしようとしていました。サーバーはパッケージを見つけられませんでした。 createrepoを使用してリポジトリを再構築し、repodataファイルをgrepしてファイルが存在することを確認しました。そうだった。私はまた、ファイルがリポジトリ内に存在することを確認しました

repoquery -q --repoid=int-optional-latest -l Perl-Excel-Writer-XLSX

また、クライアント側のメタデータキャッシュをクリアして、

Sudo yum clean expire-cache

それにもかかわらず、クライアントはパッケージがサーバー上に存在しないと主張し続けました。

別のマシンから検索しようとしたときにパッケージが見つかったため、問題はサーバー側にあるとは思いません。 repoファイルが正しいこと、および名前yum.example.comが両方のサーバーで同じIPアドレスに解決されていることを確認しました。

16
Jenny D

私はyumサーバーのWebサーバーログを詳しく調べ始めましたが、ファイルを見つけることができなかったクライアントのIPからのヒットは見つかりませんでした。クライアントのキャッシュをクリアしていたので、最初はこれがわかりませんでした。だから私はもう一度キャッシュクリーンアウトをしました、今度は

Sudo yum -v clean expire-cache

-vで実行すると、クリーンアップするリポジトリが一覧表示されますが、int-optional-latestは一覧にありませんでした。これは、リポジトリがデフォルトで無効になっているためだと思います。私はもう一度キャッシュをクリアしましたが、今回は

Sudo yum -v enable-repo=int-optional-latest clean expire-cache

その後、私は別のを試しました

Sudo yum enable-repo=int-optional-latest install Perl-Excel-Writer-XLSX

それは完璧に働きました。

14
Jenny D
Sudo yum -v clean expire-cache

うまくいきませんでした。しかし、私はそれを動作させることができました

Sudo touch /etc/yum.repos.d/<your_repo_file>

そして

yum repolist

更新されたことを示します。お役に立てれば。

1
Z_K