Homebrewの自動更新


13

私は現在Homebrewパッケージマネージャーを使用していますが、私の質問は、実行するために、brew updateそして最終的brew upgradeには初めてシェルを開くたびに、bashのスクリプトを書くことは可能ですか?現在iTermを使用しています。


これは~/.bash_profileファイルで行うことができます。ターミナルセッションが1つだけ開いているかどうかを確認して、を実行する必要がありますbrew update。ターミナルウィンドウの数を確認するには、stackoverflow.com / questions / 6172663 /…を確認してください。
Mateusz Szlosek 2015

それは、スクリプトの実行時に開いている端末の数ですか、それとも一般に開いている端末の数ですか?
g_rmz

これは、スクリプトの実行時に開かれたターミナル(ウィンドウ+タブ)の数です。~/.bash_profileターミナルセッションの開始時に自動的に実行されます。このチェックはbrew update、最初の起動時に実行する必要がある場合に必要です。新しいウィンドウが開くたびにこれを実行する場合は、この手順をスキップしてで実行brew update~/.bash_profileます。
Mateusz Szlosek 2015

ターミナルタブを開くのが非常に遅くなります
user151019

ありがとうございます!:)それは端末のパフォーマンスを非常に悪くしますか?
g_rmz

回答:


20

これはとても簡単です。

効率(およびクールな要素)のために、私はLingonのようなツールを使用して、シェルを起動するたびにではなく、launchctl / launchdを使用してこのスクリプトを定期的に起動します。私のMacBookでは、2回目の更新(作業なし、DNSキャッシュセットなど)に3秒かかり、最初の実行(作業なし)に10秒かかります。パッケージが必要な場合は15秒以上かかりますダウンロードまたはコンパイルされます。

おそらく、1日1回または1時間に1回-バックグラウンドで実行すれば、実行時間は十分でしょうか?

/usr/local/bin/brewupbrewを順番に呼び出し、結果をシステムログに記録する簡単なスクリプトを作成できます

#!/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ターミナルを起動するたびに実行するのではなく、tomeのlaunchcltを使用する方がよいことに同意します。さらに、ターミナルに依存しません(iTermユーザーの場合)。
Mateusz Szlosek 2015

1
これは素晴らしいです、ありがとう!:) Lingonの代わりにcrontabはどうですか?
g_rmz

2
@g_rmz crontabに問題はなく、簡単に知ることができます。機能する場合は、それを実行します。launchd以上の利点は、cronより弾力性があり、よりパワーフレンドリーであり、睡眠/逃した間隔をより自然に処理できることです。
bmike

素晴らしいスクリプトをありがとう。ちょうど好奇心から--tオプションとは何ですか?
avriis

1
@dahvedさん、こんにちは。tフラグのドライバージョンについては、ロガーのマニュアルページを参照してください。私はそれを使用して、簡単な、grepまたはlogコマンドと述語/検索用語でログの海でこれらのメッセージを見つけることができます。
bmike

5

これを行うhomebrew-autoupdateというツールがあります。これはbrew update、24時間ごとにバックグラウンドで自動的に実行でき(構成可能)、パッケージのインストール/アップグレード時に常に新鮮な自家製データが得られるようにします。

インストールして実行しbrew tap domt4/autoupdatebrew autoupdate --start 4320012時間(43200秒)ごとに自動更新するように構成します。


0

起動時にHomebrewを更新することを好みます。私は、スクリプトを持っているbrew-update.sh~/Applications

for cmd in update upgrade cleanup; do
  brew $cmd
done

このスクリプトは、起動時にを使用して実行されlaunchdます。そのために、私は持っbrew-update.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>brew-update</string>
        <key>ProgramArguments</key>
        <array>
            <string>/Users/Username/Applications/brew-update.sh</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
    </dict>
</plist>

たとえば、MacBookをお持ちで、蓋を開閉するだけの場合、確実に更新されない場合があります。しかし、私が定期的にシャットダウンして起動することは、私のiMacにはうまく機能します。うまくいくかどうか教えてください!

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