হোমব্রিউ দিয়ে ইনস্টল হওয়া প্যাকেজগুলির জন্য দেওয়া পতাকাগুলি নির্ধারণ করুন


17

হোমব্রিউয়ের সাথে প্যাকেজ ইনস্টল করার সময় কোন পতাকাগুলি দেওয়া হয়েছিল তা পরীক্ষা করার কোনও উপায় আছে?

উদাহরণস্বরূপ, ইমাক্স সূত্রে একটি অযৌক্তিক পতাকা রয়েছে। যদি করতাম

brew install emacs --with-glib --with-librsvg

আমি পরে নির্ধারণ করতে চাই যে ইমাসের হোমব্রু ইনস্টলের জন্য আমি পতাকাগুলি দিয়েছিলাম --with-glib --with-librsvgঅন্য কোনও পতাকা নয়।

লুয়া প্যাকেজের সাথে টেস্ট কেস:

প্যাকেজ ইনস্টল করার আগে তথ্য সমস্ত বিকল্প দেখায়।

$ brew info lua
lua: stable 5.2.3 (bottled)
http://www.lua.org/
Not installed
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/lua.rb
==> Options
--universal
    Build a universal binary
--with-completion
    Enables advanced readline support
--without-sigaction
    Revert to ANSI signal instead of improved POSIX sigaction

আমি কেবল --with-completionপতাকা সহ প্যাকেজটি ইনস্টল করি ।

$ brew install lua --with-completion
==> Downloading http://www.lua.org/ftp/lua-5.2.3.tar.gz
######################################################################## 100.0%
==> Downloading http://luajit.org/patches/lua-5.2.0-advanced_readline.patch
######################################################################## 100.0%
==> Downloading http://lua-users.org/files/wiki_insecure/power_patches/5.2/lua-5
######################################################################## 100.0%
==> Patching
patching file Makefile
patching file src/Makefile
patching file src/lua.c
Hunk #1 succeeded at 231 (offset -5 lines).
Hunk #2 succeeded at 559 (offset -4 lines).
Hunk #3 succeeded at 575 (offset -4 lines).
patching file src/lua.c
==> make macosx INSTALL_TOP=/usr/local/Cellar/lua/5.2.3_1 INSTALL_MAN=/usr/local
==> make install INSTALL_TOP=/usr/local/Cellar/lua/5.2.3_1 INSTALL_MAN=/usr/loca
🍺  /usr/local/Cellar/lua/5.2.3_1: 13 files, 312K, built in 6 seconds

প্যাকেজ ইনস্টল করার পরে, তথ্য আমি ব্যবহার করি নি সেগুলি সহ সমস্ত বিকল্প দেখায়। কমান্ডটি স্বীকার করে যে প্যাকেজটি উত্স থেকে নির্মিত হয়েছিল এবং বোতল থেকে pouredালা হয়নি।

$ brew info lua
lua: stable 5.2.3 (bottled)
http://www.lua.org/
/usr/local/Cellar/lua/5.2.3_1 (13 files, 312K) *
  Built from source with: --with-completion
From: https://github.com/Homebrew/homebrew/blob/master/Library/Formula/lua.rb
==> Options
--universal
    Build a universal binary
--with-completion
    Enables advanced readline support
--without-sigaction
    Revert to ANSI signal instead of improved POSIX sigaction

উত্তর:


15

উত্স থেকে কোনও প্যাকেজ তৈরি করা হলে যে পতাকাগুলি তৈরি করতে ব্যবহৃত হত আপনি যখন তা দেখানো হয় brew info <package>

এক্ষেত্রে: brew info emacs | grep "Built from source"


ব্রিউ তথ্যের আউটপুট সর্বদা সূত্রের জন্য সমস্ত উপলভ্য বিকল্পগুলি তালিকাভুক্ত করে, প্যাকেজ ইনস্টল করা থাকলে বিকল্পগুলি ব্যবহৃত হয় না।
প্রেক্সোলাইটিক

1
এটা সত্যি না. প্যাকেজটি বোতল থেকে ইনস্টল করা হয়েছে বা উত্স থেকে নির্মিত হয়েছে এবং তথ্যটি উত্স থেকে তৈরি করা থাকলে এটি ব্যবহৃত পতাকাগুলি দেখায়।
আন্দ্রে

একটি উদাহরণ সহ ওপি সম্পাদনা করা হয়েছে, যেখানে আমি বলতে পারি, তথ্য উত্স থেকে নির্মিত প্যাকেজের জন্য ব্যবহৃত পতাকাগুলি নির্দিষ্ট করে না।
প্রক্সিওলিটিক

2
ওহ উফ, আমি এটি দেখতে পেয়েছি এবং আপনার গ্রেপ কমান্ডটি এখন উপলব্ধি করে।
প্রক্সিওলিটিক

6

/usr/local/Cellarপ্রতিটি প্যাকেজের নীচে একটি ফাইল রয়েছে যা ডাকা হয় INSTALL_RECEIPT.json, যেমন gawk:

/usr/local/Cellar/gawk/4.1.3/INSTALL_RECEIPT.json

এটি কীভাবে প্যাকেজ ইনস্টল করা হয়েছিল তা নির্ধারণ করে। আমি মনে করি এটির অ্যাক্সেসের সঠিক উপায়টি রয়েছে

brew info --json=v1 <packagename>

যেমন

brew info --json=v1 gnuplot

এটি প্রচুর পরিমাণে স্টাফ আউট করে দেয়, তবে আপনি যদি এটি jq(জেএসওএন প্রসেসর - এর মাধ্যমে সহজেই উপলব্ধ homebrew) এর মাধ্যমে প্রেরণ করেন তবে আপনি এই জাতীয় প্যাকেজ ইনস্টল করতে যে বিকল্পগুলি ব্যবহার করতে পারেন তা নির্বাচন করতে পারেন ( gnuplotপ্যাকেজটি পরীক্ষা করা ):

brew info --json=v1 gnuplot | jq '.[].installed[0].used_options'
[
    "--with-qt"
]

যা আমাকে বলছে যে আমি gnuplotব্যবহার করে ইনস্টল করেছি :

brew install --with-qt gnuplot 

এই উত্তর হওয়া উচিত।
জ্যাকব ডিজেলিং

for package in $(brew list); do echo -n "brew install $package "; for item in $(brew info --json=v1 $package | jq -r '.[0].installed[0].used_options | .[]'); do echo -n "$item "; done; echo ; done 2>/dev/null ব্রিউ ইনস্টল কমান্ডগুলির একটি তালিকা আউটপুট করতে ব্যবহার করা যেতে পারে যা আপনি অন্য কোথাও ব্যবহার করতে পারেন।
সঙ্কল্প

4

আর একটি দরকারী সরঞ্জাম হ'ল homebrew-bundler। একবার এর মাধ্যমে ইনস্টল হয়ে গেলে brew tap Homebrew/bundleআপনি চালাতে পারবেন brew bundle dumpএবং এটি একটি ব্রুফিল ফাইল তৈরি করবে যা আপনার ইনস্টল করা সমস্ত প্যাকেজগুলির সাথে ইনস্টল করার জন্য ব্যবহৃত অতিরিক্ত আরগগুলির সাথে তালিকাবদ্ধ করে।


এটি প্রকৃতপক্ষে একটি দুর্দান্ত বিকল্প। এবং, Brewfileএটিকে সম্পাদনা করতে এবং এটি আপনার ডটফাইল রেপোতে পরীক্ষা করে নেওয়া নতুন মেশিনগুলিকে "সেটআপ" করা সহজ করে তোলে। যদিও এটি সমস্ত নির্ভরতা সহ সমস্ত প্যাকেজ তালিকাভুক্ত করে। বর্তমানে brew leavesকেবলমাত্র শীর্ষ-স্তরের ইনস্টলড প্যাকেজগুলির তালিকা রয়েছে এমন তালিকা থেকে তালিকার বিশ্লেষণ করতে হবে।
eduncan911

3

এখানে একটি সামান্য বাশ ফাংশন রয়েছে যা প্যাকেজটি উত্স থেকে নির্মিত হয়েছিল কিনা তা নির্বিশেষে পতাকাগুলি ফিরিয়ে দেয়।

function brew_options()
{
    [ "$#" -ne 1 ] && >&2 echo -e "$FUNCNAME requires only 1 option, the package name" && return 1

    local item=$1
    local opts

    ## Check if package installed
    [ -n "$(brew ls --versions $item)" ] || ( >&2 echo -e "$item is not installed" && return 1 )

    set -o pipefail

    ## Get options if built from source
    if ! opts="$(brew info $item | grep 'Built from source with:' | sed 's/^[ \t]*Built from source with:/ /g; s/\,/ /g')" ; then
        # If not built from source, get options from brew metadata
        opts="$(brew info --json=v1 $item | jq -ec '.[].installed[0].used_options' | awk '{print substr($0, 2, length($0) - 2)}' | sed 's/,/ /g;s/"//g')"
    fi

    ## If we're able to get options and its just not spaces echo it 
    if [ "$?" -eq 0 ] && [[ ! -z "${opts// }" ]]; then
        echo "$opts"
    fi

    set +o pipefail

}

ব্যাশ স্ক্রিপ্ট লেখার মধ্যে এই ব্যাশ ফাংশনটি ব্যবহার করতে

 brew_options PKGNAME

PKGNAMEপছন্দসই হোমব্রিউ প্যাকেজের নাম কোথায় । আপনি যেমন কোনও বাশ স্ক্রিপ্টের মধ্যে ইনস্টল করা সমস্ত হোমব্রু প্যাকেজগুলির মাধ্যমে পুনরাবৃত্তি করতে পারেন

 # Command to generate install script
 PKGS=$(brew list)

 # iterate through all packges
 for PKG in $PKGS; do

   echo $PKG `brew_options $PKG`

 done


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