क्या काढ़ा केक को अपग्रेड करने का कोई तरीका है


37

वहाँ सभी को उन्नत करने के लिए कोई रास्ता नहीं है brew cask? कुछ पसंद है brew cask upgrade?

जवाबों:


23

पैकेज अपग्रेड करने के लिए स्क्रिप्ट को बैश करें

पास्कल उत्तर से प्रेरित है

#!/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बाद में चला सकें


एक जादू की तरह काम किया। हालाँकि पहले आउट ऑफ़ डेट पैकेजों की सूची के लिए क्वेरी करना अच्छा होगा। ऐसा करने के लिए स्क्रिप्ट को ट्वीक करना काफी आसान है।
eduncan911

धन्यवाद! क्या आपने इसे सीधे Homebrew Cask में एकीकृत करने की कोशिश की है? मैंने इसे मछली में परिवर्तित किया और यह मेरे लिए भी काम करता है। यह भी मुझे पता चला कि कुछ पुराने संस्करण अभी भी मौजूद थे जब मैंने करंट लगाया था।
पास्कल

आपको दौड़ने की जरूरत है brew cask uninstall --forceयदि आप पुराने संस्करण को वहां नहीं रखना चाहते हैं, तो आपको नए संस्करण को स्थापित करने से पहले ।
पास्कल

@ पास्कल हाँ, मैंने देखा कि मेरे पास बहुत सारे पुराने संस्करण हैं, जिन्हें यहाँ भी ढेर किया गया है। जल्द ही मैं अनइंस्टॉल कमांड जोड़ूंगा।
Atais

@Atais अभी भी लगातार स्थापना आपके लिए काम करता है? कुछ पीक अब मेरी स्क्रिप्ट के साथ संस्करण संख्या के साथ एक खाली फ़ोल्डर छोड़ते हैं, जो संस्करण की जाँच के साथ गड़बड़ करता है।
पास्कल


19

homebrew-पीपा-अपग्रेड

मुझे लगता है कि पीपे को उन्नत करने के लिए यह अब तक का सबसे अच्छा उपाय है।
source: https://github.com/buo/homebrew-cask-upgrad

स्थापना और उपयोग

brew tap buo/cask-upgrade
brew update
brew cu

(वैकल्पिक) नवीनतम के रूप में चिह्नित लोगों सहित पुरानी ऐप्स को अपग्रेड करें:

brew cu --all

12

जैसा कि अन्य उत्तर में बोली कहती है, वर्तमान में सभी अपडेट किए गए पीक को अपग्रेड करने का कोई तरीका नहीं है।

उत्तर का दूसरा भाग गलत है, हालांकि: brew upgrade --all पीपों को अपग्रेड नहीं किया जा सकता है।

सभी पीक को अपग्रेड करने का एकमात्र तरीका यह है कि इंस्टॉल किए गए पीपे की एक सूची प्राप्त करें और उन्हें फिर से स्थापित करने के लिए मजबूर करें - जिनमें वे भी शामिल नहीं हैं जो बदल गए हैं!

में मछली , आपको लगता है कि इस तरह से कर सकता है:

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

संपादित करें:

Atais ने एक स्क्रिप्ट बनाई जो काम करती है: पैकेज को अपग्रेड करने के लिए बैश स्क्रिप्ट
कृपया इस एक के बजाय उसके जवाब को बढ़ाएँ।


1
ठीक है, मन है कि यह वास्तव में आपके सभी ऐप को फिर से इंस्टॉल करेगा, न कि केवल पुराने को अपडेट करें :(
Atais

1
पीपा लिस्टिंग को अपग्रेड करने के लिए, आपको brew cask updateपहले चल रहे रिस्पांस का अनुसरण करना चाहिए, केवल उन पैकेजों को अपग्रेड करने के लिए जो वर्तमान में पुराने हैं: Apple.stackexchange.com/a/231020/49601
Danijel-James W

@ Danijel-JamesW मैंने आपके परिवर्तन को वापस ले लिया क्योंकि यह गलत था। यह अन्य गोले में करने का तरीका हो सकता है, लेकिन यह मछली में नहीं है।
पास्कल

10

से homebrew caskप्रलेखन :

चूंकि homebrew-cask रिपॉजिटरी एक Homebrew टैप है, आप हर बार जब आप नियमित Homebrew कमांड जारी करते हैं तो आप नवीनतम Casks नीचे खींच लेंगे brew update। वर्तमान में, Homebrew-cask हमेशा पता नहीं लगा सकता है कि कोई एप्लिकेशन अपडेट किया गया है या नहीं। आप कमांड के माध्यम से अपडेट को बाध्य कर सकते हैं brew cask install --force। हम इसे सुधारने पर काम कर रहे हैं।

निम्नलिखित दोनों काढ़ा सूत्र और पीपों को अपग्रेड करने के लिए पर्याप्त होना चाहिए।

brew upgrade --all 

4
यह अब सच नहीं है। अब के brew upgrade --allबराबर है brew upgrade। उस कमांड के द्वारा काक्स को अपग्रेड नहीं किया जाता है।
२२:१४

6

यहाँ मैं अपने .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)
}

2

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पहले की तरह एक अपडेट भी चलाना चाहिए ।
डेनिजेल-जेम्स डब्ल्यू

@ Danijel-JamesW दुर्भाग्य से यदि आप पुराने संस्करण को नहीं रखना चाहते हैं।
पास्कल

1

यह वास्तव में मुझे परेशान कर रहा है इसलिए मैंने सभी ब्रू एप्स को अपडेट करने के लिए यह स्क्रिप्ट बनाई है और उपयोगकर्ता को यह चुनने की अनुमति देता है कि कौन सी कास्क्स एप्स को अपडेट करना है। आप ऐप्स को विचार से भी बाहर कर सकते हैं।

https://github.com/derrekyoung/ScriptsAndUtils/blob/master/brew-cask-upgrade.sh


1

मैं स्टैक ओवरफ्लो पर प्रतिपक्ष प्रश्न में @ 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

1

मैंने खुद से ऐसी स्क्रिप्ट बनाई। कृपया github https://github.com/pesh1983/brew_cask_upgrad को देखें । इसमें बहुत अच्छा वर्णन है, लेकिन अगर आपके पास कोई अतिरिक्त प्रश्न है, तो मुझसे पूछने के लिए स्वतंत्र महसूस करें। यह उचित उन्नयन करता है: स्थापना रद्द करें और स्थापित करें, इसलिए किसी भी आवश्यक सफाई को 'काढ़ा' द्वारा ही किया जाएगा।


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

यह अपठनीय है - यह भी स्पष्टीकरण की आवश्यकता है कि यह क्या करता है
user151019
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.