web-dev-qa-db-ja.com

yumリポジトリをミラーリングして、各パッケージの最新バージョンのみをダウンロードするにはどうすればよいですか?

http://yum.puppetlabs.com/ にある次のYum/RPMリポジトリをミラーリングしたいと思います。

Puppetリポジトリには、これまでにリリースされたすべてのPuppet製品が含まれており、サイズは約8GBと非常に大きいです。最新バージョンのファイルのみをミラーリングする必要があります。

reposync --newest-onlyを使用してリポジトリをミラーリングしようとしました:

reposync --config=puppetlabs.repo.el6 --repoid=puppetlabs-products --repoid=puppetlabs-deps --newest-only --download_path=el/6 --quiet --downloadcomps

これで、必要な最新のパッケージがダウンロードされます。ただし、reposyncは通常のディレクトリ構造(x86_64noarchSRPMSなど)を自動的に作成せず、repodata.xmlをミラーリングしません。その結果、yumクライアントは次のようなエラーを受け取ります。

[root@web1 ~]# yum --quiet install puppet
http://mirrors.example.org/pub/puppet/el/6/puppetlabs-deps/x86_64/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404 Not Found"
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: puppetlabs-deps. Please verify its path and try again
[root@web1 ~]# 

プログラムでYumリポジトリから新しいファイルのみをミラーリングし、標準のリポジトリディレクトリ構造に従う方法はありますか?

8

reposyncは、これを行う唯一の信頼できる方法です。小さなbashスクリプトを作成し、reposyncパラメーター(-a)を使用して各アーキテクチャーを個別のフォルダーにダウンロードし、次に createrepo を実行してメタデータを生成する必要があります。

ここに私が持っている小さなスクリプトがあります(それはUbuntuで実行されていますが、問題ではありません、あなたはアイデアを得ます):

猫の同期レポ

#!/bin/bash

reposync -n -c /etc/yum/yum.conf -p /repos/centos6 -d -r base -r updates -r extras -r centosplus -r contrib
createrepo -g /repos/centos6/base/repodata/comps.xml /repos/centos6/base
createrepo /repos/centos6/updates
createrepo /repos/centos6/extras
createrepo /repos/centos6/centosplus

reposync -n -c /etc/yum/yum.conf -p /repos -d -r vmware -r home_xtreemfs
createrepo /repos/vmware
createrepo /repos/home_xtreemfs

reposync -n -c /etc/yum/yum.conf -p /repos/vz -d -r openvz-utils -r openvz-kernel-rhel6
createrepo /repos/vz/openvz-utils
createrepo /repos/vz/openvz-kernel-rhel6

reposync -n -c /etc/yum/yum.conf -p /repos/nginx -d -r nginx-stable -r nginx-mainline
createrepo /repos/nginx/nginx-stable
createrepo /repos/nginx/nginx-mainline
7

pulp とyum rpmディストリビュータプラグインでこれを行うことができます。

新しいレポを構成するときに、各rpmのバージョンを1つだけ取得するには、retain_old_count retain_old_countパラメーター を設定します

retain_old_count
Count indicating how many old rpm versions to retain; by default it will 
download all versions available.

したがって、次のようなものがあります。

$ pulp-admin rpm repo create \
          --repo-id=rhel6-puppet-products \
          --relative-url=rhel6-puppet-products \
          --feed=http://yum.puppetlabs.com/el/6/products/ \
          --retain-old-count 1
$ pulp-admin rpm repo sync run  \
          --repo-id=rhel6-puppet-products \

あなたが望むものを達成する必要があります。 クイックスタートガイド があります。これにより、これまでに試したことがない場合に備えて、どのように機能するかがわかります。

3
Petter H

Spacewalkは使いやすい、使いたい別の簡単なオプションです。リポジトリマネージャーとホストの間に安全な接続を確立し、同期するパッケージを管理してホストに提供し、同期をスケジュールできます。アップデートやパッチ、その他多くのクールな機能。

0
ravasquezgt

/ etc/sysconfig/uln-yum-mirrorを編集しますALL_PKGS = 0を変更します

0->最新のみをダウンロード、1->すべてのバージョンをダウンロード

0
Mike Lee