यम भंडार को साफ करने का सबसे अच्छा तरीका?


10

हमारे पास एक कस्टम यम रेपो है जिसे हमारे डेवलपर अपलोड करते हैं।

समस्या यह है कि कुछ समय बाद यह पुराने संस्करणों के साथ बंद हो जाता है।

मैन्युअल रूप से पुराने संस्करणों को हटाना काफी कष्टप्रद है, इसलिए इससे पहले कि हम इसे स्वयं को स्वचालित करने का प्रयास करें, मुझे आश्चर्य है कि क्या कोई स्क्रिप्ट है जो पुराने आरपीएम के संस्करण (पसंदीदा) या अपलोड के समय के आधार पर साफ करेगी।

सबसे अच्छा तो यह होगा कि हम एक्स पिछले संस्करणों को सरल रूप से सहेज सकते हैं, और कुछ भी मिटा सकते हैं। तब हम इसे क्रोन कर सकते थे और बस इसे रोज चलाने देते थे।

किसी भी विचार के लिए धन्यवाद।


यदि स्क्रिप्ट नहीं है, तो होना चाहिए। हमने अपनी कंपनी में अपने स्वयं के उपयोग के लिए एक लिखा था, लेकिन यदि संभव हो तो मैं इसे जंगली में जारी करने के बारे में देखूंगा।
एंड्रयू एम।

महान - मैं सराहना करूंगा अगर यह खुले-खट्टे हो सकते हैं। गितुब पर पोस्ट करना एक महान ओडिया होगा।
SyRenity

जवाबों:


13

"सरल" तरीका बस एक निर्देशिका में सब कुछ डंप करने और चलाने के लिए है:

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

... अधिक जटिल तरीका koji / etc सेटअप करना है। अपने बिल्ड और रिपोज बनाने के लिए।


कूल - बिल्कुल वही जो मुझे चाहिए था।
साइरनिटी

महान सामान, इस एक के बारे में पता नहीं था
dyasny

तकनीकी रूप से, आपको xargsइसके बजाय एक साथ उपयोग करना चाहिए , क्योंकि अन्यथा आप प्राप्त कर सकते हैं rm: missing operand(यदि निकालने के लिए कोई पुराने आरपीएम नहीं हैं)। सो:repomanage --keep=2 --old /path/to/repo | xargs rm -f
दानिला वर्शिनिन

Xargs का उपयोग करने का कारण यह है कि rm $(repomanage --keep=2 --old /path/to/repo)आसानी से अधिकतम कमांड लंबाई से अधिक हो सकती है। xargsतर्कों की एक विशाल सूची का ध्यान रखेगा। देखें: offbytwo.com/2011/06/26/things-you-didnt-know-about-xargs.html
shrewmouse

1

यम-बर्तनों RPM से "पुनर्निमाण" उपयोगिता की जाँच करें। यह वही करता है जो आप खोज रहे हैं।

[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

मैं वर्जनिंग या लेबलिंग सिस्टम का लाभ उठाऊंगा जिसका उपयोग आप बिल्ड्स की पहचान करने के लिए करते हैं। आप रिपॉजिटरी की मेजबानी करने वाले सर्वर पर चलने वाली स्क्रिप्ट के साथ पैकेज की तारीख भी पहचान सकते हैं।


आप फ़ाइल नामों में संस्करण की जाँच से मतलब है? यह मेरे विचार की रेखा है, लेकिन इसके लिए एक स्वचालित स्क्रिप्ट रखना अच्छा होगा।
सिनारेनिटी

1
यह भी याद रखें कि फ़ाइल नाम आवश्यक रूप से संस्करण का संकेत नहीं है। यानी, मैं अपनी इच्छानुसार किसी भी RPM का नाम बदल सकता हूं; yum इसके बजाय RPM के मेटाडेटा का उपयोग करेगा।
एंड्रयू एम।

0

यदि अपलोड रोज होते हैं, तो उन पुरानी फ़ाइलों को हटाने पर विचार क्यों नहीं किया जाता है जो कुछ दिनों से अधिक पुरानी हैं (उनकी पहुंच / संशोधन समय के संदर्भ में)? खोजें और उन्हें हटा दें। यदि आप अपने डेवलपर्स अपलोड को ऐसे बना सकते हैं कि वे अपलोड करते समय चालू माह का नाम फ़ाइल नाम में रख दें, तो सीधे फ़ाइल नाम से यह समझ में आ जाएगा कि फ़ाइल को तथाकथित महीने में अपलोड किया गया था और यह सिर्फ हटाने के लिए समझ में आता है फ़ाइल नाम को देखने के आधार पर। आपकी स्क्रिप्ट स्वचालन के लिए उन फ़ाइलों को हटाने पर विचार करना या उन फ़ाइलों को रखना आसान होगा जो पिछले महीने और चालू महीने से मेल खाते हैं। सिर्फ एक विचार।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.