কমান্ড লাইন থেকে আমি কীভাবে কমান্ড লাইন সরঞ্জামগুলি সম্পূর্ণ ইনস্টল করতে পারি?


44

আমি এক্সকোড কমান্ড লাইন সরঞ্জামগুলির ইনস্টলেশন স্ক্রিপ্ট করতে চাই।

ম্যাভেরিক্সে,

xcode-select --install

ব্যবহারকারীকে ইনস্টল করার অনুরোধ জানিয়ে একটি ডায়ালগ খুলবে, তবে আমি ডায়ালগ ছাড়াই ইনস্টলটি ট্রিগার করতে চাইছি, যেমন softwareupdateকমান্ডটি ব্যবহার করার মতো ।

এই কাজ করতে একটি উপায় আছে কি?

সম্পাদনা:

বিশেষত, xcode-select --installএমন একটি অ্যাপ্লিকেশন চালু করে যা ব্যবহারকারীদের ম্যানুয়ালি ডাউনলোড করার জন্য বা অ্যাপল বিকাশকারী অ্যাকাউন্ট না পাওয়ার জন্য সরঞ্জামগুলি ডাউনলোড এবং ইনস্টল করে। এটি এটি করতে ব্যবহার করা /System/Library/CoreServices/Install Command Line Developer Tools.appহয় বলে মনে হয় ।

আমি অ্যাপল যেমন একই পদ্ধতি ব্যবহার করতে চাই তবে জিইউআই ছাড়াই। এটিকে ভঙ্গুর বলে মনে হচ্ছে তাই ডিভাইসগুলি সমন্বিত .dmg ম্যানুয়ালি ডাউনলোড করতে চাই না। অ্যাপল আরও কয়েকটি কমান্ড-লাইন সরঞ্জাম সরবরাহ করে, যেমন softwareupdateএবং installএটি অ্যাপল থেকে সরাসরি সফ্টওয়্যার ডাউনলোড বা ইনস্টল করে এবং এই ধরণের বিতরণের জন্য আমি এটির সন্ধান করছি।


1
আপনি কি কোনও অভ্যন্তরীণ স্ক্রিপ্টের জন্য বা কোনও ধরণের বিতরণের জন্য এটি করার চেষ্টা করছেন? আমি জিজ্ঞাসার কারণটি হ'ল বিকাশকারী সরঞ্জামগুলির অ্যাক্সেস এবং সেগুলির বাইরে তাদের বিতরণ করার জন্য একটি (ফ্রি) বিকাশকারী অ্যাকাউন্ট প্রয়োজন যা অ্যাপলের লাইসেন্সিং চুক্তি লঙ্ঘন করবে।
কলিন সি

1
@ColinC। এক্সকোড-নির্বাচন - ইনস্টলটির জন্য অ্যাপল বিকাশকারী অ্যাকাউন্টের প্রয়োজন হয় না। সরঞ্জামগুলি ব্যবহারের আগে লাইসেন্স লাইসেন্স গ্রহণের প্রয়োজন হতে পারে তবে এটি অ্যাকাউন্ট ছাড়াই ডাউনলোড করে without
এছাড়াও

উত্তর:


30

আমি যদি এইটির জন্য creditণ দাবি করতে পারি তবে আমি এটি https://github.com/chcokr/osx-init/blob/master/install.sh তে সমাহিত পেয়েছি

এটি ইউআই-তে লগ ইন না করে আমার 10.10 হেডলেস ভিএম-এ কাজ করেছে। কমপক্ষে 10.9-10.14 সঙ্গে সামঞ্জস্যের জন্য আপডেটগুলি প্রয়োগ করা হয়েছে

touch /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress;
PROD=$(softwareupdate -l |
  grep "\*.*Command Line" |
  head -n 1 | awk -F"*" '{print $2}' |
  sed -e 's/^ *//' |
  tr -d '\n')
softwareupdate -i "$PROD" --verbose
rm /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress

এটি অনুমান করে যে আপনার কেবলমাত্র 1 টি ফলাফল রয়েছে softwareupdate -l | grep "\*.*Command Line"- যদি এটি একাধিক সংস্করণ দেয় তবে আপনার আরও নির্দিষ্ট যুক্তির প্রয়োজন হতে পারে। (আমার কাছে কোনও তিরস্কারের মামলা নেই)

একটি প্রকরণ যা 10-10-10.14 এ (সীমাবদ্ধ পরীক্ষা করা) কাজ করে বলে মনে হচ্ছে (10.9 ক্লাইট সরঞ্জামগুলির নামে কোনও অসক্স সংস্করণ নম্বর ফেরায় না ... সুতরাং এটি সেখানে কাজ করে না):

PROD=$(softwareupdate -l |
 grep "\*.*Command Line.*$(sw_vers -productVersion|awk -F. '{print $1"."$2}')" |
 head -n 1 | awk -F"*" '{print $2}' |
 sed -e 's/^ *//' |
 tr -d '\n')

কয়েকটি উদাহরণ ফলাফল:

* Command Line Tools (OS X Mavericks)-6.2
* Command Line Tools (OS X 10.10) for Xcode-7.2
* Command Line Tools (macOS El Capitan version 10.11) for Xcode-8.2
* Command Line Tools (macOS High Sierra version 10.13) for Xcode-10.1
* Command Line Tools (macOS Mojave version 10.14) for Xcode-10.1

1
: এই স্ক্রিপ্টটি কোড মূল উৎস হিসাবে উপস্থিত হয়েছে এবং অতিরিক্ত কোড যে 10.9 নিচের Mac OS X এর সংস্করণের উপর কাজ করবে হয়েছে github.com/timsutton/osx-vm-templates/blob/...
ফিন

1
দুঃখের বিষয় এই ধরণের স্টাফগুলিতে প্রতিটি নতুন রিলিজ নষ্ট হয়ে যাওয়ার পক্ষে এটি বেশ সাধারণ, তাই কোনও আশ্চর্যের কিছু নেই .....
আগ্রহী

3
10.12 (সিয়েরা) এর জন্য, আমাকে এখানে যা পরিবর্তন করতে হয়েছিল তা ছিল "-v" "
--verbose

3
দুর্দান্ত উত্তর, সিয়েরায় আমার জন্য কাজ করে! :-) তবে, আপনি rm /tmp/.com.apple.dt.CommandLineTools.installondemand.in-progressচালনার পরে চাইবেন softwareupdate -i ... , অন্যথায় পরবর্তী কলগুলি উপলভ্য আপডেট হিসাবে softwareupdate -lপ্রদর্শিত Command Line Tools ... হবে। এই (অনুমিত) আপডেটটি অ্যাপ স্টোরটিতে প্রদর্শিত হবে বলে মনে হচ্ছে না, সম্ভবত কারণ softwareupdate -lকেবলমাত্র "সিস্টেম" আপডেটগুলি তালিকাভুক্ত করে অ্যাপ্লিকেশন আপডেটগুলি না।
এসএসসি

1
@ মতামিনে আমার কাছে এমন কোনও ত্রুটিপূর্ণ মামলা নেই যা একাধিক ফলাফল দেয় - তবে আমি আপনার জন্য একটি সম্ভাব্য সংশোধন করে একটি আপডেট পোস্ট করেছি। চ্যালেঞ্জগুলির মধ্যে একটি হ'ল আপেল বছরের পর বছর ধরে তারা কীভাবে এই নামটি দেয় তার সাথে খুব বেমানান হয়, তাই বাছাই করতে বা ফিল্টার করার পক্ষে সত্যিকারের সামঞ্জস্যপূর্ণ কিছুই নেই ...
আগ্রহী

18
  1. অ্যাপল বিকাশকারী সাইট থেকে কমান্ড লাইন সরঞ্জাম প্যাকেজটি ডাউনলোড করুন ।

  2. ডাউনলোড করা 1 ডিএমজি মাউন্ট করুন :

    hdiutil attach "command_line_tools_os_x_mountain_lion_for_xcode__october_2013.dmg"
  3. কমান্ড লাইনের মাধ্যমে ইনস্টলারটি চালান:

    cd "/Volumes/Command Line Tools (Mountain Lion)"
    installer -verbose -pkg "Command Line Tools (Mountain Lion).mkpg" -target /
  4. শেষ হয়ে গেলে, DMG আনমাউন্ট করুন এবং ডাউনলোডটি মুছুন।

    1. ডিএমজি 2 বের করুন ।

      cd /
      hdiutil detach /dev/disk3s2
    2. ডিএমজি মুছুন।

      rm "command_line_tools_os_x_mountain_lion_for_xcode__october_2013.dmg"

1 লেখার সময়, ডাউনলোড করা ডিএমজি এবং প্যাকেজের নাম সঠিক, তবে ভবিষ্যতে, নামটি পরিবর্তন হতে পারে। কমান্ডের প্রাসঙ্গিক অংশটি পূরণ করতে কমান্ডটি পরিবর্তন করতে (বা ট্যাব-সমাপ্তি ব্যবহার করুন) মনে রাখবেন।
2 যদি কমান্ডটি কাজ না করে তবে ডিস্কটি মাউন্টের নামের সাথে (যেমন অনুযায়ী mount) মেলে তা পরীক্ষা করে দেখুন ।


1
আমি এটি ভবিষ্যতের প্রমাণ হিসাবে চাই এবং আমি চাই না যে আমার নিজের অনুলিপিগুলি ডিস্ক চিত্রের সরবরাহ করতে হবে। এক্সকোড-নির্বাচন - ইনস্টল করে ব্যবহারকারীর জন্য ডাউনলোডগুলি ইনস্টল করে এবং ইনস্টল করে, এবং এটির জন্য কোনও এডিসি লাগবে না। আমি ঠিক এটি করতে চাই, তবে জিইউআই ছাড়াই।
এছাড়াও

হার্ডওয়্যার আইও সরঞ্জামগুলি ইনস্টল করার জন্য পয়েন্ট 1 এবং 2 খুব দরকারী।
স্টারহাউস

6

একটি বিকল্প হ'ল আমি লিখেছি এই অ্যাপ্লস্ক্রিপ্টটি ব্যবহার করা:

https://gist.github.com/brysgo/9007731

do shell script "xcode-select --install"
do shell script "sleep 1"

tell application "System Events"
    tell process "Install Command Line Developer Tools"
        keystroke return
        click button "Agree" of window "License Agreement"
    end tell
end tell

xcode-select --install
sleep 1
osascript <<EOD
  tell application "System Events"
    tell process "Install Command Line Developer Tools"
      keystroke return
      click button "Agree" of window "License Agreement"
    end tell
  end tell
EOD

1
ম্যাকোস 10.11 আমি ত্রুটিটি পেয়েছি "সহায়ক অ্যাক্সেসে
ওসাসক্রিপ্টের

6

গ্রহণযোগ্য উত্তরের শৈলী এবং যুক্তি পরিষ্কার করার একটি প্রচেষ্টা, এটির যথাসম্ভব সংস্করণ হিসাবে স্বাধীন হিসাবে তৈরি করে softwareupdate, তার সম্পূর্ণ ক্ষমতা ব্যবহার করে এবং পুনরায় ব্যবহারযোগ্য osপরিবর্তনশীল প্রবর্তন :

#!/bin/bash
# Requires root
os=$(sw_vers -productVersion | awk -F. '{print $1 "." $2}')
if softwareupdate --history | grep --silent "Command Line Tools.*${os}"; then
    echo 'Command-line tools already installed.' 
else
    echo 'Installing Command-line tools...'
    in_progress=/tmp/.com.apple.dt.CommandLineTools.installondemand.in-progress
    touch ${in_progress}
    product=$(softwareupdate --list | awk "/\* Command Line.*${os}/ { sub(/^   \* /, \"\"); print }")
    softwareupdate --verbose --install "${product}" || echo 'Installation failed.' 1>&2 && rm ${in_progress} && exit 1
    rm ${in_progress}
    echo 'Installation succeeded.'
fi

কেবলমাত্র একটি দ্রষ্টব্য: sw_vers ফিল্টার 10.10 এর আগে বিভিন্ন প্রকাশে কাজ করে না। (আমি 10.11-10.13 এর সাথে কথা বলতে পারি না, কেবল আজ 10.9 10.10 এবং 10.14 এ পরীক্ষিত) (কিছু উদাহরণের জন্য আমার আপডেট উত্তর দেখুন)
আগ্রহী

2

এটি আমি ব্যবহার করি, আংশিকভাবে ব্রাইসগোয়ের উত্তরের উপর ভিত্তি করে।

sudo sqlite3 /Library/Application\ Support/com.apple.TCC/TCC.db \
    "INSERT or REPLACE INTO access(service,client,client_type,allowed,prompt_count) VALUES('kTCCServiceAccessibility','com.apple.Terminal',0,1,1);"

if [[ "$(xcode-select -p)" == "" ]]; then
  printf "\n### Installing Xcode command line tools\n"
  xcode-select --install
  sleep 2
  osascript <<EOD
    tell application "System Events"
      tell process "Install Command Line Developer Tools"
        click button "Install" of window ""
        click button "Agree" of window "License Agreement"
        repeat until exists button "Done" of window ""
          delay 1
        end repeat
        click button "Done" of window ""
      end tell
    end tell
EOD
fi

আপডেট: অ্যাপল অ্যাক্সেস ডাটাবেসে নতুন কলাম যুক্ত করতে থাকে, আপনাকে কেবল প্রথম 5 এর জন্য মানগুলি নির্দিষ্ট করতে হবে, এটি প্রতিফলিত করার জন্য কোড আপডেট করেছে।


1

এই উত্তরগুলিতে আরও কয়েকটি বিকল্প পাওয়া যেতে পারে:

এক্সকোড কমান্ড লাইন সরঞ্জামগুলি ডাউনলোড করুন

আপনি সরাসরি লিঙ্কের মাধ্যমে তাদের অফিসিয়াল ডাউনলোড সাইট থেকে এক্সকোড ৪.০ সিএলটিউলস প্যাকেজগুলি ডাউনলোড করতে পারেন।

এখানে একটি স্ক্রিপ্ট আপনার জন্য ইনস্টল প্রক্রিয়া স্বয়ংক্রিয় করবে 1

সরঞ্জামগুলির জন্য আপডেট লিঙ্কগুলি সন্ধান করতে আপনি এই আদেশটি ব্যবহার করতে পারেন:

curl -Ls https://devimages.apple.com.edgekey.net/downloads/xcode/simulators/index-3905972D-B609-49CE-8D06-51ADC78E07BC.dvtdownloadableindex | plutil -convert json -o - - | python -mjson.tool | less

[1] দয়া করে তাদের সার্ভারগুলিকে অপব্যবহার / ওভারলোড করবেন না

আপনি দেখতে পাচ্ছেন যে অ্যাপল বিকাশকারী ডাউনলোড সাইটে প্রথমে লগইন করা এবং সেখানে উপলব্ধ সর্বশেষতম কমান্ড লাইন সরঞ্জামগুলি ডাউনলোড করা সহজ । এরপরে আপনি .dmgনিজের প্যাকেজ রেপো সার্ভারে হোস্ট করতে পারেন এবং এর .dmgসাথে অনেকগুলি মেশিনে নির্ভরযোগ্যভাবে ইনস্টল করতে সক্ষম হবেনhdiutil এবং ডেভেলপার.এপল.কম.-এ লগইন পারেন।

06/10/2015 পর্যন্ত, সর্বশেষতম কমান্ড লাইন সরঞ্জামগুলির লিঙ্কটি dmgহ'ল:

http://adcdownload.apple.com/Developer_Tools/Command_Line_Tools_OS_X_10.10_for_Xcode_6.3.2/commandlinetoolsosx10.10forxcode6.3.2.dmg


যদিও এই লিঙ্কটি প্রশ্নের উত্তর দিতে পারে, উত্তরের প্রয়োজনীয় অংশগুলি এখানে অন্তর্ভুক্ত করা এবং রেফারেন্সের জন্য লিঙ্কটি সরবরাহ করা ভাল। লিঙ্কযুক্ত পৃষ্ঠাগুলি পরিবর্তিত হলে লিঙ্ক-শুধুমাত্র উত্তরগুলি অবৈধ হতে পারে।
grg

1
@gggarside: সর্বশেষতম যোসোমাইট / এক্সকোড 6.3.2 সিএলটি দিয়ে এই স্ক্রিপ্টটি আপডেট করতে কিছুটা সময় নিয়েছে dmgএবং স্থানীয়ভাবে উত্তরের প্রয়োজনীয় অংশগুলি এই উত্তরের অনুলিপি করেছে।
ট্রিনিট্রনএক্স

@ গ্রাগারসাইড: আমি লিঙ্কিংয়ের বিষয়টি বুঝতে পেরেছি এবং স্ক্রিপ্টটি সম্ভবত পুরানো ছিল, তবে আমি প্রাথমিকভাবে পোস্ট করার দিনেই এটি আপডেট করার সময় পাইনি। আমি এই লিঙ্কগুলিকে শুরু করার জন্য একটি ভাল জায়গা হিসাবে এবং নিজের কাছে ফিরে যেতে ও জিনিসগুলি আবার আপডেট ও পরীক্ষার জন্য একটি নোট হিসাবে দিতে চেয়েছিলাম।
ট্রিনিট্রনএক্স

1

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

আমি এই অসম্পূর্ণ চিত্রটি ব্যবহার করে এটি পরীক্ষা করেছি

হোমব্রিউ ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান , এবং এর ফলে কমান্ড লাইন সরঞ্জাম ইনস্টল করুন।

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • আমি জানি যে আসল প্রশ্নটি কেবল কমান্ড লাইন সরঞ্জামগুলি ইনস্টল করবেন কীভাবে জিজ্ঞাসা করেছিল, তবে আমি আজকাল এমন কোনও ম্যাক জানি না যাতে এতে হোম ব্রিউ ইনস্টল করা নেই।

আপনি যদি github.com/Homebrew/install/blob/… এর দিকে লক্ষ্য করেন আপনি দেখতে পাবেন হোমব্রবউ এই প্রশ্নের উত্তরগুলিতে (উদাহরণস্বরূপ আপেল.স্ট্যাকেক্সেঞ্জন.এ / ১৯৯596363/ / 61১6969৯ ) বর্ণিত অনুরূপ টেকনিক ব্যবহার করছে
আনন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.