হোমব্রিউ প্যাকেজ ইনস্টল করা আছে কিনা তা সনাক্ত করুন


104

সিস্টেমে বেশ কয়েকটি হোমব্রিউ প্যাকেজ ইনস্টল করা আছে কিনা তা সনাক্ত করতে আমি শেল স্ক্রিপ্ট লিখতে চলেছি। এটি অর্জনের জন্য কি কোনও ব্রিউ কমান্ড ব্যবহার করার উপায় আছে?

আমি প্রস্থান কোড ব্যবহার করার চেষ্টা করেছি brew install <formula> --dry-run। এটি অনুপস্থিত থাকলে এটি প্যাকেজটি তৈরি করে।


brew --cellar "$formula" >/dev/null 2>&1 --cellar formula: Display the location in the cellar where formula would be installed, without any sort of versioned directory as the last path. ব্রিউ ম্যান পেজ ; এটি উত্তর হিসাবে দিতে পছন্দ করত
166_MMX

if [ ! -x "$(command -v PKG_EXEC)" ]; then # package not installed fi
জব্লালিন

উত্তর:


164

তুমি ব্যবহার করতে পার

brew ls --versions myformula

সম্পর্কিত সূত্রের ইনস্টলড সংস্করণগুলি আউটপুট দিতে। সূত্রটি ইনস্টল না করা থাকলে আউটপুট খালি থাকবে।

হোমব্রিউয়ের সাম্প্রতিক সংস্করণগুলি ব্যবহার করার সময়, যা আপনি পেতে পারেন brew update, আপনি কেবল এটি চালাতে পারেন (ধন্যবাদ স্লেভেন):

if brew ls --versions myformula > /dev/null; then
  # The package is installed
else
  # The package is not installed
fi

এটি বলেছিল, কেবলমাত্র সম্পর্কিত হোমব্রিউ প্যাকেজটি পরীক্ষা করা নয় (উদাহরণস্বরূপ এক্সিকিউটিভের সন্ধান করে $PATH) কেবলমাত্র সরঞ্জামটির অস্তিত্বের জন্য যাচাই করা ভাল ধারণা । লোকেরা বাস্তবে পরিবর্তে বৃহত পরিমাণে সরঞ্জামগুলি ইনস্টল করার প্রবণতা পোষণ করে, হোমব্রু কেবল সেগুলির মধ্যে একটি।


6
Github.com/Homebrew/brew/commit/… যেহেতু প্রস্থান কোডটি পরীক্ষা করা যথেষ্ট: সূত্রটি ইনস্টল না করা থাকলে মিথ্যা (1) ফিরিয়ে দেওয়া হয়।
স্ল্যাভেন রেজিক

সুতরাং আমি যদি চালানো if macchanger --help > /dev/null; then, চেক macchangerইনস্টল করা আছে কিনা ?
বেনামী

@ কিগানকুহান যদি এটি সফল হয় তবে macchangerতা বর্তমান শেলের মধ্যে রয়েছে $PATH। যদি এটি ব্যর্থ হয় তবে তা হয় PATH তে উপলব্ধ নয় বা ইনস্টলড নেই।
হোলগার ঠিক

2
@ কিগান কুহান - আপনি যদি সত্যিই কেবল কোনও অ্যাপ্লিকেশন প্যাথ-এ আছেন কিনা তা পরীক্ষা করতে চান (এটি চালিয়ে না দিয়ে), আপনি এটি ব্যবহার করতে পারেন which -s-sবিকল্প (নীরব) নথিভুক্ত করা হিসাবে "-s কোন আউটপুট, শুধু আসতে 0 যদি এক্সেকিউটেবল কোন পাওয়া যায়, অথবা 1 যদি কিছুই না থাকে পাওয়া যায়।" যথাযথ ব্যবহার হ'ল এমন কিছুwhich macchanger || echo "macchanger not on PATH"
জেফ্রি আগুইলেরা

7

কি সম্পর্কে?

for pkg in macvim ngrep other needed packages; do
    if brew list -1 | grep -q "^${pkg}\$"; then
        echo "Package '$pkg' is installed"
    else
        echo "Package '$pkg' is not installed"
    fi
done

আপনার সমাধানগুলি কিছু সংস্করণযুক্ত সূত্রের মতো কাজ করে না python@3যা ইনস্টল করা (এবং তালিকাভুক্ত) হিসাবে রয়েছে python3
ড্যানিয়েল অরল্যান্ডো

1
# install if we haven't installed any version
brew ls --versions $lib || brew install $lib
# install if we haven't installed latest version
brew outdated $lib || brew install $lib

1

সবচেয়ে সহজ দুটি লাইনার: প্রথম পদক্ষেপ, এটি ইনস্টল করা আছে তা নিশ্চিত করুন

$ realpath . || brew install coreutils

এটি বর্তমান দির রিয়েলপথটি মুদ্রণ করবে, যদি তা না হয় তবে এটি ইনস্টল করবে। এবং এটি রিয়েলপথটিও খুঁজে পাওয়া যায়নি fail

দ্বিতীয় পদক্ষেপ, এটিকে আপনার আসল কোডে কল করুন:

$ realpath ${someDir}

এটি একটি নির্দিষ্ট সরঞ্জামের জন্য একটি সহজ সমাধান। এটি জেনেরিক সমাধান নয়।
ইল্টেম্পো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.