ऑटो अपडेट होमब्रेव


13

मैं वर्तमान में Homebrew पैकेज मैनेजर का उपयोग कर रहा हूं और मेरा सवाल यह है कि क्या निष्पादन के लिए बैश की स्क्रिप्ट लिखना brew updateऔर आखिरकार brew upgradeजब भी पहली बार खोलना हो तो लिखना क्या है? मैं फिलहाल iTerm का उपयोग कर रहा हूं।


आप इसे ~/.bash_profileफ़ाइल में कर सकते हैं । आपको यह जांचना होगा कि क्या केवल 1 टर्मिनल सत्र खुला है और फिर चला brew update। टर्मिनल विंडो की संख्या के निर्धारण के लिए stackoverflow.com/questions/6172663/… की जाँच करें ।
मेटूस ज़्लॉसेक

वह टर्मिनलों की संख्या है जो स्क्रिप्ट निष्पादित होने पर खुलते हैं या सामान्य रूप से खोले गए टर्मिनलों की संख्या?
g_rmz

स्क्रिप्ट चलने पर खुलने वाले (विंडोज़ + टैब) टर्मिनलों की संख्या। ~/.bash_profileटर्मिनल सत्र की शुरुआत में स्वचालित रूप से निष्पादित किया जाता है। यदि आपको brew updateपहली शुरुआत में दौड़ने की आवश्यकता है, तो यह चेक आवश्यक है । यदि आप इसे चलाना चाहते हैं तो हर बार नई विंडो खोली जाती है, इस चरण को छोड़ें और brew updateअंदर जाएँ ~/.bash_profile
मेटूस ज़्लॉज़ेक

यह एक टर्मिनल टैब को बहुत धीमी गति से खोल देगा
user151019

ठीक है धन्यवाद! :) यह टर्मिनल के प्रदर्शन को बहुत कम कर देगा?
g_rmz

जवाबों:


20

यह करने में बहुत आसान है।

दक्षता (और शांत कारक) के लिए, मैं हर बार जब आप एक शेल शुरू करते हैं , तो लॉन्चर / लॉन्चड का उपयोग करके समय-समय पर इस स्क्रिप्ट को लॉन्च करने के लिए लिंगोन जैसे उपकरण का उपयोग करेंगे । मेरे मैकबुक पर, दूसरी बार (कोई काम नहीं किया गया, DNS कैश सेट, आदि ...) को अपडेट करने के लिए 3 सेकंड लगते हैं और पहली बार (कोई काम नहीं हुआ) या 15+ सेकंड चलाने के लिए 10 सेकंड लगते हैं अगर पैकेज की ज़रूरत होती है डाउनलोड या संकलित किया जाना।

शायद दिन में एक बार या घंटे में एक बार - पृष्ठभूमि में चलने के लिए पर्याप्त समय दिया जाएगा?

आप एक सरल स्क्रिप्ट बना सकते हैं जो /usr/local/bin/brewupबदले में काढ़ा को कॉल करता है और परिणाम को सिस्टम लॉग में लॉग करता है

#!/bin/bash

brew=/usr/local/bin/brew
logger=/usr/bin/logger

$brew update 2>&1  | $logger -t brewup.update
$brew upgrade 2>&1 | $logger -t brewup.upgrade
$brew cleanup 2>&1 | $logger -t brewup.cleanup

जब मैं चाय बनाने जाऊंगा या जब मैं शुरू होने जाऊंगा, तब मैं ब्रूअप को कॉल करूंगा और इसे बैकग्राउंड में चलने दूंगा।

brewup &

2
+1 मैं सहमत हूं कि टर्मिनल की हर शुरुआत में चलने के बजाय लॉन्चक्लेट के टोम सॉर्ट का उपयोग करना बेहतर है। Additonally यह टर्मिनल स्वतंत्र है (iTerm उपयोगकर्ताओं के लिए)।
माटूस ज़्लॉज़ेक

1
यह शानदार है, धन्यवाद! :) कैसे लिंगोन के बजाय crontab के बारे में?
g_rmz

2
@g_rmz crontab के साथ कुछ भी गलत नहीं है और यह जानना आसान है। यदि यह काम करता है, तो इसके साथ चलाएं। launchdअधिक लाभ cronयह है कि यह अधिक लचीला, अधिक शक्ति के अनुकूल है, और अधिक स्वाभाविक रूप से नींद / चूक अंतराल को संभालता है।
bmike

महान स्क्रिप्ट के लिए धन्यवाद। बस जिज्ञासा से बाहर - क्या -t विकल्प है?
अविआरिस

1
हे @ दवहवेद। tध्वज के शुष्क संस्करण के लिए लकड़हारा के लिए मैन पेज देखें । मैं इसका उपयोग करता हूं इसलिए मैं इन संदेशों को लॉग के समुद्र में एक आसान grepया logकमांड और खोज / खोज शब्द के साथ विधेय कर सकता हूं ।
bmike

7

Homebrew-autoupdate नामक एक उपकरण है जो आपके लिए यह करेगा। यह स्वचालित रूप से brew updateप्रत्येक 24 घंटे (कॉन्फ़िगर करने योग्य) पृष्ठभूमि में चल सकता है यह सुनिश्चित करने के लिए कि आपके पास हमेशा नए होमब्रेव डेटा हैं जब आप इंस्टॉल / अपग्रेड पैकेज पर जाते हैं।

इसे चलाने के लिए इंस्टॉल करें brew tap domt4/autoupdateऔर brew autoupdate --start 43200इसे हर 12 घंटे (43200 सेकंड) पर स्वतः कॉन्फ़िगर करने के लिए कॉन्फ़िगर करें।


0

मैं स्टार्ट-अप पर Homebrew अपडेट करना पसंद करता हूं। मेरे पास एक स्क्रिप्ट Update Homebrew.shहै ~/Library/Scripts:

#!/usr/local/bin/bash

for cmd in update upgrade cleanup\ -s; do
  brew $cmd
done

यह स्क्रिप्ट स्टार्ट-अप का उपयोग करके चलाई जाती है launchd। उसके लिए, मेरे पास Update Homebrew.plistहै ~/Library/LaunchAgents:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>Update Homebrew</string>
        <key>ProgramArguments</key>
        <array>
            <string>/Users/Daan/Library/Scripts/Update Homebrew.sh</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
    </dict>
</plist>

ध्यान दें कि जब आप कहते हैं, तो यह मज़बूती से अद्यतन नहीं हो सकता है, एक मैकबुक है और केवल ढक्कन खोलें और बंद करें। हालांकि, यह मेरे आईमैक के लिए अच्छा काम करता है कि मैं नियमित रूप से शट डाउन और स्टार्ट अप करता हूं। मुझे पता है अगर यह काम करता है!

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