Yumリポジトリをクリーンアップする最良の方法は?


10

開発者がビルドをアップロードするカスタムYumリポジトリがあります。

問題は、しばらくすると古いバージョンで乱雑になることです。

古いバージョンを手動で削除するのは非常に煩わしいので、自分で自動化しようとする前に、バージョン(推奨)またはアップロード時間に基づいて古いRPMをクリーンアップするスクリプトがあるかどうか疑問に思います。

Xの最後のバージョンを単純に保存するように指定し、それ以外はすべて消去できるのが最善です。次に、cronを実行して、毎日実行させます。

任意のアイデアをありがとう。


スクリプトがなければ、あるはずです。自社で使用するために1つ作成しましたが、可能であれば、これを実際に公開することを検討します。
Andrew M.

すごい-オープンソース化できればありがたいです。githubへの投稿は素晴らしいアイデアです。
SyRenity

回答:


13

「単純な」方法は、ディレクトリにすべてをダンプして実行することです。

rm $(repomanage --keep=2 --old /path/to/repo)
createrepo /path/to/repo

...もっと複雑な方法は、麹などを設定することです。ビルドを実行してリポジトリを作成します。


クール-それはまさに私が必要としたものです。
SyRenity 2012

素晴らしいもの、これを知らなかった
dyasny 2014年

技術的には、xargs代わりに一緒に使用する必要があります。そうしないと、rm: missing operand(古いRPMを削除する必要がない場合に)使用できない可能性があるためです。So:repomanage --keep=2 --old /path/to/repo | xargs rm -f
Danila Vershinin

xargsを使用する理由はrm $(repomanage --keep=2 --old /path/to/repo)、最大コマンド長を簡単に超える可能性があるためです。 xargs引数の膨大なリストを処理します。参照:offbytwo.com/2011/06/26/things-you-didnt-know-about-xargs.html
shrewmouse

1

yum-utils RPMから「repomanage」ユーティリティを確認してください。それはまさにあなたが探しているものを実行します。

[root ~]# repomanage --help
usage:
  repomanage: manage a directory of rpm packages. returns lists of newest
            or oldest packages in a directory for easy piping to xargs
            or similar programs.
  repomanage [--old] [--new] path.


  options:
    -h, --help            show this help message and exit
    -o, --old             print the older packages
    -n, --new             print the newest packages
    -s, --space           space separated output, not newline
    -k KEEP, --keep=KEEP  newest N packages to keep - defaults to 1
    -c, --nocheck         do not check package payload signatures/digests
[root ~]#

0

ビルドの識別に使用するバージョン管理またはラベル付けシステムを活用します。リポジトリをホストしているサーバーで実行されているスクリプトを使用して、日付でパッケージを識別することもできます。


ファイル名のバージョンをチェックするということですか?これも私の考えですが、これを自動化したスクリプトを用意しておくとよいでしょう。
SyRenity

1
また、ファイル名は必ずしもバージョンを示すものではないことも覚えておいてください。つまり、RPMの名前を好きなように変更できます。代わりに、yumはRPMのメタデータを使用します。
Andrew M.

0

アップロードが毎日行われる場合、(アクセス/変更時間の観点から)一定の日数を超えて古い古いファイルを削除することを検討してみませんか?それらを見つけて削除してください。開発者にビルドをアップロードして、アップロード時に現在の月の名前をファイル名に含めるようにできる場合、ファイルがいわゆる「月年」でアップロードされたことはファイル名から直接意味があり、削除するだけで意味があります。ファイル名を見ることによって。スクリプトの自動化では、これらのファイルを削除することを検討するか、前月と当月に一致するファイルを保持するだけで簡単になります。ちょっとした考え。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.