createrepoを使用すると、rpmを複数のディレクトリに配置できますか?

createrepoを使用すると、rpmを複数のディレクトリに配置できますか?

そのコマンドを使用するときは、createrepoRPM(デフォルトディレクトリにある)を複数のディレクトリ(階層的に考える)に配置し、yumにデフォルトディレクトリのディレクトリのすべてのRPMを再帰的に見つけることができますか?

例:

createrepo /srv/my/repo 
/srv/my/repo/vendor1/package1/first.rpm
/srv/my/repo/vendor1/package2/first.rpm

/srv/my/repo/vendor2/package1/third.rpm

私がこの質問をする理由は、RPMの1つをディレクトリにドロップしてacreaterepo --updateとaを実行してもyum clean allまだ認識されていないからです。これで、階層構造ではなくフラットファイル構造にする必要があるかどうか疑問に思います。

答え1

私の経験上、いいえ、createrepoディレクトリツリーを再帰的に移動することはできません。したがって、ストレージのディレクトリ構造を平坦化する必要があります。私は通常、リポジトリビルドスクリプトでこのタイプのループ構成を使用します。

destdir="/path/to/my/yum-repos/Fedora/14"
for arch in i386 x86_64 noarch; do
  printf "\n\n==== creating repo: %-50s [%-s]\n" $destdir $arch
  pushd ${destdir}/${arch} >/dev/null 2>&1
  createrepo -dp .
  popd >/dev/null 2>&1
done

答え2

このスレッドと私の逸話的な証拠によると、yum createrepoはサブディレクトリをナビゲートするので、平面化する必要はありません。

http://lists.baseurl.org/pipermail/yum/2013-December/024061.html

今実行したテストによると、このようなことが起こっているようです。新しいディレクトリ/usr/local/repob/pkgs/b/を作成し、文字「b」で始まるすべてのFedora 19 rpmファイルをここにコピーしました。次に、親ディレクトリ構造で「createrepo」を実行します。

#createrepo /usr/local/repob

ディレクトリ構造全体を再帰的に検索して、新しいローカルyumリポジトリを作成するようです。新しいリポジトリ用のクイック/etc/yum.repos.d/.confファイルを作成し、「repoquery」を使用してそのパッケージを一覧表示してそれを確認しましたが、パッケージはすべてそこにあります。

したがって、createrepoはデフォルトで "/path/to/rpms/"ディレクトリを再帰的に検索しているように見えますが、マニュアルページには記載されていないようです。知っておくと便利な情報だと思います。

答え3

/repodataと同じディレクトリにあるシンボリックリンクを使用してもかまいません。

答え4

createrepoバージョン0.9.9(おそらく以前のバージョン)はサブディレクトリに入ります。

関連情報