
すでにインストールされている場合でも、yumdownloaderを使用してすべての依存関係をダウンロードする方法はありますか?
ローカルリポジトリを作成しようとするのに必要なパッケージだけを含めたいです。
答え1
次のように使用できますrepotrack
。
repotrack -a x86_64 -p /repos/Packages [packages]
-a
残念ながら、旗(アーチ)にバグがあります。 i686とx86_64をダウンロードしてください。
問題を解決する方法は次のとおりです。
if opts.arch:
#archlist = []
#archlist.extend(rpmUtils.arch.getArchList(opts.arch))
archlist = opts.arch.split(',') # Change to this
else:
archlist = rpmUtils.arch.getArchList()
repoquery
以下を使用してグループパッケージのリストをインポートできます。
repoquery --qf=%{name} -g --list --grouppkgs=all [groups]
これをrepotrackに入力できます。
repoquery --qf=%{name} -g --list --grouppkgs=all [groups] | xargs repotrack -a x86_64 -p /repos/Packages
答え2
ちなみにyumdownloader
これをしないでください。パッケージ管理にyumを使用している人なら、次のコマンドラインがパッケージRPMとすべての依存関係を繰り返しダウンロードすることを期待するのは当然です。
yumdownloader --resolve <package>
しかしそれは真実ではない。最初のレベルの依存関係またはまだインストールされていない依存関係を印刷できます。わかりません。
これはCentOS 6.5で動作する方法です。yum
ダウンロード専用プラグインをインストールするには、次の手順に従ってください。赤い帽子。デフォルトでは、CentOS 6.xは次のことを行います。
$ sudo yum install yum-plugin-downloadonly.noarch
その後、スイッチを組み合わせて--installroot
プラグインを使用してくださいyum
。これは解決を防ぎ、yum
システムにすでにインストールされている依存関係をスキップします。
sudo yum install \
--installroot=</path/to/tmp_dir> \
--downloadonly --downloaddir <rpm_dir> <package>
パッケージのRPM<package>
とすべての依存関係をダウンロードし、Gitを使用してディレクトリに配置します<rpm_dir>
。
$ mkdir root rpms
$ sudo yum install --installroot=/home/roy/root \
--downloadonly --downloaddir rpms/ git
答え3
また試してみてください
repoquery -R --resolve --recursive <name> | xargs -r yumdownloader
たとえば、
repoquery -R --resolve --recursive firefox | xargs -r yumdownloader
答え4
実際、そのようなリポジトリを構築することは保守が困難であることがわかりました。私たちは次の理由でこのリポジトリを構築しました。
- 複数のサーバーのローカルソースからパッケージをインポートしたいと思います。
- 信頼できるパッケージのみをインストールできます。
私たちが直面できる問題は次のとおりです。
- パッケージを最新の状態に保ちます。依存関係が変更されます。一部は追加され、一部は削除されます。
- インストールする新しいパッケージを追加します。
- 上記の課題により、重要な更新を推進するプロセスが長くなります。
最終的により良い解決策は私たちの問題は、公式リポジトリをプロキシし、私たちが使用するパッケージをキャッシュすることです。これは次の理由でうまく機能します。
- 実際に使用しているパッケージのみがローカルに保存されます。
- 以前のパッケージは自動的に期限切れになります。
- パッケージが初めて使用されると、公式リポジトリから取得されますが、後続の要求はキャッシュから来ます。
- 公式リポジトリを信頼するだけで信頼を構築するのに十分です。私たちのプロキシイメージは信頼できるソースからのみパッケージをインポートします。
私たちはプロキシサポートを組み込んだNginxを使います。