วิธีตรวจสอบว่ามีการติดตั้งเครื่องมือบรรทัดคำสั่งหรือไม่


106

ฉันมี macbook pro ที่ใช้ OS X 10.8.2 ติดตั้ง XCode แล้ว ฉันรู้สิ่งนี้ตามที่ปรากฏในไดเร็กทอรี Applications นอกจากนี้ยังมีไฟล์ xcodebuild และ xcode-select ใน / usr / bin ที่ฉันต้องการทราบว่ามีการติดตั้งเครื่องมือบรรทัดคำสั่งหรือไม่ มีคำสั่งสำหรับมันหรือไม่? ฉันจะทำอย่างไรเพื่อดูว่ามีการติดตั้ง XCode CLT และหากใช่เพื่อค้นหาเวอร์ชันที่ติดตั้ง


เวอร์ชันของ XCode คือ 4.6
Vivek Nandavanam

คำตอบ:


104

อัปเดต 10.14 Mojave:

ดู Yosemite Update

อัปเดต 10.13 High Sierra:

ดู Yosemite Update

10.12 Sierra Update:

ดู Yosemite Update

10.11 การอัปเดต El Capitan:

ดู Yosemite Update

10.10 อัปเดต Yosemite:

เพียงแค่ป้อนgccหรือmakeในบรรทัดคำสั่ง! OSX จะรู้ว่าคุณไม่มีเครื่องมือบรรทัดคำสั่งและแจ้งให้คุณติดตั้ง!

หากต้องการตรวจสอบว่ามีอยู่จริงหรือไม่ให้xcode-select -pพิมพ์ไดเร็กทอรี หรืออีกวิธีหนึ่งค่าที่ส่งคืนจะเป็น2ถ้าไม่มีอยู่และ0ถ้าเป็นเช่นนั้น ในการพิมพ์ค่าส่งคืน ( ขอบคุณ @Andy ):

xcode-select -p 1>/dev/null;echo $?

อัปเดต 10.9 Mavericks:

ใช้ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables

10.8 อัปเดต:

ตัวเลือกที่ 1: Rob Napierแนะนำให้ใช้pkgutil --pkg-info=com.apple.pkg.DeveloperToolsCLIซึ่งน่าจะสะอาดกว่า

ตัวเลือกที่ 2:ตรวจสอบภายใน/var/db/receipts/com.apple.pkg.DeveloperToolsCLI.plistสำหรับการอ้างอิงไปและมันก็จะแสดงรายชื่อรุ่นcom.apple.pkg.DeveloperToolsCLI4.5.0

[Mar 12 17:04] [jnovack@yourmom ~]$ defaults read /var/db/receipts/com.apple.pkg.DeveloperToolsCLI.plist
{
    InstallDate = "2012-12-26 22:45:54 +0000";
    InstallPrefixPath = "/";
    InstallProcessName = Xcode;
    PackageFileName = "DeveloperToolsCLI.pkg";
    PackageGroups =     (
        "com.apple.FindSystemFiles.pkg-group",
        "com.apple.DevToolsBoth.pkg-group",
        "com.apple.DevToolsNonRelocatableShared.pkg-group"
    );
    PackageIdentifier = "com.apple.pkg.DeveloperToolsCLI";
    PackageVersion = "4.5.0.0.1.1249367152";
    PathACLs =     {
        Library = "!#acl 1\\ngroup:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:delete\\n";
        System = "!#acl 1\\ngroup:ABCDEFAB-CDEF-ABCD-EFAB-CDEF0000000C:everyone:12:deny:delete\\n";
    };
}

1
ฉันพบว่าการเปิด xcode> การตั้งค่า> การดาวน์โหลด> ส่วนประกอบมีรายการเครื่องมือบรรทัดคำสั่งซึ่งอยู่ในสถานะอัปเดตและเมื่อฉันอัปเดตมันจะแสดงสถานะตามที่ติดตั้ง
Vivek Nandavanam

7
แทนที่จะเข้าถึง/var/db/receiptsไดเรกทอรีคุณสามารถใช้ API ได้:pkgutil --pkg-info=com.apple.pkg.DeveloperToolsCLI
Rob Napier

8
ฉันอาจจะเข้าใจผิด แต่ตอนนี้ชื่อใบเสร็จก็เป็นCLTools_Executablesอย่างน้อยนั่นคือทั้งหมดที่ฉันพบภายใต้ OS Mavericks คำสั่งจะเป็น:pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
คริส

1
สังเกตเห็นสิ่งเดียวกันกับจอร์แดน xcode-select ไม่ส่งคืน int เพียงแค่เส้นทาง
Damon

1
ฉันป้อน xcode-select-p เพื่อรับ /Applications/Xcode.app/Contents/Developer เท่านั้น หมายความว่าอย่างไร?
เรียน

77

โยเซมิตี

ด้านล่างนี้เป็นขั้นตอนเพิ่มเติมบางประการใน Mac รุ่นใหม่ที่บางคนอาจต้องการ นี่เป็นการเพิ่มคำตอบที่ยอดเยี่ยมของ @jnovack เล็กน้อย

อัปเดต: บันทึกย่ออื่น ๆ เมื่อตั้งค่านี้:

ตรวจสอบว่าผู้ดูแลระบบของคุณมีรหัสผ่าน รหัสผ่านเปล่าจะไม่ทำงานเมื่อพยายามเปิดใช้งานผู้ใช้รูท

System Preferences > Users and Groups > (select user) > Change password

จากนั้นเพื่อเปิดใช้งานรูทให้รันdsenablerootในเทอร์มินัล:

$ dsenableroot
username = mac_admin_user
user password:
root password:
verify root password:

dsenableroot:: ***Successfully enabled root user.

พิมพ์รหัสผ่านของผู้ดูแลระบบจากนั้นรหัสผ่านรูทที่เปิดใช้งานใหม่สองครั้ง

ประเภทถัดไป:

sudo gcc

หรือ

sudo make

มันจะตอบสนองด้วยสิ่งต่อไปนี้:

WARNING: Improper use of the sudo command could lead to data loss
or the deletion of important system files. Please double-check your
typing when using sudo. Type "man sudo" for more information.

To proceed, enter your password, or type Ctrl-C to abort.

Password:


You have not agreed to the Xcode license agreements. You must agree to 
both license agreements below in order to use Xcode.

กด Enter เมื่อระบบแจ้งให้แสดงข้อตกลงใบอนุญาต

Hit the Enter key to view the license agreements at 
'/Applications/Xcode.app/Contents/Resources/English.lproj/License.rtf'

IMPORTANT: BY USING THIS SOFTWARE, YOU ARE AGREEING TO BE BOUND BY THE 
FOLLOWING APPLE TERMS:

//...

กดqเพื่อออกจากมุมมองข้อตกลงใบอนุญาต

By typing 'agree' you are agreeing to the terms of the software license 
agreements. Type 'print' to print them or anything else to cancel, 
[agree, print, cancel]

ประเภทagree. แล้วมันจะจบลงด้วย:

clang: error: no input files 

ซึ่งโดยพื้นฐานแล้วหมายความว่าคุณไม่ได้ให้makeหรือgccไฟล์อินพุตใด ๆ

นี่คือลักษณะของการตรวจสอบ:

$ xcode-select -p
/Applications/Xcode.app/Contents/Developer

Mavericks

กับ Mavericks ตอนนี้มันแตกต่างกันเล็กน้อย

เมื่อไม่พบเครื่องมือนี่คือสิ่งที่คำpkgutilสั่ง command ส่งคืน:

$ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.

ในการติดตั้งเครื่องมือบรรทัดคำสั่งสิ่งนี้ใช้งานได้ดีจาก Terminal พร้อม gui ที่ดีและทุกอย่าง

$ xcode-select --install

http://macops.ca/installing-command-line-tools-automatically-on-mavericks/

เมื่อพบสิ่งนี้คือสิ่งที่pkgutilคำสั่งส่งคืน:

$ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
package-id: com.apple.pkg.CLTools_Executables
version: 5.0.1.0.1.1382131676
volume: /
location: /
install-time: 1384149984
groups: com.apple.FindSystemFiles.pkg-group com.apple.DevToolsBoth.pkg-group com.apple.DevToolsNonRelocatableShared.pkg-group 

คำสั่งนี้ส่งคืนเหมือนเดิมก่อนและหลังการติดตั้ง

$ pkgutil --pkg-info=com.apple.pkg.DeveloperToolsCLI
No receipt for 'com.apple.pkg.DeveloperToolsCLI' found at '/'.

นอกจากนี้ฉันยังมีส่วนประกอบสำหรับ CLT ที่เลือกและติดตั้งในส่วนดาวน์โหลดของ xcode มาก่อน แต่ดูเหมือนว่าจะไม่ได้ไปที่เทอร์มินัล ...

หวังว่าจะช่วยได้


คุณสามารถอัปเดตคำตอบนี้สำหรับระบบปฏิบัติการล่าสุดได้หรือไม่? ขอบคุณ.
Sparky

ฉันเรียกว่า sudo rm -rf / Library / Developer / CommandLineTools แล้ว xcode-select --install
Oleksii Kyslytsyn

32

ในการตรวจสอบว่ามีการติดตั้งเครื่องมือบรรทัดคำสั่งหรือไม่ให้รัน:

xcode-select --version

// if installed you will see the below with the version found in your system
// xcode-select version 1234.

หากไม่ได้ติดตั้งเครื่องมือบรรทัดคำสั่งให้รัน:

xcode-select --install

1
ง่ายและมีประสิทธิภาพ อาจเป็นคำตอบที่ดีที่สุด
Bryan P

12

บน macOS Sierra (10.12):

  1. รันคำสั่งต่อไปนี้เพื่อดูว่ามีการติดตั้ง CLT หรือไม่:

    xcode-select -p

    สิ่งนี้จะส่งคืนเส้นทางไปยังเครื่องมือหากติดตั้ง CLT แล้ว อะไรทำนองนี้ -

    /Applications/Xcode.app/Contents/Developer
  2. รันคำสั่งต่อไปนี้เพื่อดูเวอร์ชันของ CLT:

    pkgutil --pkg-info=com.apple.pkg.CLTools_Executables

    สิ่งนี้จะส่งคืนข้อมูลเวอร์ชันผลลัพธ์จะเป็นดังนี้ -

    package-id: com.apple.pkg.CLTools_Executables
    version: 8.2.0.0.1.1480973914
    volume: /
    location: /
    install-time: 1486372375
    

8

ใน macOS Catalinaและอาจเป็นเวอร์ชันก่อนหน้าบางรุ่นคุณสามารถค้นหาตำแหน่งที่ติดตั้งเครื่องมือบรรทัดคำสั่งโดยใช้:

xcode-select -p aka xcode-select --print-path

ซึ่งหากติดตั้งแล้วให้ตอบสนองด้วยสิ่งต่อไปนี้:

/Library/Developer/CommandLineTools

หากต้องการทราบว่าคุณได้ติดตั้งเวอร์ชันใดไว้ที่นั่นคุณสามารถใช้:

xcode-select -v aka xcode-select --version

ซึ่งจะส่งคืนสิ่งที่ต้องการ:

xcode-select version 2370.

อย่างไรก็ตามหากคุณพยายามอัปเกรดเป็นเวอร์ชันล่าสุดโดยสมมติว่ามีการติดตั้งแล้วโดยใช้สิ่งนี้:

xcode-select --install

คุณจะได้รับการตอบกลับ:

xcode-select: error: command line tools are already installed, use "Software Update" to install updates

ซึ่งค่อนข้างจะให้การแสดงผลที่ผิดพลาดคุณต้องใช้ Spotlight ค้นหาสิ่งที่เรียกว่า 'Software Update' ในความเป็นจริงคุณต้องดำเนินการต่อใน Terminal และใช้สิ่งนี้:

softwareupdate -i -a aka softwareupdate --install --all

ซึ่งพยายามอัปเดตทุกสิ่งที่ทำได้และอาจตอบสนองได้ดีกับ:

Software Update Tool

Finding available software
No new software available.

หากต้องการทราบว่ามีการติดตั้ง Apple SDK เวอร์ชันใดในเครื่องของคุณให้ใช้สิ่งนี้:

xcodebuild -showsdks


3

ฉันคิดว่าวิธีที่ง่ายที่สุดที่ได้ผลสำหรับฉันในการค้นหาเครื่องมือบรรทัดคำสั่งนั้นได้รับการติดตั้งหรือไม่และเวอร์ชันของมันโดยไม่คำนึงถึงเวอร์ชัน macOS

$brew config

macOS: 10.14.2-x86_64
CLT: 10.1.0.0.1.1539992718
Xcode: 10.14.2

สิ่งนี้เมื่อคุณติดตั้งเครื่องมือ Command Line อย่างเหมาะสมและกำหนดเส้นทางอย่างถูกต้อง

ก่อนหน้านี้ฉันได้รับเอาต์พุตด้านล่าง
macOS: 10.14.2-x86_64
CLT: N / A
Xcode: 10.1

CLT แสดงเป็น N / A แม้ว่าจะมี gcc และทำให้ทำงานได้ดีและเอาต์พุตต่ำกว่า

$xcode-select -p              
/Applications/Xcode.app/Contents/Developer
$pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
No receipt for 'com.apple.pkg.CLTools_Executables' found at '/'.
$brew doctor
Your system is ready to brew.

ในที่สุดการทำ xcode-select - ติดตั้งก็แก้ไขปัญหาการชงของฉันไม่พบ CLT สำหรับการติดตั้งแพ็คเกจดังต่อไปนี้

Installing sphinx-doc dependency: python
Warning: Building python from source:
  The bottle needs the Apple Command Line Tools to be installed.
  You can install them, if desired, with:
    xcode-select --install

1

ไปที่แอปพลิเคชั่น> Xcode> ค่ากำหนด> ดาวน์โหลด

คุณควรเห็นเครื่องมือบรรทัดคำสั่งที่นั่นเพื่อให้คุณติดตั้ง


1

จากมุมมองของโปรแกรมชาวHomebrew จะตรวจสอบการมีอยู่ของไฟล์ต่างๆเพื่อตรวจสอบว่ามีการติดตั้งเครื่องมือบรรทัดคำสั่งหรือไม่ ขณะนี้จะตรวจสอบอยู่เสมอ /Library/Developer/CommandLineTools/usr/bin/gitและจะตรวจสอบ/usr/include/iconv.hด้วยว่า OS เวอร์ชัน 10.13 หรือต่ำกว่าหรือไม่



0

เนื่องจาก Xcode ใช้เครื่องมือ CLI ก่อนหากติดตั้งก่อนฉันจึงใช้ไฮบริดต่อไปนี้ซึ่งได้รับการตรวจสอบความถูกต้องใน 10.12 และ 10.14 ฉันคาดว่ามันจะใช้งานได้กับเวอร์ชันอื่น ๆ มากมาย:

installed=$(pkgutil --pkg-info=com.apple.pkg.CLTools_Executables 2>/dev/null || pkgutil --pkg-info=com.apple.pkg.Xcode)

เกลือawkเพื่อลิ้มรสสำหรับตรรกะการแตกแขนง

แน่นอนว่าxcode-select -pจะจัดการกับรูปแบบต่างๆด้วยคำสั่งสั้น ๆ แต่ไม่สามารถให้รายละเอียดแพ็คเกจเวอร์ชันและข้อมูลเมตาของวันที่ติดตั้งได้


0

เปิดเทอร์มินัลของคุณและตรวจสอบว่าคุณได้ติดตั้ง Xcode ไว้แล้วหรือไม่:

xcode-select -p

ในทางกลับกันถ้าคุณได้รับสิ่งนี้:

/Library/Developer/CommandLineTools

นั่นหมายความว่าคุณได้ติดตั้ง Xcode นั้นแล้ว

อีกวิธีหนึ่งที่คุณสามารถตรวจสอบได้ว่าคุณติดตั้ง "HomeBrew" หรือไม่คุณสามารถใช้คำสั่งต่อไปนี้เพื่อดูว่าคุณมี Xcode และเวอร์ชัน:

brew config

และสุดท้ายหากคุณไม่มี Xcode ให้ไปที่ลิงค์นี้เพื่อดาวน์โหลด Xcode จาก Appstore Xcode จาก App Store

โชคดี.

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.