Jak sprawdzić, czy są zainstalowane narzędzia wiersza poleceń

106

Mam Macbooka Pro z OS X 10.8.2. XCode jest zainstalowany. Wiem to, ponieważ pojawia się w katalogu Aplikacje. Istnieją również pliki xcodebuild i xcode-select w / usr / bin. Muszę wiedzieć, czy narzędzia wiersza poleceń są zainstalowane. Czy jest na to polecenie? Co mogę zrobić, aby sprawdzić, czy XCode CLT jest zainstalowany, a jeśli tak, to znaleźć zainstalowaną wersję?

Vivek Nandavanam
źródło
Wersja XCode to 4.6
Vivek Nandavanam

Odpowiedzi:

104

Aktualizacja 10.14 Mojave:

Zobacz aktualizację Yosemite.

Aktualizacja 10.13 High Sierra:

Zobacz aktualizację Yosemite.

Aktualizacja 10.12 Sierra:

Zobacz aktualizację Yosemite.

Aktualizacja 10.11 El Capitan:

Zobacz aktualizację Yosemite.

Aktualizacja 10.10 Yosemite:

Wystarczy wpisać gcclub makew wierszu poleceń! OSX będzie wiedział, że nie masz narzędzi wiersza poleceń i poprosi Cię o ich zainstalowanie!

Aby sprawdzić, czy istnieją, xcode-select -pwydrukuje katalog. Alternatywnie wartość zwracana będzie, 2jeśli NIE istnieją, a 0jeśli tak. Aby po prostu wydrukować wartość zwracaną ( dzięki @Andy ):

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

Aktualizacja 10.9 Mavericks:

Posługiwać się pkgutil --pkg-info=com.apple.pkg.CLTools_Executables

Aktualizacja 10.8:

Opcja 1: Rob Napier zasugerował użycie pkgutil --pkg-info=com.apple.pkg.DeveloperToolsCLI, co prawdopodobnie jest czystsze.

Opcja 2: Sprawdź w środku, /var/db/receipts/com.apple.pkg.DeveloperToolsCLI.plistaby znaleźć odniesienie do wersji, com.apple.pkg.DeveloperToolsCLIa pojawi się lista 4.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";
    };
}
jnovack
źródło
1
Okazało się, że otwarcie xcode> Preferencje> Pobieranie> Komponenty zawierało wpis narzędzi wiersza poleceń, który był w stanie aktualizacji, a kiedy go zaktualizowałem, pokazuje stan jako zainstalowany
Vivek Nandavanam
7
Zamiast sięgać do /var/db/receiptskatalogu, możesz użyć do tego API:pkgutil --pkg-info=com.apple.pkg.DeveloperToolsCLI
Rob Napier
8
Mogę się mylić, ale nazwa paragonu to teraz CLTools_Executablesprzynajmniej to wszystko, co znajduję w OS Mavericks. Polecenie byłoby wtedy następujące:pkgutil --pkg-info=com.apple.pkg.CLTools_Executables
Chris,
1
zauważyłem to samo co Jordan. xcode-select nie zwraca int, tylko ścieżkę
Damon
1
Wpisałem xcode-select-p, tylko po to, aby pobrać /Applications/Xcode.app/Contents/Developer. Co to znaczy?
studium
77

Yosemite

Poniżej znajduje się kilka dodatkowych kroków na nowym komputerze Mac, których niektórzy mogą potrzebować. To dodaje trochę do doskonałej odpowiedzi @ jnovack.

Aktualizacja: kilka innych uwag dotyczących konfiguracji:

Upewnij się, że administrator ma hasło. Puste hasło nie zadziała podczas próby włączenia użytkownika root.

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

Następnie, aby włączyć root, uruchom dsenablerootw terminalu:

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

dsenableroot:: ***Successfully enabled root user.

Wpisz hasło administratora, a następnie dwukrotnie nowe włączone hasło roota.

Następny typ:

sudo gcc

lub

sudo make

Odpowiedzi w następujący sposób:

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.

Naciśnij klawisz Enter, gdy pojawi się monit o wyświetlenie umowy licencyjnej.

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:

//...

naciśnij q aby zamknąć widok umowy licencyjnej.

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]

Rodzaj agree . A potem skończy się:

clang: error: no input files 

Co w zasadzie oznacza, że ​​nie dałeś make lubgcc żadnych plików wejściowych.

Oto jak wyglądał czek:

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

Mavericks

W przypadku Mavericks jest teraz trochę inaczej.

Kiedy narzędzia NIE zostały znalezione, pkgutilpolecenie zwróciło następujące polecenie:

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

Aby zainstalować narzędzia wiersza poleceń, działa to ładnie z poziomu terminala, z ładnym interfejsem użytkownika i wszystkim.

$ xcode-select --install

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

Po ich znalezieniu pkgutilpolecenie zwróciło następujące informacje:

$ 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 

To polecenie zwróciło to samo przed i po instalacji.

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

Miałem również komponent dla CLT wybrany i zainstalowany wcześniej w sekcji pobierania xcode, ale wygląda na to, że nie dotarł do terminala ...

Mam nadzieję, że to pomoże.

phyatt
źródło
Czy możesz zaktualizować tę odpowiedź dla najnowszych systemów operacyjnych? Dzięki.
Sparky
Nazwałem sudo rm -rf / Library / Developer / CommandLineTools, a następnie xcode-select --install.
Oleksii Kyslytsyn
32

Aby sprawdzić, czy narzędzia wiersza poleceń są zainstalowane, uruchom:

xcode-select --version

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

Jeśli narzędzia wiersza poleceń nie są zainstalowane, uruchom:

xcode-select --install
user3476766
źródło
1
Proste i skuteczne. To może być najlepsza odpowiedź.
Bryan P
12

W systemie macOS Sierra (10.12):

  1. Uruchom następujące polecenie, aby sprawdzić, czy CLT jest zainstalowany:

    xcode-select -p

    spowoduje to zwrócenie ścieżki do narzędzia, jeśli CLT jest już zainstalowany. Coś takiego -

    /Applications/Xcode.app/Contents/Developer
  2. Uruchom następujące polecenie, aby zobaczyć wersję CLT:

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

    to zwróci informacje o wersji, wynik będzie podobny do tego -

    package-id: com.apple.pkg.CLTools_Executables
    version: 8.2.0.0.1.1480973914
    volume: /
    location: /
    install-time: 1486372375
sahilabrar
źródło
8

W systemie macOS Catalina i prawdopodobnie w niektórych wcześniejszych wersjach można sprawdzić, gdzie są zainstalowane narzędzia wiersza poleceń, używając:

xcode-select -p znany jako xcode-select --print-path

Który, jeśli jest zainstalowany, odpowie na przykład:

/Library/Developer/CommandLineTools

Aby dowiedzieć się, którą wersję tam zainstalowałeś, możesz użyć:

xcode-select -v znany jako xcode-select --version

Który zwróci coś takiego:

xcode-select version 2370.

Jednakże , jeśli spróbujesz uaktualnić go do najnowszej wersji, zakładając, że jest zainstalowany, korzystając w ten sposób:

xcode-select --install

W odpowiedzi otrzymasz:

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

Co raczej błędnie sprawia wrażenie, że trzeba użyć Spotlight, aby znaleźć coś o nazwie „Aktualizacja oprogramowania”. W rzeczywistości musisz kontynuować w Terminalu i użyć tego:

softwareupdate -i -a znany jako softwareupdate --install --all

Który próbuje zaktualizować wszystko, co może i może odpowiedzieć:

Software Update Tool

Finding available software
No new software available.

Aby dowiedzieć się, które wersje różnych zestawów SDK firmy Apple są zainstalowane na komputerze, użyj tego:

xcodebuild -showsdks

Paul F. Wood
źródło
3

Myślę, że najprostszy sposób, który zadziałał dla mnie, aby znaleźć narzędzia wiersza poleceń, jest zainstalowany lub nie i jego wersja, niezależnie od wersji macOS

$brew config

macOS: 10.14.2-x86_64
CLT: 10.1.0.0.1.1539992718
Xcode: 10.1

Dzieje się tak, gdy masz prawidłowo zainstalowane narzędzia wiersza poleceń i prawidłowo ustawione ścieżki.

Wcześniej otrzymałem wyjście jak poniżej
macOS: 10.14.2-x86_64
CLT: N / A
Xcode: 10.1

CLT został pokazany jako N / A pomimo posiadania gcc i sprawia, że ​​działa dobrze i poniżej wyjść

$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.

Wreszcie wykonanie xcode-select --install rozwiązało mój problem z brew nie mogącym znaleźć CLT do instalowania pakietów, jak poniżej.

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
Jagdish Adusumalli
źródło
1

Wybierz kolejno Aplikacje> Xcode> Preferencje> Pobrane

Powinieneś zobaczyć narzędzia wiersza poleceń, które możesz zainstalować.

Bruno
źródło
0

Ponieważ Xcode obsługuje narzędzia CLI, jeśli jest instalowane jako pierwsze, używam następującej hybrydy, która została sprawdzona w wersjach 10.12 i 10.14. Spodziewam się, że działa na wielu innych wersjach:

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

Sól z awk do smaku dla logiki rozgałęzień.

Oczywiście xcode-select -pobsługuje warianty za pomocą naprawdę krótkiego polecenia, ale nie podaje szczegółowych metadanych pakietu, wersji i daty instalacji.

BaseZen
źródło
0

Otwórz terminal i sprawdź, czy masz już zainstalowany Xcode z tym:

xcode-select -p

w zamian, jeśli otrzymasz to:

/Library/Developer/CommandLineTools

Oznacza to, że masz zainstalowany Xcode.

Innym sposobem sprawdzenia, czy masz zainstalowany "HomeBrew", możesz użyć następującego polecenia, aby sprawdzić, czy masz Xcode i wersję:

brew config

I wreszcie, jeśli nie masz Xcode, kliknij ten link, aby pobrać Xcode z Appstore. Xcode ze sklepu App Store .

Powodzenia.

ZaMy
źródło