Homebrew'u otomatik güncelleme


13

şu anda Homebrew paket yöneticisini kullanıyorum ve sorum şu: yürütmek için bir bash betiği yazmak brew updateve sonunda brew upgradebir kabuk ilk kez açarken mümkün mü? Şu anda iTerm kullanıyorum.


Bunu ~/.bash_profiledosyada yapabilirsiniz. Yalnızca 1 Terminal oturumunun açık olup olmadığını kontrol etmeniz ve ardından çalıştırmanız gerekir brew update. Terminal pencerelerinin sayısını belirlemek için stackoverflow.com/questions/6172663/… adresini kontrol edin .
Mateusz Szlosek

Komut dosyası yürütüldüğünde açık olan terminal sayısı veya genel olarak açılan terminal sayısı nedir?
g_rmz

Komut dosyası çalıştırıldığında açılan Terminal sayısıdır (windows + sekmeler). ~/.bash_profileTerminal oturumunun başlangıcında otomatik olarak yürütülür. brew updateİlk başlangıçta çalıştırmanız gerekiyorsa bu kontrol gereklidir . Bu yeni pencere açıldığında her zaman çalıştırmak istiyorsanız, bu adımı atlayın ve çalıştırın brew updateiçinde ~/.bash_profile.
Mateusz Szlosek

Bir Terminal sekmesinin açılmasını çok yavaşlatacaktır
user151019

Tamam teşekkürler! :) Terminalin performansını çok düşürecek mi?
g_rmz

Yanıtlar:


20

Bunu yapmak çok kolay.

Verimlilik (ve serin faktör) için, Lingon gibi bir aracı , her bir kabuk başlattığınızda yerine launchctl / launchd kullanarak periyodik olarak bu komut dosyasını başlatmak için kullanırdım. MacBook'umda ikinci kez güncelleme (iş yapılmadı, DNS önbellek seti vb.) 3 saniye sürüyor ve ilk kez çalıştırmak (iş yapılmadı) 10 saniye veya bir paket gerekiyorsa 15+ saniye sürüyor indirilecek veya derlenecek.

Belki günde bir kez veya saatte bir - arka planda çalışmak o zamanlar yürütmek için yeterli olacaktır?

/usr/local/bin/brewupDemlemek için arama yapan ve sonuçları sistem günlüğüne kaydeden basit bir komut dosyası yapabilirsiniz

#!/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

Demlemek için çay yapmaya başladığımda ya da başlayıp arka planda çalışmasına izin verdiğimde demiyorum.

brewup &

2
+1 Terminal'in her başlangıcında çalışmak yerine tome çeşit launchclt kullanmanın daha iyi olduğunu kabul ediyorum. Ayrıca Terminalden bağımsızdır (iTerm kullanıcıları için).
Mateusz Szlosek

1
Bu harika, teşekkürler! :) Lingon yerine crontab'a ne dersin?
g_rmz

2
@g_rmz crontab ile ilgili bir sorun yok ve bunu bilmek kolay. Çalışıyorsa, onunla çalıştırın. Faydaları launchdüzerinde crondaha doğal daha fazla güç dostu, daha esnek, ve kolları uyku / cevapsız aralıkları olmasıdır.
bmike

Harika senaryoda teşekkürler. Sadece meraktan - -t seçeneği nedir?
avriis

1
Hey @dahved. tBayrağın kuru versiyonu için kaydedici için man sayfasına bakınız . Bu mesajları günlükler denizinde kolay grepveya logkomut ve yüklem / arama terimi ile bulabilmem için kullanıyorum .
bmike

7

Bunu sizin için yapacak homebrew-autoupdate adlı bir araç var. brew updatePaketleri kurmaya / yükseltmeye gittiğinizde her zaman taze homebrew verilerine sahip olduğunuzdan emin olmak için her 24 saatte bir (yapılandırılabilir) otomatik olarak arka planda çalışabilir .

Kurmak brew tap domt4/autoupdateve brew autoupdate --start 43200her 12 saatte bir (43200 saniye) otomatik güncelleme yapacak şekilde yapılandırmak için.


0

Homebrew'u başlangıçta güncellemeyi tercih ederim. İçinde bir script Update Homebrew.shvar ~/Library/Scripts:

#!/usr/local/bin/bash

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

Bu komut dosyası başlangıçta çalıştırılıyor launchd. Bunun için, var Update Homebrew.plistiçinde ~/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>

Bir MacBook'unuz varsa ve yalnızca kapağı açıp kapattığınızda güvenilir bir şekilde güncellenmeyebileceğini unutmayın. Ancak, düzenli olarak kapatıp açtığım iMac'ım için iyi çalışıyor. Çalışırsa beni bilgilendir!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.