자동 업데이트 Homebrew


13

나는 현재 브루 패키지 관리자를 사용하고 있는데 내 질문은 : possibile는 실행하기 위해 떠들썩한 파티의 스크립트를 작성하는 것입니다 brew update결국하고 brew upgrade처음으로 쉘을 열 때마다? 현재 iTerm을 사용하고 있습니다.


~/.bash_profile파일 에서이 작업을 수행 할 수 있습니다 . 터미널 세션이 하나만 열려 있는지 확인한 다음 실행해야 brew update합니다. 터미널 창의 수를 결정하려면 stackoverflow.com/questions/6172663/… 를 확인하십시오 .
Mateusz Szlosek

그것은 스크립트가 실행될 때 열린 터미널의 수 또는 일반적으로 열린 터미널의 수입니까?
g_rmz

스크립트가 실행될 때 열린 터미널 수 (창 + 탭)입니다. ~/.bash_profile터미널 세션 시작시 자동으로 실행됩니다. brew update처음 시작할 때 실행해야하는 경우이 점검이 필요합니다 . 새 창이 열릴 때마다 실행하려면이 단계를 건너 뛰고 brew update에서 실행하십시오 ~/.bash_profile.
Mateusz Szlosek

터미널 탭을 여는 속도가 매우 느려집니다
user151019

알았어 고마워! :) 터미널 성능이 매우 나빠질까요?
g_rmz

답변:


20

이것은 매우 쉽습니다.

효율성 (그리고 멋진 요소)을 위해 Lingon 과 같은 도구를 사용하여 쉘을 시작할 때마다 launchctl / launchd를 사용 하여이 스크립트를 주기적으로 시작합니다. MacBook에서 두 번째 업데이트 (작업 없음, DNS 캐시 세트 등)를 업데이트하는 데 3 초가 걸리고 처음으로 작업을 수행하는 데는 10 초가 걸리고 (작업이 완료되지 않은 경우) 패키지가 필요한 경우 15 초 이상 걸립니다. 다운로드하거나 컴파일해야합니다.

아마도 하루에 한 번 또는 한 시간에 한 번-백그라운드에서 실행하는 것이 충분할 때가 충분합니까?

/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

1
훌륭합니다, 감사합니다! :) Lingon 대신 crontab은 어떻습니까?
g_rmz

2
@g_rmz crontab에는 아무런 문제가 없으며 쉽게 알 수 있습니다. 작동하면 함께 실행하십시오. launchd오버 의 장점은 cron보다 탄력적이고 파워 친화적이며 수면 / 누락 간격을보다 자연스럽게 처리한다는 것입니다.
bmike

훌륭한 스크립트에 감사드립니다. 호기심에서 -t 옵션은 무엇입니까?
avriis

1
안녕 @dahved. 건식 버전의 t플래그에 대해서는 로거 매뉴얼 페이지를 참조하십시오 . 나는 그것을 사용하여 쉽게 grep또는 log명령 및 술어 / 검색어 로 로그 바다에서 이러한 메시지를 찾을 수 있습니다 .
bmike

6

homebrew-autoupdate 라는 도구 가 있습니다. brew update패키지를 설치 / 업그레이드 할 때 항상 새로운 홈 브루 데이터를 갖도록 24 시간마다 (구성 가능) 백그라운드에서 자동으로 실행될 수 있습니다 .

그것을 실행 설치 brew tap domt4/autoupdate하고 brew autoupdate --start 43200는 매 12 시간마다 (4만3천2백초)를 자동으로 업데이트하도록 구성 할 수 있습니다.


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>

예를 들어 MacBook을 사용하고 뚜껑을 열었다 닫으면 안정적으로 업데이트되지 않을 수 있습니다. 그러나, iMac에서는 정기적으로 종료하고 시동하는 것이 좋습니다. 작동하는지 알려주세요!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.