जवाबों:
पास्कल उत्तर से प्रेरित है
#!/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 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-upgrade
, ताकि आप इसे स्थानीय रूप से cask-upgrade
बाद में चला सकें
brew cask uninstall --force
यदि आप पुराने संस्करण को वहां नहीं रखना चाहते हैं, तो आपको नए संस्करण को स्थापित करने से पहले ।
मुझे लगता है कि पीपे को उन्नत करने के लिए यह अब तक का सबसे अच्छा उपाय है।
source: https://github.com/buo/homebrew-cask-upgrad
स्थापना और उपयोग
brew tap buo/cask-upgrade
brew update
brew cu
(वैकल्पिक) नवीनतम के रूप में चिह्नित लोगों सहित पुरानी ऐप्स को अपग्रेड करें:
brew cu --all
जैसा कि अन्य उत्तर में बोली कहती है, वर्तमान में सभी अपडेट किए गए पीक को अपग्रेड करने का कोई तरीका नहीं है।
उत्तर का दूसरा भाग गलत है, हालांकि: brew upgrade --all
पीपों को अपग्रेड नहीं किया जा सकता है।
सभी पीक को अपग्रेड करने का एकमात्र तरीका यह है कि इंस्टॉल किए गए पीपे की एक सूची प्राप्त करें और उन्हें फिर से स्थापित करने के लिए मजबूर करें - जिनमें वे भी शामिल नहीं हैं जो बदल गए हैं!
में मछली , आपको लगता है कि इस तरह से कर सकता है:
for app in (brew cask list)
brew cask install --force $app
end
संपादित करें:
Atais ने एक स्क्रिप्ट बनाई जो काम करती है: पैकेज को अपग्रेड करने के लिए बैश स्क्रिप्ट ।
कृपया इस एक के बजाय उसके जवाब को बढ़ाएँ।
brew cask update
पहले चल रहे रिस्पांस का अनुसरण करना चाहिए, केवल उन पैकेजों को अपग्रेड करने के लिए जो वर्तमान में पुराने हैं: Apple.stackexchange.com/a/231020/49601
से homebrew cask
प्रलेखन :
चूंकि homebrew-cask रिपॉजिटरी एक Homebrew टैप है, आप हर बार जब आप नियमित Homebrew कमांड जारी करते हैं तो आप नवीनतम Casks नीचे खींच लेंगे
brew update
। वर्तमान में, Homebrew-cask हमेशा पता नहीं लगा सकता है कि कोई एप्लिकेशन अपडेट किया गया है या नहीं। आप कमांड के माध्यम से अपडेट को बाध्य कर सकते हैंbrew cask install --force
। हम इसे सुधारने पर काम कर रहे हैं।
निम्नलिखित दोनों काढ़ा सूत्र और पीपों को अपग्रेड करने के लिए पर्याप्त होना चाहिए।
brew upgrade --all
brew upgrade --all
बराबर है brew upgrade
। उस कमांड के द्वारा काक्स को अपग्रेड नहीं किया जाता है।
यहाँ मैं अपने .bash_profile में क्या है कि मैं homebrew का एक पूर्ण उन्नयन पास करने के लिए चलाते हैं। मैं हर अपडेट के लिए बार-बार प्राप्त होने से विशाल डाउनलोड को रखने के लिए कुछ आइटम "पिन" करता हूं, क्योंकि उनके संस्करण हमेशा "नवीनतम" होते हैं या उन्हें अपग्रेड नहीं किया जाना चाहिए।
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)
}
Zsh में काढ़ा क्षुधा को पुनर्स्थापित करने के लिए:
brew cask update;
for app in $(brew cask list); do
brew cask uninstall --force ${app}
brew cask install --force ${app}
done
brew cask
इंस्टॉलेशन हो सकते हैं जिनके लिए उपयोगकर्ता इनपुट की आवश्यकता होती है (जैसे - क्वार्ट्ज) । साथ ही, इसे दोबारा इंस्टॉल करने से पहले हर एप्लिकेशन को अनइंस्टॉल करना जरूरी नहीं है। आदर्श रूप में आपको brew cask update
पहले की तरह एक अपडेट भी चलाना चाहिए ।
यह वास्तव में मुझे परेशान कर रहा है इसलिए मैंने सभी ब्रू एप्स को अपडेट करने के लिए यह स्क्रिप्ट बनाई है और उपयोगकर्ता को यह चुनने की अनुमति देता है कि कौन सी कास्क्स एप्स को अपडेट करना है। आप ऐप्स को विचार से भी बाहर कर सकते हैं।
https://github.com/derrekyoung/ScriptsAndUtils/blob/master/brew-cask-upgrade.sh
मैं स्टैक ओवरफ्लो पर प्रतिपक्ष प्रश्न में @ eduncan911 का उत्तर देता हूं ।
संक्षेप में:
brew-cask.sh
बस Homebrew के समान एक आउटपुट को सूचीबद्ध करता है brew update
। ऊपर दी गई सूची हरे रंग के साथ स्थापित सभी पैकेजों को दिखाती है✔
का कोई भी अपडेट लंबित है।brew-cask.sh
अपग्रेड उन पैकेजों के उन्नयन के लिए मजबूर करेगा।उसके रेपो से स्थापित करें:
$ 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
मैंने खुद से ऐसी स्क्रिप्ट बनाई। कृपया github https://github.com/pesh1983/brew_cask_upgrad को देखें । इसमें बहुत अच्छा वर्णन है, लेकिन अगर आपके पास कोई अतिरिक्त प्रश्न है, तो मुझसे पूछने के लिए स्वतंत्र महसूस करें। यह उचित उन्नयन करता है: स्थापना रद्द करें और स्थापित करें, इसलिए किसी भी आवश्यक सफाई को 'काढ़ा' द्वारा ही किया जाएगा।
यह शायद एक टिप्पणी के रूप में अधिक उपयुक्त होगा, लेकिन मेरे पास एक को छोड़ने के लिए पर्याप्त प्रतिष्ठा नहीं है, इसलिए ...
इस लेखन के रूप में, homebrew-cask
इसकी अपनी अपग्रेड प्रणाली है, और इसलिए तृतीय-पक्ष स्क्रिप्ट और टूल की आवश्यकता नहीं है।
पुराने पीपों को सूचीबद्ध करने के लिए: brew cask outdated
सभी पुराने पीपों को अपग्रेड करने के लिए: 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