Search code examples
rubyxcodemacosxcrun

Invalid active developer path on MAC OS X after installing Ruby


I get this error:

xcrun: error: invalid active developer path (/Applications/Xcode.app), missing xcrun at: /Applications/Xcode.app/usr/bin/xcrun

This solution works, but the error occurs again after closing my terminal and reopening it; I then have to run the same commands every time I open a new terminal window.

How can I apply these changes such that they will save after closing the terminal window out?


Solution

  • Partial diagnosis: https://github.com/microsoft/vcpkg/issues/8781#issuecomment-547248760

    It seems that upgrading from one MacOS version to another either uninstalls some dev tools or it moves them to another path, and this breaks compatibility with any tool using the environment variable that points to the old location where the tools were located.

    sudo xcode-select --install
    

    Using the install command worked for me, but it is not clear whether this simply downloaded and unpacked files and then skipped installation and simply updated an environment variable or whether it physically installed the files at the expected path. (Or it could have made links to the new folder path).

    Testing my theory, I probe the folder structure with ls (I should have done this before using the install command):

    rej@Ryans-MacBook-Air:~$ ls /Library/Developer/CommandLineTools/usr/bin/
    rej@Ryans-MacBook-Air:~$ ls -la /Library/Developer/CommandLineTools/usr/bin/
    total 243776
    drwxr-xr-x  124 root  wheel   3.9K Oct 28 23:03 ./
    drwxr-xr-x    7 root  admin   224B Oct 28 23:05 ../
    lrwxr-xr-x    1 root  wheel    64B Oct 28 23:03 2to3@ -> ../../Library/Frameworks/Python3.framework/Versions/3.7/bin/2to3
    lrwxr-xr-x    1 root  wheel    68B Oct 28 23:03 2to3-3.7@ -> ../../Library/Frameworks/Python3.framework/Versions/3.7/bin/2to3-3.7
    -rwxr-xr-x    1 root  wheel   116K Sep  5 22:51 DeRez*
    -rwxr-xr-x    1 root  wheel    31K Sep  5 22:51 GetFileInfo*
    -rwxr-xr-x    1 root  wheel    33K Sep  5 22:51 ResMerger*
    -rwxr-xr-x    1 root  wheel   126K Sep  5 22:51 Rez*
    -rwxr-xr-x    1 root  wheel    31K Sep  5 22:51 SetFile*
    -rwxr-xr-x    1 root  wheel    32K Sep  5 22:51 SplitForks*
    -rwxr-xr-x    1 root  wheel    41K Sep  5 22:51 ar*
    -rwxr-xr-x    1 root  wheel    40K Sep  5 22:51 as*
    -rwxr-xr-x    1 root  wheel    27K Sep  5 22:51 asa*
    -rwxr-xr-x    1 root  wheel   216K Sep  5 22:51 bison*
    -rwxr-xr-x    1 root  wheel   159K Sep  5 22:51 bitcode_strip*
    lrwxr-xr-x    1 root  wheel     5B Oct 28 23:03 c++@ -> clang
    -rwxr-xr-x    1 root  admin    31K Sep  5 22:51 c89*
    -rwxr-xr-x    1 root  admin    31K Sep  5 22:51 c99*
    lrwxr-xr-x    1 root  wheel     5B Oct 28 23:03 cc@ -> clang
    -rwxr-xr-x    1 root  wheel    80M Sep  5 22:51 clang*
    lrwxr-xr-x    1 root  wheel     5B Oct 28 23:03 clang++@ -> clang
    -rwxr-xr-x    1 root  wheel   125K Sep  5 22:51 cmpdylib*
    -rwxr-xr-x    1 root  wheel   154K Sep  5 22:51 codesign_allocate*
    lrwxr-xr-x    1 root  wheel    17B Oct 28 23:03 codesign_allocate-p@ -> codesign_allocate
    -rwxr-xr-x    1 root  admin   3.3K Aug 16 06:55 cpp*
    -rwxr-xr-x    1 root  wheel    36K Sep  5 22:51 ctags*
    -rwxr-xr-x    1 root  wheel   150K Sep  5 22:51 ctf_insert*
    -rwxr-xr-x    1 root  wheel    30M Sep  5 22:51 dsymutil*
    lrwxr-xr-x    1 root  wheel    14B Oct 28 23:03 dwarfdump@ -> llvm-dwarfdump
    -rwxr-xr-x    1 root  wheel   477K Sep  5 22:51 dwarfdump-classic*
    -rwxr-xr-x    1 root  wheel   211K Sep  5 22:51 dyldinfo*
    -rwxr-xr-x    1 root  wheel   239B Sep  5 19:18 easy_install-3.7*
    -rwxr-xr-x    1 root  wheel   572K Sep  5 22:51 flex*
    -rwxr-xr-x    1 root  wheel   572K Sep  5 22:51 flex++*
    lrwxr-xr-x    1 root  wheel     3B Oct 28 23:03 g++@ -> gcc
    -rwxr-xr-x    1 root  wheel   101K Aug 16 07:31 gatherheaderdoc*
    -rwxr-xr-x    1 root  admin    27K Sep  5 22:51 gcc*
    lrwxr-xr-x    1 root  wheel     8B Oct 28 23:03 gcov@ -> llvm-cov
    -rwxr-xr-x    1 root  wheel   2.4M Sep  5 22:51 git*
    lrwxr-xr-x    1 root  wheel     3B Oct 28 23:03 git-receive-pack@ -> git
    -rwxr-xr-x    1 root  wheel   1.4M Sep  5 22:51 git-shell*
    lrwxr-xr-x    1 root  wheel     3B Oct 28 23:03 git-upload-archive@ -> git
    lrwxr-xr-x    1 root  wheel     3B Oct 28 23:03 git-upload-pack@ -> git
    -rwxr-xr-x    1 root  wheel   148K Sep  5 22:51 gm4*
    -rwxr-xr-x    1 root  wheel   166K Sep  5 22:51 gnumake*
    -rwxr-xr-x    1 root  wheel    98K Sep  5 22:51 gperf*
    -rwxr-xr-x    1 root  wheel    33K Sep  5 22:51 hdxml2manxml*
    -rwxr-xr-x    1 root  wheel   158K Aug 16 07:31 headerdoc2html*
    -rwxr-xr-x    1 root  wheel    73K Sep  5 22:51 indent*
    -rwxr-xr-x    1 root  wheel   142K Sep  5 22:51 install_name_tool*
    -rwxr-xr-x    1 root  wheel   2.5M Sep  5 22:51 ld*
    -rwxr-xr-x    1 root  wheel   230B Aug 16 07:13 lex*
    -rwxr-xr-x    1 root  wheel   163K Sep  5 22:51 libtool*
    -rwxr-xr-x    1 root  wheel    73K Sep  5 22:51 lipo*
    -rwxr-xr-x    1 root  wheel   332K Sep  5 22:51 lldb*
    -rwxr-xr-x    1 root  wheel   3.6M Sep  5 22:51 llvm-cov*
    -rwxr-xr-x    1 root  wheel   7.9M Sep  5 22:51 llvm-dwarfdump*
    -rwxr-xr-x    1 root  wheel   9.8M Sep  5 22:51 llvm-nm*
    -rwxr-xr-x    1 root  wheel    11M Sep  5 22:51 llvm-objdump*
    -rwxr-xr-x    1 root  wheel    40K Sep  5 22:51 llvm-otool*
    -rwxr-xr-x    1 root  wheel   1.6M Sep  5 22:51 llvm-profdata*
    -rwxr-xr-x    1 root  wheel   2.9M Sep  5 22:51 llvm-size*
    -rwxr-xr-x    1 root  wheel   3.5K Aug 16 07:19 lorder*
    -rwxr-xr-x    1 root  wheel   148K Sep  5 22:51 m4*
    -rwxr-xr-x    1 root  wheel   166K Sep  5 22:51 make*
    -rwxr-xr-x    1 root  wheel   7.7K Aug 16 07:16 mig*
    lrwxr-xr-x    1 root  wheel     7B Oct 28 23:03 nm@ -> llvm-nm
    -rwxr-xr-x    1 root  wheel   142K Sep  5 22:51 nm-classic*
    -rwxr-xr-x    1 root  wheel   171K Sep  5 22:51 nmedit*
    lrwxr-xr-x    1 root  wheel    12B Oct 28 23:03 objdump@ -> llvm-objdump
    lrwxr-xr-x    1 root  wheel    10B Oct 28 23:03 otool@ -> llvm-otool
    -rwxr-xr-x    1 root  wheel   644K Sep  5 22:51 otool-classic*
    -rwxr-xr-x    1 root  wheel   138K Sep  5 22:51 pagestuff*
    -rwxr-xr-x    1 root  wheel   221B Sep  5 19:18 pip3*
    -rwxr-xr-x    1 root  wheel   221B Sep  5 19:18 pip3.7*
    -rwxr-xr-x    1 root  wheel    32K Sep  5 22:51 projectInfo*
    lrwxr-xr-x    1 root  wheel    66B Oct 28 23:03 pydoc3@ -> ../../Library/Frameworks/Python3.framework/Versions/3.7/bin/pydoc3
    lrwxr-xr-x    1 root  wheel    68B Oct 28 23:03 pydoc3.7@ -> ../../Library/Frameworks/Python3.framework/Versions/3.7/bin/pydoc3.7
    lrwxr-xr-x    1 root  wheel    67B Oct 28 23:03 python3@ -> ../../Library/Frameworks/Python3.framework/Versions/3.7/bin/python3
    lrwxr-xr-x    1 root  wheel    74B Oct 28 23:03 python3-config@ -> ../../Library/Frameworks/Python3.framework/Versions/3.7/bin/python3-config
    lrwxr-xr-x    1 root  wheel    69B Oct 28 23:03 python3.7@ -> ../../Library/Frameworks/Python3.framework/Versions/3.7/bin/python3.7
    lrwxr-xr-x    1 root  wheel    76B Oct 28 23:03 python3.7-config@ -> ../../Library/Frameworks/Python3.framework/Versions/3.7/bin/python3.7-config
    lrwxr-xr-x    1 root  wheel    70B Oct 28 23:03 python3.7m@ -> ../../Library/Frameworks/Python3.framework/Versions/3.7/bin/python3.7m
    lrwxr-xr-x    1 root  wheel    77B Oct 28 23:03 python3.7m-config@ -> ../../Library/Frameworks/Python3.framework/Versions/3.7/bin/python3.7m-config
    lrwxr-xr-x    1 root  wheel    66B Oct 28 23:03 pyvenv@ -> ../../Library/Frameworks/Python3.framework/Versions/3.7/bin/pyvenv
    lrwxr-xr-x    1 root  wheel    70B Oct 28 23:03 pyvenv-3.7@ -> ../../Library/Frameworks/Python3.framework/Versions/3.7/bin/pyvenv-3.7
    lrwxr-xr-x    1 root  wheel     7B Oct 28 23:03 ranlib@ -> libtool
    -rwxr-xr-x    1 root  wheel    70K Sep  5 22:51 resolveLinks*
    -rwxr-xr-x    1 root  wheel    85K Sep  5 22:51 rpcgen*
    -rwxr-xr-x    1 root  wheel    56K Sep  5 22:51 segedit*
    lrwxr-xr-x    1 root  wheel    12B Oct 28 23:03 size@ -> size-classic
    -rwxr-xr-x    1 root  wheel   125K Sep  5 22:51 size-classic*
    -rwxr-xr-x    1 root  admin   138K Sep  5 22:51 stapler*
    -rwxr-xr-x    1 root  wheel   126K Sep  5 22:51 strings*
    -rwxr-xr-x    1 root  wheel   179K Sep  5 22:51 strip*
    -rwxr-xr-x    1 root  wheel   330K Sep  5 22:51 svn*
    -rwxr-xr-x    1 root  wheel   118K Sep  5 22:51 svnadmin*
    -rwxr-xr-x    1 root  wheel   105K Sep  5 22:51 svnbench*
    -rwxr-xr-x    1 root  wheel    64K Sep  5 22:51 svndumpfilter*
    -rwxr-xr-x    1 root  wheel    71K Sep  5 22:51 svnfsfs*
    -rwxr-xr-x    1 root  wheel    98K Sep  5 22:51 svnlook*
    -rwxr-xr-x    1 root  wheel    70K Sep  5 22:51 svnmucc*
    -rwxr-xr-x    1 root  wheel    89K Sep  5 22:51 svnrdump*
    -rwxr-xr-x    1 root  wheel   122K Sep  5 22:51 svnserve*
    -rwxr-xr-x    1 root  wheel    90K Sep  5 22:51 svnsync*
    -rwxr-xr-x    1 root  wheel    44K Sep  5 22:51 svnversion*
    -rwxr-xr-x    1 root  wheel    90M Sep  5 22:51 swift*
    lrwxr-xr-x    1 root  wheel     5B Oct 28 23:03 swift-autolink-extract@ -> swift
    -rwxr-xr-x    1 root  admin   6.1M Sep  5 22:51 swift-build*
    -rwxr-xr-x    1 root  admin   734K Sep  5 22:51 swift-build-tool*
    -rwxr-xr-x    1 root  wheel   687K Sep  5 22:51 swift-demangle*
    lrwxr-xr-x    1 root  wheel     5B Oct 28 23:03 swift-format@ -> swift
    -rwxr-xr-x    1 root  admin   6.1M Sep  5 22:51 swift-package*
    -rwxr-xr-x    1 root  admin   6.1M Sep  5 22:51 swift-run*
    -rwxr-xr-x    1 root  wheel    61K Sep  5 22:51 swift-stdlib-tool*
    -rwxr-xr-x    1 root  admin   6.1M Sep  5 22:51 swift-test*
    lrwxr-xr-x    1 root  wheel     5B Oct 28 23:03 swiftc@ -> swift
    -rwxr-xr-x    1 root  wheel    12M Sep  5 22:51 tapi*
    -rwxr-xr-x    1 root  wheel    41K Sep  5 22:51 unifdef*
    -rwxr-xr-x    1 root  wheel   2.9K Aug 16 07:19 unifdefall*
    -rwxr-xr-x    1 root  wheel    63K Sep  5 22:51 unwinddump*
    -rwxr-xr-x    1 root  wheel    49K Sep  5 22:51 vtool*
    -rwxr-xr-x    1 root  wheel    45K Sep  5 22:51 xml2man*
    -rwxr-xr-x    1 root  wheel   135B Aug 16 07:22 yacc*
    

    It is apparent that the files are physically located at that folder location and the installer installed missing components. The fact that MacOS's upgrade process uninstalls my development environment is unfriendly and Apple should be reprimanded.