醸造キャスクをアップグレードする方法はありますか


37

すべてをアップグレードする方法はありますbrew caskか?のようなものbrew cask upgrade

回答:


23

パッケージをアップグレードするためのBashスクリプト

パスカルの答えに触発

#!/usr/bin/env bash

(set -x; brew update;)

(set -x; brew cleanup;)
(set -x; brew cask cleanup;)

red=`tput setaf 1`
green=`tput setaf 2`
reset=`tput sgr0`

casks=( $(brew cask list) )

for cask in ${casks[@]}
do
    version=$(brew cask info $cask | sed -n "s/$cask:\ \(.*\)/\1/p")
    installed=$(find "/usr/local/Caskroom/$cask" -type d -maxdepth 1 -maxdepth 1 -name "$version")

    if [[ -z $installed ]]; then
        echo "${red}${cask}${reset} requires ${red}update${reset}."
        (set -x; brew cask uninstall $cask --force;)
        (set -x; brew cask install $cask --force;)
    else
        echo "${red}${cask}${reset} is ${green}up-to-date${reset}."
    fi
done

何をする

  • brew / brew caskの更新、クリーンアップ
  • 樽のリストを読む
  • brew cask info最新バージョンを確認してください
  • 利用可能な場合、新しいバージョンをインストールします(すべての古いバージョンを削除します!)

ソース: https : //gist.github.com/atais/9c72e469b1cbec35c7c430ce03de2a6b

せっかちな人のためのライナー:

curl -s https://gist.githubusercontent.com/atais/9c72e469b1cbec35c7c430ce03de2a6b/raw/36808a0544628398f26b48f7a3c7b309872ca2c6/cask_upgrade.sh | bash /dev/stdin

として保存し /usr/local/bin/cask-upgradecask-upgrade後でローカルで実行できるようにします


魅力のように働いた。ただし、最初に古いパッケージのリストを最初に照会するといいでしょう。スクリプトを微調整するだけで簡単に実行できます。
eduncan911

ありがとうございました!これをHomebrew Caskに直接統合しようとしましたか?私はそれを魚に変換しただけで、それも私のために機能します。また、現在のバージョンをインストールした後でも、いくつかの古いバージョンがまだ存在していることがわかりました。
パスカル

brew cask uninstall --force古いバージョンをそこに残したくない場合は、新しいバージョンをインストールする前に実行する必要があります。
パスカル

@Pascalええ、古いバージョンもたくさんあることに気づきました。すぐにアンインストールコマンドを追加します。
アタイス

@Ataisは、アンインストールが引き続き一貫して機能しますか?いくつかの樽は、バージョン番号を含む空のフォルダーをスクリプトに残しますが、バージョンチェックが台無しになります。
パスカル


19

homebrew-cask-upgrade

これは、キャスクをアップグレードするための最善のソリューションだと思います。
ソース: https : //github.com/buo/homebrew-cask-upgrade

インストールと使用

brew tap buo/cask-upgrade
brew update
brew cu

(オプション)最新としてマークされたものを含む古いアプリを強制的にアップグレードします。

brew cu --all

12

他の回答の引用にあるように、現在、更新されたすべての樽をアップグレードする方法はありません。

答えの2番目の部分は間違ってbrew upgrade --allいますが、キャスクをアップグレードできません。

すべてのキャスクをアップグレードする唯一の方法は、インストールされているキャスクのリストを取得し、変更されていないキャスクを含めて強制的に再インストールすることです!

では、魚、あなたはこのようにそれを行うことができます:

for app in (brew cask list)
    brew cask install --force $app
end

編集:

Ataisは、機能するスクリプトを作成しました。パッケージをアップグレードするBashスクリプトです。
これよりも彼の答えを支持してください。


1
さて、それは実際にはすべてのアプリを再インストールするだけでなく、古いものを更新することに
注意してください:

1
キャスクリストをアップグレードするには、実行する必要がありますbrew cask update。ここでは、日付のうち、現在のパッケージのみアップグレードするために、以前の応答に続く、その後apple.stackexchange.com/a/231020/49601
Danijel -ジェームズ・W

@ Danijel-JamesW間違っていたので、変更を元に戻しました。それは他のシェルでそれを行う方法かもしれませんが、それは魚ではありません。
パスカル

10

homebrew caskドキュメントから:

homebrew-caskリポジトリはHomebrew Tapであるため、通常のHomebrewコマンドを発行するたびに最新のCasksをプルダウンします brew update。現在、homebrew-caskは、アプリケーションが更新されたかどうかを常に検出できるわけではありません。コマンドを使用して強制的に更新でき brew cask install --forceます。この改善に取り組んでいます。

抽出式とキャスクの両方をアップグレードするには、次のもので十分です。

brew upgrade --all 

4
これはもう事実ではありません。今brew upgrade --allと同等brew upgradeです。キャスクはそのコマンドではアップグレードされません。
プロスキー

6

これは、homebrewの完全なアップグレードパスを実行するために実行する.bash_profileにあるものです。バージョンが常に「最新」であるか、アップグレードする必要がないため、更新ごとに巨大なダウンロードが繰り返し取得されるのを防ぐために、いくつかのアイテムを「固定」します。

boop() {
  brew update && brew upgrade && brew cleanup \
    && cask-upgrade && cask-retire && brew cask cleanup \
      && brew doctor && brew cask doctor
}

__is_pinned() {
  local pinned=";pixate-studio;sketchup;skype;"
  [[ *";${1};"* != "${pinned}" ]] && return 0 || return 1
}

cask-upgrade() {
  while read -r; do
    reply=(${REPLY})
    name="${reply[0]}"
    vers="${reply[1]}"
    if ! __is_pinned "${name}"; then
      if [[ "${vers}" == "latest" ]]; then
        brew cask install "${name}" --force
      else
        brew cask install "${name}" 2> >(grep -v "re-install")
      fi
    fi
  done < <(brew cask list --versions)
}

cask-retire() {
  room="/opt/homebrew-cask/Caskroom"
  while read -r; do
    reply=(${REPLY})
    name="${reply[0]}"
    vers="${reply[1]}"
    if ! __is_pinned "${name}"; then
      for inst in $(ls "${room}/${name}"); do
        if [[ "${inst}" != "${vers}" ]]; then
          echo "Removing ${name} version ${inst}"
          rm -r "${room}/${name}/${inst}"
        fi
      done
    fi
  done < <(brew cask list --versions)
}

2

brew caskアプリをzshに再インストールするには:

brew cask update;

for app in $(brew cask list); do
    brew cask uninstall --force ${app}
    brew cask install --force ${app}    
done

これはbrew cask、ユーザー入力を必要とする多くのインストール(たとえば、-quartz)を持っている可能性のあるユーザーにはあまり適していません。また、再インストールする前にすべてのアプリケーションをアンインストールする必要はありません。理想的には、brew cask update最初のようなアップデートも実行する必要があります。
ダニエルジェームズW

@ Danijel-JamesW残念ながら、古いバージョンを残したくない場合です。
パスカル


1

Stack Overflowの対応する質問で@ eduncan911の回答をお勧めします。

要するに:

  • $ brew-cask.shはHomebrewのような出力をリストするだけbrew updateです。上記のリストには、インストールされているすべてのパッケージが表示され、保留中の更新は緑色で示されます。
  • $ brew-cask.shupgradeは、これらのパッケージのアップグレードを強制します。

彼のリポジトリからインストールします:

$ curl -L https://raw.githubusercontent.com/eduncan911/dotfiles/master/bin/brew-cask.sh --create-dirs -o ~/bin/brew-cask.sh
$ chmod 755 ~/bin/brew-cask.sh

次に、次のように使用します。

$ brew-cask.sh
$ brew-cask.sh upgrade

1

私は自分でそのような台本を作りました。github https://github.com/pesh1983/brew_cask_upgradeをご覧ください。説明はかなり充実していますが、さらに質問がある場合は、お気軽にお問い合わせください。それは公平なアップグレードを行います:アンインストールとインストール。したがって、必要なクリーンアップは「brew」自体によって実行されます。


1

これはおそらくコメントとしてはより適切ですが、コメントを残すほどの評判はないので...

この記事の執筆時点でhomebrew-caskは、独自のアップグレードシステムがあるため、サードパーティのスクリプトとツールは必要ありません。

古くなった樽をリストするには: brew cask outdated

すべての古い樽をアップグレードするには: brew cask upgrade


0
for app in $(brew cask list); do
    cver="$(brew cask info "${app}" | head -n 1 | cut -d " " -f 2)"
    ivers=$(ls -1 "/opt/homebrew-cask/Caskroom/${app}/.metadata/" | tr '\n' ' ' | sed -e 's/ $//')
    aivers=(${ivers})
    nvers=$(echo ${#aivers[@]})
    echo "[*] Found ${app} in cask list. Latest available version is ${cver}. You have installed version(s): ${overs}"
    if [[ ${nvers} -eq 1 ]]; then
        echo "${ivers}" | grep -q "^${cver}$" && { echo "[*] Latest version already installed :) Skipping changes ..."
        continue; }
    fi
    echo "[+] Fixing from ${ivers} to ${cver} ..."
    brew cask uninstall "${app}" --force
    brew cask install "${app}"
done

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