Yanıtlar:
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
brew cask info
en yeni sürümü kontrol etkaynak: 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-upgrade
daha sonra olduğu gibi yerel olarak çalıştırabilirsiniz.
brew cask uninstall --force
Eski sürümün orada kalmasını istemiyorsanız, yeni sürümü kurmadan önce çalıştırmanız gerekir .
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
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 --all
fıçı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.
brew cask update
: Burada güncel anda sadece paketler yükseltmek için daha erken yanıt izleyin apple.stackexchange.com/a/231020/49601
Gönderen homebrew cask
belgeler :
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 zorlayabilirsinizbrew 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
brew upgrade --all
eşittir brew upgrade
. Fıçılar bu komutla yükseltilmez.
İş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)
}
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
brew cask
kullanı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 update
ilk önce olduğu gibi bir güncelleme yapmalısınız .
Bu beni gerçekten rahatsız etti, bu yüzden tüm Brew uygulamalarını güncellemek ve kullanıcının hangi Cask uygulamalarını güncelleyeceğini seçmesini sağlamak için bu betiği oluşturdum. Uygulamaları da dikkate almazsınız.
https://github.com/derrekyoung/ScriptsAndUtils/blob/master/brew-cask-upgrade.sh
@ Eduncan911'in Stack Overflow'taki meslektaşı sorusuna cevabını tavsiye ediyorum .
Kısacası:
brew-cask.sh
sadece 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.sh
upgrade 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
Böyle bir senaryoyu kendim yaptım. Lütfen github https://github.com/pesh1983/brew_cask_upgrade adresini ziyaret edin . Oldukça iyi bir açıklaması var, ancak başka bir sorunuz varsa, bana sormaya çekinmeyin. Adil yükseltme yapar: kaldırın ve kurun, bu nedenle gerekli tüm temizlik işlemleri 'brew' tarafından gerçekleştirilir.
Bu muhtemelen bir yorum olarak daha uygun olurdu, ama bir tanesini bırakacak kadar itibarım yok, bu yüzden ...
Bu yazı homebrew-cask
itibariyle, 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
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