Odpowiedzi:
zainspirowany odpowiedzią Pascala
#!/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
Co to robi
brew cask info
najnowszą wersjęźródło: https://gist.github.com/atais/9c72e469b1cbec35c7c430ce03de2a6b
jedna wkładka dla niecierpliwych:
curl -s https://gist.githubusercontent.com/atais/9c72e469b1cbec35c7c430ce03de2a6b/raw/36808a0544628398f26b48f7a3c7b309872ca2c6/cask_upgrade.sh | bash /dev/stdin
zapisz jako /usr/local/bin/cask-upgrade
, abyś mógł uruchomić go lokalnie jako cask-upgrade
później
brew cask uninstall --force
przed zainstalowaniem nowej wersji, jeśli nie chcesz, aby starsza wersja pozostała.
Myślę, że jest to zdecydowanie najlepsze rozwiązanie do ulepszenia beczek.
źródło: https://github.com/buo/homebrew-cask-upgrade
Instalacja i użytkowanie
brew tap buo/cask-upgrade
brew update
brew cu
(Opcjonalnie) Wymuś aktualizację nieaktualnych aplikacji, w tym tych oznaczonych jako najnowsze:
brew cu --all
Jak mówi cytat z drugiej odpowiedzi, obecnie nie ma możliwości uaktualnienia wszystkich zaktualizowanych beczek.
Druga część odpowiedzi jest błędna: brew upgrade --all
nie można ulepszyć beczek.
Jedynym sposobem na uaktualnienie wszystkich beczek jest uzyskanie listy zainstalowanych beczek i wymuszenie ich ponownej instalacji - w tym tych, które się nie zmieniły!
W przypadku ryb możesz to zrobić w następujący sposób:
for app in (brew cask list)
brew cask install --force $app
end
edytować:
Atais utworzył skrypt, który działa: Skrypt Bash do aktualizacji pakietów .
Proszę głosować raczej na jego odpowiedź niż na tę.
brew cask update
a następnie postępować zgodnie z wcześniejszą odpowiedzią, aby zaktualizować tylko te pakiety, które są obecnie nieaktualne tutaj: apple.stackexchange.com/a/231020/49601
Ponieważ repozytorium homebrew-beczki jest Homebrew Tap, będziesz pobierać najnowsze Beczki za każdym razem, gdy wydasz zwykłe polecenie Homebrew
brew update
. Obecnie homebrew-cask nie zawsze może wykryć, czy aplikacja została zaktualizowana. Możesz wymusić aktualizację za pomocą poleceniabrew cask install --force
. Pracujemy nad poprawą tego.
Poniższe elementy powinny wystarczyć do uaktualnienia zarówno formuł parzenia, jak i beczek.
brew upgrade --all
brew upgrade --all
jest równoważne z brew upgrade
teraz. Beczki nie są ulepszane przez to polecenie.
Oto, co mam w moim .bash_profile, który uruchamiam, aby wykonać pełną aktualizację homebrew. „Przypinam” kilka elementów, aby uniemożliwić wielokrotne pobieranie gigantycznych pobrań dla każdej aktualizacji, ponieważ ich wersje są zawsze „najnowsze” lub nie należy ich aktualizować.
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)
}
Aby ponownie zainstalować aplikacje Brew Cask w Zsh:
brew cask update;
for app in $(brew cask list); do
brew cask uninstall --force ${app}
brew cask install --force ${app}
done
brew cask
instalacji wymagających wkładu użytkownika (np. - kwarc) . Ponadto nie trzeba odinstalowywać każdej aplikacji przed jej ponowną instalacją. Idealnie powinieneś również uruchomić aktualizację jak brew cask update
pierwsza.
To mnie naprawdę zirytowało, więc stworzyłem ten skrypt, aby zaktualizować wszystkie aplikacje Brew i pozwolić użytkownikowi wybrać, które aplikacje Cask mają zostać zaktualizowane. Możesz również wykluczyć aplikacje z rozpatrzenia.
https://github.com/derrekyoung/ScriptsAndUtils/blob/master/brew-cask-upgrade.sh
Polecam odpowiedź @ eduncan911 w odpowiedzi na pytanie dotyczące przepełnienia stosu .
W skrócie:
brew-cask.sh
po prostu wyświetla dane wyjściowe podobne do Homebrew brew update
. powyższa lista pokazuje wszystkie zainstalowane pakiety, a zielony ✔
oznacza wszelkie oczekujące aktualizacje.brew-cask.sh
Aktualizacja $ wymusi aktualizację tych pakietów.Zainstaluj z jego repozytorium za pomocą:
$ 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
Następnie użyj go w następujący sposób:
$ brew-cask.sh
$ brew-cask.sh upgrade
Sam stworzyłem taki skrypt. Proszę spojrzeć na github https://github.com/pesh1983/brew_cask_upgrade . Ma dość dobry opis, ale jeśli masz jakieś dodatkowe pytanie, zadaj mi pytanie. Dokonuje sprawiedliwego uaktualnienia: odinstaluj i zainstaluj, więc każde niezbędne czyszczenie zostanie wykonane przez sam program „brew”.
Byłoby to prawdopodobnie bardziej odpowiednie jako komentarz, ale nie mam wystarczającej reputacji, aby je zostawić, więc ...
W chwili pisania tego tekstu homebrew-cask
ma własny system aktualizacji, w związku z czym skrypty i narzędzia innych firm nie są już wymagane.
Aby wyświetlić listę nieaktualnych beczek: brew cask outdated
Aby zaktualizować wszystkie nieaktualne beczki: 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