そのコマンドを使用するときは、createrepo
RPM(デフォルトディレクトリにある)を複数のディレクトリ(階層的に考える)に配置し、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(おそらく以前のバージョン)はサブディレクトリに入ります。