いくつかのリポジトリ(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アドレスに解決されていることを確認しました。
私は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
それは完璧に働きました。
Sudo yum -v clean expire-cache
うまくいきませんでした。しかし、私はそれを動作させることができました
Sudo touch /etc/yum.repos.d/<your_repo_file>
そして
yum repolist
更新されたことを示します。お役に立てれば。