Demlemek fıçı yükseltmek için herhangi bir yolu var mı


37

Tüm brew casks yükseltmek için herhangi bir yolu var mı ? Gibi bir şey brew cask upgrade?

Yanıtlar:


23

Paketleri yükseltmek için Bash betiği

Pascal cevabından ilham alındı

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

Bu ne yapar

  • demlemek / demlemek fıçı güncelleme, temizleme
  • fıçılar listesini oku
  • brew cask infoen yeni sürümü kontrol et
  • varsa yeni sürümü yükle (ve tüm eski sürümleri kaldırır!)

kaynak: https://gist.github.com/atais/9c72e469b1cbec35c7c430ce03de2a6b

sabırsız için bir astar:

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

kaydet /usr/local/bin/cask-upgrade , böylece cask-upgradedaha sonra olduğu gibi yerel olarak çalıştırabilirsiniz.


Bir cazibe gibi çalıştı. Yine de ilk önce eski paketlerin listesini sorgulamak iyi olur. Senaryoyu yapmak için ince ayar yapmak kolaydır.
eduncan911

Teşekkür ederim! Bunu doğrudan Homebrew Cask'a entegre etmeye çalıştınız mı? Sadece balığa dönüştürdüm ve benim için de işe yarıyor. Ayrıca şimdikileri kurduktan sonra bazı eski sürümlerin hala mevcut olduğunu da ortaya çıkardı.
Pascal,

brew cask uninstall --forceEski sürümün orada kalmasını istemiyorsanız, yeni sürümü kurmadan önce çalıştırmanız gerekir .
Pascal,

@Pascal evet, burada da yığılmış çok sayıda eski sürüm bulunduğunu fark ettim. Yakında uninstall komutu ekleyeceğim.
Atais

@Atais, sökme işlemi sizin için sürekli çalışıyor mu? Bazı fıçılar şimdi betiğimde sürüm numarasıyla birlikte sürüm denetlemeyle uğraşan boş bir klasör bırakıyor.
Pascal,


19

homebrewleri-fıçısı yükseltme

Bence bu fıçıları yükseltmek için en iyi çözüm.
kaynak: https://github.com/buo/homebrew-cask-upgrade

Kurulum ve kullanım

brew tap buo/cask-upgrade
brew update
brew cu

(İsteğe bağlı) En son olarak işaretlenenler dahil olmak üzere eski uygulamaları yükseltmeye zorla:

brew cu --all

12

Diğer cevabın alıntılarında da belirtildiği gibi, şu anda tüm güncellenen fıçıları yükseltmenin bir yolu yoktur.

Cevabın ikinci kısmı yanlış olsa da: brew upgrade --allfıçıları yükseltemiyor.

Tüm fıçıları yükseltmenin tek yolu, kurulu fıçıların bir listesini almak ve onları yeniden değiştirmeye zorlamaktır - değişmeyenler de dahil!

In balık , böyle bunu yapabilir:

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

Düzenle:

Atais çalışan bir komut dosyası yarattı: paketleri geliştirmek için Bash komut dosyası .
Lütfen bunun yerine cevabını yükselt.


1
Eh, aslında tüm uygulamalarınızı yeniden
yükleyeceğini

1
Fıçısı listeleri yükseltmek için çalışmalıdır brew cask update: Burada güncel anda sadece paketler yükseltmek için daha erken yanıt izleyin apple.stackexchange.com/a/231020/49601
Danijel-James W

@ Danijel-JamesW Değişikliğinizi geri aldım çünkü bu hatalıydı. Başka kabuklarda yapmanın yolu olabilir, ama balıkta değil.
Pascal

10

Gönderen homebrew caskbelgeler :

Homebrew-cask deposu bir Homebrew Tap olduğundan, normal Homebrew komutunu her verdiğinizde en son Casks'leri çıkarırsınız brew update. Şu anda, homebrew-fıçı bir Uygulamanın güncellendiğini her zaman tespit edemez. Komut aracılığıyla bir güncellemeyi zorlayabilirsiniz brew cask install --force. Bunu geliştirmek için çalışıyoruz.

Hem demleme formüllerini hem de fıçıları yükseltmek için aşağıdakiler yeterli olacaktır.

brew upgrade --all 

4
Bu artık doğru değil. şimdi brew upgrade --alleşittir brew upgrade. Fıçılar bu komutla yükseltilmez.
proski

6

İşte benim .bash_profile dosyamda, tam bir yükseltme kartı çalıştırmak için koştum. Sürümlerini her zaman "en son" olduğundan veya yükseltilmemeleri gerektiğinden, devasa yüklemelerin her güncelleme için sürekli olarak alınmasını önlemek için birkaç öğeyi "sabitlüyorum".

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 fıçı uygulamalarını zsh'de yeniden yüklemek için:

brew cask update;

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

Bu, brew caskkullanıcı girişi gerektiren çok sayıda kurulum yapabilen kullanıcılar için iyi değildir (örn. - kuvars) . Ayrıca, yeniden yüklemeden önce her uygulamayı kaldırmanız gerekmez. İdeal olarak, brew cask updateilk önce olduğu gibi bir güncelleme yapmalısınız .
Danijel-James W

@ Danijel-JamesW Ne yazık ki eski sürümün kalmasını istemiyorsanız.
Pascal,


1

@ Eduncan911'in Stack Overflow'taki meslektaşı sorusuna cevabını tavsiye ediyorum .

Kısacası:

  • $ brew-cask.shsadece Homebrew's'e benzer bir çıktı listeler brew update. Yukarıdaki listede, kurulu tüm paketleri ve bekleyen güncellemeleri gösteren yeşil bir renk gösterilir .
  • $ brew-cask.shupgrade bu paketlerin güncellemesini zorlar.

Onun deposundan yükleyin:

$ 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

Öyleyse şöyle kullan:

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


1

Bu muhtemelen bir yorum olarak daha uygun olurdu, ama bir tanesini bırakacak kadar itibarım yok, bu yüzden ...

Bu yazı homebrew-caskitibariyle, kendi yükseltme sistemine sahiptir ve bu nedenle üçüncü taraf komut dosyaları ve araçları artık gerekli değildir.

Eski fıçıları listelemek için: brew cask outdated

Tüm eski fıçıları yükseltmek için: 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

Bu okunamıyor - ayrıca ne yaptığını da açıklaması gerekiyor
user151019
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.